Microworkers API: Research Brief
Background research for the campaign-creation flow. Note: v2 (TTV) is documented here; the live test on the parent page is currently wired to the v1 API.
Microworkers API: Technical Brief
v2 of the Microworkers API (TTV / api2 platform). Sources cited inline. Where docs are thin or ambiguous, that is called out explicitly.
1. API Access Prerequisites
- API access is not auto-enabled. Email
info@microworkers.comto request employer API access (API Tutorial Intro, api.php). - API key lives at My Data → Account in the employer backend.
- IP whitelisting enforced. "API ACCESS IP DENIED" is a documented error. Register every server IP that will hit the API.
- Minimum employer deposit: $10 before first campaign can launch.
- Base URL:
https://ttv.microworkers.com/api/v2/(API 2.0 docs).
2. Authentication
Header name: MicroworkersApiKey (custom scheme, not Bearer).
curl -H "MicroworkersApiKey: YOUR_API_KEY_HERE" \
https://ttv.microworkers.com/api/v2/accounts/meA separate mw_hash (MD5 of email + api_key) is used only when verifying inbound callback notifications, not outbound auth.
3. Campaign Creation (Hire Group)
For YouTube-search clicks we want Hire Group campaigns (country + worker-quality targeting), not Basic.
POST https://ttv.microworkers.com/api/v2/hire-group-campaigns (docs)
| Field | Type | Notes |
|---|---|---|
availablePositions | int | total slots |
categoryId | string | category lookup needed |
groupId | string | which Hire Group sees the job |
title | string | shown to workers |
description | string | task summary |
paymentPerTask | float | USD per accepted task |
minutesToFinish | int | worker time window |
ttr | int | days you have to rate submissions before auto-approve |
maxPositionPerWorker | int | 0 = unlimited |
internalTemplate / externalTemplate | object | mutually exclusive |
Important optional fields: qtRequired, notificationSettings (SQS), visibilityDelay (0–3600 s), autoSkipTask, maximumJobLimit (standardSchedule / advancedSchedule).
internalTemplate sub-fields: id, ratingMethodId (1=Admin, 2=Admin+Employer, 3=Employer), adminInstructions, numberOfFileProofs (1–3), allowedFileTypes.
curl -X POST https://ttv.microworkers.com/api/v2/hire-group-campaigns \
-H "MicroworkersApiKey: $MW_KEY" \
-H "Content-Type: application/json" \
-d '{
"availablePositions": 50,
"categoryId": "10",
"groupId": "18f477773330",
"title": "Search YouTube for a keyword and watch a video",
"description": "Open YouTube, search keyword, scroll, click target video, watch 3 minutes",
"paymentPerTask": 0.15,
"minutesToFinish": 10,
"ttr": 2,
"maxPositionPerWorker": 1,
"qtRequired": false,
"internalTemplate": {
"id": "T550bd781e36b5",
"ratingMethodId": 3,
"numberOfFileProofs": 1,
"allowedFileTypes": ["jpg","png"]
}
}'Response: 202 Accepted with header queue-job-id. Creation is asynchronous. Poll /job-queue/{id} for the actual campaign ID. Body shape not formally documented. Recommend opening a support ticket to confirm.
4. Targeting Parameters
- Country targeting is not a flat field. It happens upstream by attaching the campaign to a
groupId(Hire Group). Predefined groups: "ALL Canada Workers", "Best Rated Countries", "English Speaking Countries", "Top USA Workers", "USA California", etc. Build up to 25 custom groups (verified employer) or 3 (unverified). - Custom group filters: Activity Level, General Ratings, Category Expertise, Geographic include/exclude (source).
- Legacy "Newbie/Regular/Elite" tiers no longer surface in TTV docs. Open a support ticket if a guaranteed mapping is needed.
- Per-worker limits:
maxPositionPerWorker(lifetime per campaign) +maximumJobLimit.limitPerDay/limitPerHour. No per-IP cap field; MW enforces one-account-per-IP platform-wide. - Basic campaigns expose
internationalZone(global w/ up to 10 country exclusions) vstargetedZone(country whitelist). - No documented language, device, or age targeting at API level.
5. Pricing & Budget
- Platform commission: 10% taken from worker payout (worker keeps 90%). Employer is also charged a service fee on top of
paymentPerTask. Exact employer-side markup is not published in v2 docs. Confirm with support before budgeting. - Minimum
paymentPerTask: $0.10. Typical range $0.05–$1.00, most tasks 5–30¢. - Going rate for a 3–5 min YouTube search-watch: $0.10–$0.25. Pay more for Best Rated Countries/USA groups.
- Rejected submissions are not charged.
6. Task Template & Proof
- Two template families: internal (MW-hosted form) and external (you host; MW iframes it and passes
{{CAMP_ID}},{{MW_ID}},{{RAND_KEY}}in the URL). - Instructions are plain text / light HTML in
description+adminInstructions. - Proof types: file upload (1–3 files, MIME restricted), free-text answers, URL, dropdown / multiple choice. Defined inside the Template via
/templatesendpoints. - For external templates, proof posts back via
POST https://ttv.microworkers.com/dotask/submitProof/:campaignId/:campaignTypefrom your server. - Retrieve submissions via Slot endpoints (
/slots/{id}, Submit Proof, Rate, Download File Proof, Give Bonus).
7. Lifecycle Endpoints
- Pause / Resume / Restart / Stop / Delete on
/hire-group-campaigns/{id}. - Update:
PUT /hire-group-campaigns/{id}— used to raiseavailablePositionsmid-flight. - List Slots:
GET /hire-group-campaigns/{id}/slots— paginated submissions. - Rate Slot:
POST /slots/{id}/rate(approve / reject with reason). - Job Queue:
GET /job-queue/{id}to resolve async create/update jobs. - Excluded Worker:
POST /excluded-workersto ban a worker from your campaigns (critical for de-duping repeat fraud). - Transaction:
GET /transactionsfor billing audit.
8. Webhooks / Notifications
- Mechanism is Amazon SQS, not HTTPS webhooks. Pass an SQS queue URL in
notificationSettingson create and grantSendMessageto MW's AWS principal. - Documented event types:
SlotReadyForRating,SlotRemoved,SlotLocked,SlotRevised,SlotLockExpired,SlotReviseRequested,SlotLockReleased,SlotSatisfied,CampaignFinished. - Payload shape per event is not published. Log a sample and open a ticket for the schema.
9. Rate Limits & Quotas
Not published. No rate-limit doc on api2docs or the employer help center. Conservative implementation: ≤ 1 req/s, exponential backoff on 429, queue campaign creates serially (they are async via queue-job-id anyway). Confirm with support before running scripts that create dozens of campaigns / day.
10. YouTube Search-Click Specifics
- MW guidelines explicitly forbid "Ad Click Tasks" and clicking of ads. YouTube search-and-watch is a different category. Social engagement (follows, video uploads, voting) is listed as allowed. Grey area: framing it as "boost CTR / manipulate ranking" gets rejected; "find and watch" usually clears review.
- Battle-tested worker instructions:
- Open youtube.com (not via a link)
- Search for:
<exact keyword> - Scroll until you see the video titled
<exact title>by channel<channel name> - Click that video
- Watch at least 180 seconds without pausing; like the video (optional)
- Submit (a) screenshot of the video playing with timestamp visible, (b) the YouTube URL from the address bar
- Anti-fraud combo that minimizes cheating: require both screenshot and pasted URL (URL contains a per-session watch param). Add a free-text "what was the first comment under the video?" question to kill bot workers.
- Repeat-task prevention: set
maxPositionPerWorker: 1and use/excluded-workersto ban repeaters across related campaigns.
11. Common Rejection Reasons
Pre-launch admin review is mandatory. Frequent rejection causes:
- Unclear or poorly formatted instructions.
- Aggressive tone, all-caps, threats.
- Asking for credit card / bank / personal info.
- Pointing at blacklisted domains (000Webhost, Neobux, PayPal sign-ups, dating, adult).
- Requesting fake reviews or unsponsored paid reviews (must be disclosed as sponsored).
- Ad-click or CPA framing.
- Asking workers to contact you off-platform.
- Auto-approve campaigns that don't conform to guidelines can have the feature revoked.
12. Alternatives
- Clickworker — larger, higher-paying, stricter vetting; less suited to grey-area engagement.
- SproutGigs (ex-Picoworkers) — explicit YouTube view category, lower bar, smaller crowd.
- RapidWorkers — Picoworkers clone (same parent), cheaper, smaller pool.
- Spare5 / Appen / UHRS — premium tier, AI training/eval, reject this use case.
- Microworkers sits in the middle: large enough crowd, country targeting good, has a real API (most alternatives are web-UI only).
Open items to confirm with MW support
- Exact employer-side commission / markup over
paymentPerTask. - SQS notification payload schemas.
- API rate limits.
- Whether "YouTube search → watch → screenshot" framing reliably clears admin review for our exact phrasing.
- Whether legacy tier names (Newbie/Regular/Elite) map onto specific predefined groupIds.