- Newest
- Most votes
- Most comments
To ensure each HIT in your batch is completed by a unique Worker on Amazon Mechanical Turk (MTurk), you can automate the restriction using a combination of a custom Qualification Type and batch-level controls. Here's a practical breakdown tailored for your case: ** Recommended Approach: Use "Worker-based Exclusion Qualification"**
-
Create a Custom Qualification Type a) In the MTurk requester console, go to Manage > Qualification Types and create a new qualification (e.g., SurveyCompleted). b) Set it as "Assignable by requester."
-
Assign the Qualification Automatically After Each HIT a) In your HIT completion logic (backend or survey end page), use the MTurk API to assign this qualification to the Worker ID.
-
Set Your HITs to Require the Worker NOT to Have the Qualification a) In each of your 180 HITs, add a qualification requirement: ** DoesNotExist for SurveyCompleted. This ensures that once a Worker completes any one HIT and is assigned the qualification, they will be automatically excluded from all future HITs.
-
Optional - Use MTurk "Batch Management" APIs a) If you’re launching all HITs via a script or tool, ensure the qualification requirement is applied consistently to all 180 HITs.
Why This Works for Your Case 360 HITs x 1 assignment per worker = 360 unique Workers needed This solution automatically prevents repeat participation, even if a Worker completes and submits fast. No need to pre-assign manually; the qualification updates in real time (or near real time) after each submission.
Alternatives (less reliable): HIT-level blocking via assignment review → too slow to prevent fast resubmits. Email-based deduplication in the survey tool (e.g., Qualtrics) → unreliable if Workers spoof input.
Known Limitation: There may be a short window between a Worker submitting and your script assigning the qualification. To mitigate: Add a waiting buffer between HIT batches. Use an intermediate page to show "Thank you, please wait while we finalize your submission…" while backend updates the qualification.
answered a year ago
In Amazon Mechanical Turk, you can ensure that each of your 360 HITs is completed by a unique worker by using the built-in functionality that prevents workers from accepting the same HIT more than once.
By default, a worker can only accept a HIT once and can only submit one assignment per HIT. This is a fundamental feature of Mechanical Turk that guarantees multiple workers must complete a task that has multiple assignments.
However, this doesn't prevent the same worker from accepting different HITs within your batch. For your specific case where you need 360 unique workers across all 180 HITs (with 2 assignments per HIT), you'll need to use qualification requirements.
The most effective approach would be to:
-
Create a custom qualification type before publishing your batch.
-
Set up your HITs with a qualification requirement using this qualification type with the "DoesNotExist" comparator. This will ensure only workers who don't have this qualification can accept your HITs.
-
Use the UniqueRequestToken parameter when creating your HITs to prevent duplicate HITs in case of network timeouts.
-
After a worker completes any HIT in your batch, automatically assign them your custom qualification. This can be done programmatically through the API.
This approach ensures that once a worker completes one of your HITs, they'll be disqualified from accepting any other HITs in your batch, thus guaranteeing 360 unique workers across all your assignments.
Sources
CreateHIT - Amazon Mechanical Turk
Create an Amazon Mechanical Turk project - Amazon Mechanical Turk
Getting started with the Amazon Mechanical Turk Requester UI - Amazon Mechanical Turk
QualificationRequirement - Amazon Mechanical Turk
answered a year ago
Relevant content
asked 6 years ago
- AWS OFFICIALUpdated 2 years ago

How do I do the following?
Is there a way to assign the qualification automatically upon completion of each hit? I don't see a way to do this while creating the HITs. All other steps make sense and seem doable. Can you provide any other details to do this step?
Thank you