The A2Z Requester API speaks the Mechanical Turk 2017-01-17 protocol: the same 38 working operations, the same JSON, the same AWS request signing. Point your existing client at A2Z, keep your code, and your HITs are worked by partner-verified people.
Create an API key in the requester console, then set the endpoint. Requests are signed with AWS Signature Version 4, so boto3, the AWS CLI and the AWS SDKs work without changes. Use any region, the service name is mturk-requester.
import boto3
mturk = boto3.client(
"mturk",
region_name="us-east-1",
endpoint_url="https://platform.a2zboard.com/mturk",
aws_access_key_id="A2ZK...",
aws_secret_access_key="...",
)
hit = mturk.create_hit(
Title="Verify an invoice total",
Description="Compare the draft with the image",
Reward="0.12",
MaxAssignments=2,
LifetimeInSeconds=86400,
AssignmentDurationInSeconds=600,
Question=open("question.xml").read(),
)["HIT"]
aws mturk get-account-balance \
--endpoint-url https://platform.a2zboard.com/mturk \
--region us-east-1
curl https://platform.a2zboard.com/mturk \
--aws-sigv4 "aws:amz:us-east-1:mturk-requester" \
--user "$A2Z_KEY_ID:$A2Z_SECRET" \
-H "Content-Type: application/x-amz-json-1.1" \
-H "X-Amz-Target: MTurkRequesterServiceV20170117.GetAccountBalance" \
-d '{}'
Sandbox keys are free and always show a balance of 10,000.00. Nobody is paid in the sandbox, and workers see sandbox HITs only when they switch on sandbox mode.
| Endpoint | POST https://platform.a2zboard.com/mturk |
| Headers | Content-Type: application/x-amz-json-1.1 and X-Amz-Target: MTurkRequesterServiceV20170117.<Operation> |
| Authentication | AWS Signature Version 4 with an A2Z access key. Requests older than 15 minutes are refused. |
| Timestamps | Epoch seconds as JSON numbers, like the original API. |
| Money | US dollar strings such as "0.10". Rewards from $0.01. |
| Errors | HTTP 400 with __type RequestError, or 500 with ServiceFault. Both carry Message and TurkErrorCode, for example AWS.MechanicalTurk.HitAlreadyExists. |
| Paging | NextToken and MaxResults on every list operation, up to 100 per page. |
| Idempotency | UniqueRequestToken on CreateHIT, CreateHITWithHITType, CreateAdditionalAssignmentsForHIT and SendBonus, honoured for 24 hours. |
Every operation of the 2017-01-17 API is implemented except the deprecated GetFileUploadURL.
| Area | Operations |
|---|---|
| HIT types and HITs | CreateHITType CreateHIT CreateHITWithHITType GetHIT ListHITs ListReviewableHITs ListHITsForQualificationType UpdateExpirationForHIT UpdateHITReviewStatus UpdateHITTypeOfHIT CreateAdditionalAssignmentsForHIT DeleteHIT |
| Assignments and review | ListAssignmentsForHIT GetAssignment ApproveAssignment (with OverrideRejection) RejectAssignment ListReviewPolicyResultsForHIT |
| Bonuses and messages | SendBonus ListBonusPayments NotifyWorkers |
| Workers | CreateWorkerBlock DeleteWorkerBlock ListWorkerBlocks |
| Qualifications | CreateQualificationType UpdateQualificationType DeleteQualificationType GetQualificationType ListQualificationTypes ListQualificationRequests AcceptQualificationRequest RejectQualificationRequest AssociateQualificationWithWorker DisassociateQualificationFromWorker GetQualificationScore ListWorkersWithQualificationType |
| Notifications | UpdateNotificationSettings SendTestEventNotification |
| Account | GetAccountBalance |
HITStatus values, assignment states, qualification comparators (LessThan through NotIn), ActionsGuarded, review policies (ScoreMyKnownAnswers and SimplePlurality) and answer keys behave as documented for Mechanical Turk.
HITs are shown to workers in a sandboxed frame and submit their answers to A2Z. The answer you read back is the standard QuestionFormAnswers XML.
The built-in qualification types are computed from each worker's record: Worker_Locale, Worker_NumberHITsApproved, Worker_PercentAssignmentsApproved, Worker_Adult and Masters. Custom types support requests, manual grants, automatic grants and graded tests with an AnswerKey.
Regions you pick in the console, such as the EU, become a Worker_Locale requirement on your HIT type, so work only reaches workers registered in those countries.
Attach a notification to a HIT type with UpdateNotificationSettings. Events are batched, delivered at least once, retried with backoff and carry the standard document (Version 2014-08-15, EventDocId, Events).
Event types: AssignmentAccepted, AssignmentAbandoned, AssignmentReturned, AssignmentSubmitted, AssignmentApproved, AssignmentRejected, HITCreated, HITExtended, HITReviewable, HITExpired, HITDisposed and Ping.
Creating a HIT holds the reward plus the platform fee for every assignment. Approval spends the hold, rejection releases it, and unused assignments come back when the HIT expires. The fee is a single percentage of the reward, rounded to the cent, with a one cent minimum. There is no surcharge for large assignment counts.
Rewards are paid to workers by their partner organisation. A2Z settles with the partner, so you never handle payments to individuals.
| Topic | A2Z |
|---|---|
| Workers | Every worker is registered through a partner organisation that verifies them, manages them and pays them. Worker IDs look the same and stay stable. |
| Endpoints | One endpoint. Your key decides whether you are in the sandbox or live. |
| Masters and premium qualifications | Masters is granted by A2Z. The paid demographic premium qualifications are not offered. |
| Crowd HTML Elements | Not bundled. HTML that includes its own copy of a library keeps working. |
| File uploads | FileUploadAnswer and GetFileUploadURL are not supported. Use an ExternalQuestion for uploads. |
| SQS and SNS | Messages are sent from A2Z's AWS principal to your queue or topic once your resource policy allows it. |
| Retention | HITs and assignments are disposed 120 days after creation, as on Mechanical Turk. |
Mechanical Turk created this standard: the HIT, the assignment, the qualification and the API around them. Twenty years of research on crowdsourcing and human-in-the-loop AI were built on it. A2Z implements a compatible API so that existing code and templates keep working.
A2Z is not affiliated with or endorsed by Amazon. Amazon Mechanical Turk and MTurk are trademarks of Amazon.com, Inc. or its affiliates.