DokumentationUtvecklare
TaskerDatas API
Lägg upp kampanjer, samla in arbetarnas inlämningar och granska dem från din egen kod, eller koppla ett externt kvalifikationstest. Varje förfrågan autentiseras med din API-nyckel.
Översikt
Med kampanj-API:t kan din kod göra det du gör i uppdragsgivarpanelen: skapa kampanjer, följa deras framsteg, ladda ner inlämningar med bevis och godkänna eller avvisa dem. Endpointerna för externa kvalifikationstest låter ett test på din egen webbplats meddela TaskerData om varje arbetare klarade sig.
Alla förfrågningar går till https://taskerdata.com via HTTPS. Skicka och ta emot JSON.
Kampanjer som skapas via API:t kostar lika mycket och följer samma regler som i panelen. TaskerData granskar dem innan de publiceras (betrodda uppdragsgivare publiceras direkt), och pengar reserveras och betalas ut på samma sätt.
Autentisering
Öppna uppdragsgivarpanelen och gå till API. Där hittar du två nycklar:
- API-nyckel: för riktiga förfrågningar. Kampanj-API:t läser den från Authorization-headern. Endpointen för kvalifikationstest tar den som api_token.
- Test-API-nyckel: bara för testendpointen för kvalifikationstest, så att du kan prova integrationen utan att påverka riktiga arbetare.
När du genererar en ny nyckel ersätts den gamla direkt, så uppdatera din backend när du gör det. Du kan generera upp till 3 nya nycklar per timme.
Viktigt: Håll din API-nyckel hemlig. Använd den bara på din server, aldrig på en webbsida eller i en app som besökare kan öppna.
Skicka din API-nyckel med varje förfrågan till kampanj-API:t:
Authorization: Bearer YOUR_API_KEYDu kan göra upp till 120 förfrågningar till kampanj-API:t per minut. Headern X-RateLimit-Remaining visar hur många som återstår. Därefter får du status 429, och headern Retry-After anger hur många sekunder du ska vänta.
Kampanj-API
Skapa kampanjer och hantera arbetet de ger, från din egen kod.
Lista kampanjer
GET/api/v1/campaigns
Dina kampanjer, nyaste först. total är hur många kampanjer som matchar, så att du kan bläddra igenom dem med limit och offset.
Frågeparametrar
| Parameter | Beskrivning |
|---|---|
status | Bara kampanjer med den här statusen: pending, in review, active, paused, completed, terminated eller rejected |
limit | Hur många som ska returneras, 1 till 100 (standard 20) |
offset | Hur många som ska hoppas över, för sidindelning (standard 0) |
curl "https://taskerdata.com/api/v1/campaigns?status=active&limit=20" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Svar · 200
{
"success": true,
"campaigns": [
{
"id": "Ab12…-Cd34…-Ef56…",
"title": "Test our sign-up page",
"status": "active",
"category": "Website Testing",
"type": "instructions",
"url": "https://example.com/signup",
"payment": 0.5,
"positions": 50,
"filled_positions": 12,
"time_to_complete": 10,
"time_to_rate": 3,
"cost": 34.06,
"proof": {
"text": "What went wrong?",
"images": [
"Screenshot after signing up"
],
"video": null
},
"qualification_id": null,
"created_at": "2026-10-16T09:30:00.000Z"
}
],
"total": 1,
"limit": 20,
"offset": 0
}Exempel på fel
// status 401
{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}Hämta en kampanj
GET/api/v1/campaigns/{id}
En kampanj med dess inställningar och hur många inlämningar som väntar på granskning, väntar på revidering, är godkända och är avvisade. Använd den för att följa en kampanjs framsteg.
I adressen
| Parameter | Beskrivning |
|---|---|
id obligatorisk | Kampanjens ID (id i kampanjlistan) |
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Svar · 200
{
"success": true,
"campaign": {
"id": "Ab12…-Cd34…-Ef56…",
"title": "Test our sign-up page",
"status": "active",
"category": "Website Testing",
"type": "instructions",
"url": "https://example.com/signup",
"payment": 0.5,
"positions": 50,
"filled_positions": 12,
"time_to_complete": 10,
"time_to_rate": 3,
"cost": 34.06,
"proof": {
"text": "What went wrong?",
"images": [
"Screenshot after signing up"
],
"video": null
},
"qualification_id": null,
"created_at": "2026-10-16T09:30:00.000Z",
"submissions": {
"total": 14,
"to_review": 3,
"revision_requested": 1,
"approved": 9,
"rejected": 1
}
}
}Exempel på fel
// status 404
{
"success": false,
"error": {
"code": "not_found",
"message": "Campaign not found."
}
}Skapa en kampanj
POST/api/v1/campaigns
Lägger upp en ny kampanj och reserverar hela kostnaden från ditt tillgängliga saldo, precis som i panelen. Svaret innehåller kampanjens id, dess kostnad och dess status: pending medan TaskerData granskar den, eller active direkt om du är en betrodd uppdragsgivare.
JSON-body
| Parameter | Beskrivning |
|---|---|
title obligatorisk | Kampanjens titel, upp till 100 tecken |
category obligatorisk | En kategori från GET /api/v1/options. Utelämna den när du använder en mall |
instructions obligatorisk | Vad arbetarna ska göra, upp till 5 000 tecken |
url | Länken som arbetarna öppnar. Krävs för kategorier där needs_url är true |
payment obligatorisk | Betalning per uppgift i USD, minst 0.12 |
positions obligatorisk | Hur många arbetare, minst 10. Med en datafil för mallen beräknas det utifrån raderna |
time_to_complete obligatorisk | Minuter som en arbetare har på sig att bli klar, 1 till 120 |
time_to_rate obligatorisk | Dagar du har på dig att granska varje inlämning, 1 till 30. Därefter godkänns den automatiskt |
proof.text | Be om ett textsvar: berätta för arbetaren vad hen ska skriva |
proof.images | Be om skärmbilder eller foton: en beskrivning per bild |
proof.video | Be om en video eller inspelning: vad den ska visa |
targeting.region | international (standard), usa, west-europe, east-europe, latin-america eller asia-africa |
targeting.exclude_countries | Namn på länder som ska uteslutas från regionen |
targeting.min_success_rate | Lägsta lyckandegrad för arbetare: 75 (standard), 80, 85, 90, 95 eller 100 |
targeting.type, targeting.group_id | Sätt type till "group" och group_id till en av dina arbetargrupper för att bara skicka uppgiften till den gruppen |
qualification_id | Bara arbetare som har klarat det här kvalifikationstestet kan ta uppgiften |
template | Använd en av dina mallar i stället för instruktioner: id, plus data med columns och rows som fyller dess platshållare, en rad per uppgift. answers_per_row (1 till 5) och rows_per_task (1 till 50) är valfria |
drip_feed | Släpp arbetare i omgångar: min_workers och max_workers (1 till 50) och interval_minutes (15, 30, 60, 120, 180, 360, 720 eller 1440) |
location | För Fältuppgifter och Mystery shopping: lat, lng, radius_m (50 till 50 000) och en valfri address |
För närvarande kan kategorier som kräver filer du laddar upp (som Ljudtranskribering eller Bildtaggning), videouppgifter och exempelbilder bara skapas i panelen. Guiden Kostnader och avgifter förklarar hur priset beräknas.
curl -X POST "https://taskerdata.com/api/v1/campaigns" \
-H "Authorization: Bearer $TASKERDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Test our sign-up page",
"category": "Website Testing",
"url": "https://example.com/signup",
"instructions": "Open the page, create an account and tell us anything that went wrong.",
"payment": 0.5,
"positions": 50,
"time_to_complete": 10,
"time_to_rate": 3,
"proof": {
"text": "What went wrong?",
"images": [
"Screenshot after signing up"
]
},
"targeting": {
"region": "international",
"min_success_rate": 90
}
}'Svar · 201
{
"success": true,
"campaign": {
"id": "Ab12…-Cd34…-Ef56…",
"title": "Test our sign-up page",
"status": "pending",
"category": "Website Testing",
"type": "instructions",
"url": "https://example.com/signup",
"payment": 0.5,
"positions": 50,
"filled_positions": 0,
"time_to_complete": 10,
"time_to_rate": 3,
"cost": 34.06,
"proof": {
"text": "What went wrong?",
"images": [
"Screenshot after signing up"
],
"video": null
},
"qualification_id": null,
"created_at": "2026-10-16T09:30:00.000Z"
},
"balance": {
"available": 65.94,
"reserved": 34.06
}
}Exempel på fel
// status 402
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Insufficient balance"
}
}Hämta inlämningar
GET/api/v1/campaigns/{id}/submissions
Arbetet som arbetare skickat för en kampanj, äldsta först, med deras bevis: textsvaret, länkar till bilder och video, svar i mallen (answers), dataraden de arbetade med och, för fältuppgifter, deras plats.
I adressen
| Parameter | Beskrivning |
|---|---|
id obligatorisk | Kampanjens ID (id i kampanjlistan) |
Frågeparametrar
| Parameter | Beskrivning |
|---|---|
status | to_review (pending och resubmitted), pending, resubmitted, revision_requested, approved eller rejected |
since | Bara inlämningar som skickats vid eller efter den här tidpunkten, till exempel 2026-10-01T00:00:00Z |
after_id | För sidindelning: bara inlämningar med ett högre id. Använd next_after_id från föregående sida |
limit | Hur många som ska returneras, 1 till 100 (standard 50) |
För att regelbundet samla in nytt arbete sparar du det senaste id du fick och skickar det som after_id nästa gång. raw innehåller allt som arbetaren skickade, om du skulle behöva något som inte listas.
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID/submissions?status=to_review&after_id=0" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Svar · 200
{
"success": true,
"submissions": [
{
"id": 1842,
"campaign_id": "Ab12…-Cd34…-Ef56…",
"worker_id": "wK3…",
"status": "pending",
"started_at": "2026-10-16 10:02:11",
"submitted_at": "2026-10-16 10:09:45",
"revision_count": 0,
"revision_note": null,
"rejection_reason": null,
"payment": 0.5,
"proof": {
"text": "The confirm button did nothing on mobile.",
"image_urls": [
"https://storage.taskerdata.com/…/proof_0.png"
],
"video_url": null
},
"answers": null,
"data_row": null,
"data_row_number": null,
"items": null,
"location": null,
"raw": {
"textProof": "…"
}
}
],
"has_more": false,
"next_after_id": null
}Exempel på fel
// status 400
{
"success": false,
"error": {
"code": "invalid_status",
"message": "status must be one of: to_review, pending, resubmitted, revision_requested, approved, rejected."
}
}Granska en inlämning
POST/api/v1/submissions/{id}/review
Godkänn, avvisa eller begär revidering, precis som knapparna i panelen. Ett godkännande betalar arbetaren från de reserverade pengarna. En avvisning ger tillbaka betalningen och dess avgift till ditt saldo och frigör platsen åt en annan arbetare.
I adressen
| Parameter | Beskrivning |
|---|---|
id obligatorisk | Inlämningens ID |
JSON-body
| Parameter | Beskrivning |
|---|---|
action obligatorisk | approve, reject eller revision |
reason | Med reject: motiveringen som arbetaren ser |
note | Med revision (obligatorisk): vad arbetaren ska rätta |
Du kan bara granska en inlämning medan den väntar på granskning (pending eller resubmitted). Revideringar begränsas av kampanjens gräns för revideringar. Därefter kan du bara godkänna eller avvisa.
curl -X POST "https://taskerdata.com/api/v1/submissions/1842/review" \
-H "Authorization: Bearer $TASKERDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "revision",
"note": "Please add a screenshot of the error message."
}'Svar · 200
{
"success": true,
"submission": {
"id": 1842,
"status": "revision_requested"
},
"balance": {
"available": 65.94,
"reserved": 34.06
}
}Exempel på fel
// status 409
{
"success": false,
"error": {
"code": "already_reviewed",
"message": "Submission already reviewed"
}
}Kontrollera ditt saldo
GET/api/v1/balance
available är vad du kan spendera på nya kampanjer, reserved är reserverat för aktiva kampanjer och spent är vad du har betalat arbetare hittills.
curl "https://taskerdata.com/api/v1/balance" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Svar · 200
{
"success": true,
"balance": {
"available": 65.94,
"reserved": 34.06,
"spent": 212.4
}
}Alternativ och ID:n
GET/api/v1/options
Listar de kategorier du kan använda via API:t (needs_url och needs_location visar vilka som kräver en länk eller en plats), de tillåtna värdena för målgrupp och gradvis utsläpp, och ID:n för dina mallar, arbetargrupper och kvalifikationstest.
curl "https://taskerdata.com/api/v1/options" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Svar · 200
{
"success": true,
"categories": [
{
"name": "Website Testing",
"needs_url": true,
"needs_location": false
},
"…"
],
"regions": [
"international",
"usa",
"west-europe",
"east-europe",
"latin-america",
"asia-africa"
],
"min_success_rates": [
75,
80,
85,
90,
95,
100
],
"drip_feed_intervals": [
15,
30,
60,
120,
180,
360,
720,
1440
],
"templates": [
{
"id": 12,
"title": "Sentiment check"
}
],
"worker_groups": [
{
"id": 3,
"name": "Trusted testers",
"workers": 25
}
],
"qualifications": [
{
"id": "Qa1…",
"title": "English test",
"status": "active"
}
]
}Fel
Kampanj-API:t använder HTTP-statuskoder. När något går fel är success false och error har en code att kontrollera i din kod och ett message att visa eller logga. Kontrollerna av kampanjer använder samma meddelanden som panelen.
| Status | error.code | Vad det betyder |
|---|---|---|
| 400 | invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_required | Något i förfrågan saknas eller är inte tillåtet. message säger vad. |
| 401 | missing_api_key, invalid_api_key | Ingen API-nyckel, eller så är nyckeln fel eller har ersatts av en nyare. |
| 402 | insufficient_balance | Ditt tillgängliga saldo räcker inte till kampanjen. Sätt in pengar och försök igen. |
| 403 | test_key_not_allowed, account_suspended | Använd din riktiga API-nyckel. Ett avstängt konto kan inte använda API:t. |
| 404 | not_found | Det finns ingen kampanj eller inlämning med det ID:t på ditt konto. |
| 409 | already_reviewed, review_refused | Inlämningen har redan granskats, eller så går granskningen inte att göra just nu, till exempel för att gränsen för revideringar har nåtts. |
| 429 | rate_limited | Fler än 120 förfrågningar på en minut. Vänta det antal sekunder som anges i Retry-After. |
| 500 | internal_error | Ett problem hos oss. Försök igen, och kontakta supporten om det fortsätter att hända. |
Externa kvalifikationstest
För kvalifikationstest som körs på din egen webbplats.
Rapportera ett testresultat Aktiv
GET/api/worker/external_qualification/data
För kvalifikationstest som är markerade som externa. Arbetaren öppnar ditt test från kvalifikationstestet och anger sin arbetartoken på din webbplats. När hen är klar anropar du den här endpointen med approve eller reject.
| Parameter | Beskrivning |
|---|---|
qualification_id obligatorisk | ID:t för ditt kvalifikationstest |
worker_token obligatorisk | Den arbetartoken som arbetaren angav på din webbplats |
api_token obligatorisk | Din API-nyckel (testnyckeln för testendpointen) |
decision obligatorisk | approve eller reject |
Om testet betalar en bonus för godkänt och ditt uppdragsgivarsaldo inte räcker sparas inlämningen som väntande i stället, så att du kan fylla på och godkänna den i panelen.
En arbetare kan bedömas en gång per test. Testet måste vara aktivt och markerat som externt, och API-nyckeln måste tillhöra testets ägare.
curl -G "https://taskerdata.com/api/worker/external_qualification/data" \
--data-urlencode "qualification_id=QUAL_ID" \
--data-urlencode "worker_token=WORKER_TOKEN" \
--data-urlencode "api_token=YOUR_API_KEY" \
--data-urlencode "decision=approve"Svar · 200
{
"success": true
}Exempel på fel
{
"success": false,
"error": "This worker has already been evaluated for this qualification"
}Testa din konfiguration
POST/api/worker/external_qualification/data_test
Skicka samma fält som JSON till testendpointen, med din test-API-nyckel. Ingenting sparas och ingen arbetare påverkas: den kontrollerar bara din förfrågan.
| Parameter | Beskrivning |
|---|---|
qualification_id obligatorisk | ID:t för ditt kvalifikationstest |
worker_token obligatorisk | Den arbetartoken som arbetaren angav på din webbplats |
api_token obligatorisk | Din API-nyckel (testnyckeln för testendpointen) |
decision obligatorisk | approve eller reject |
En felaktig testnyckel returnerar status 401. Saknade fält eller ett felaktigt beslut returnerar status 400.
curl -X POST "https://taskerdata.com/api/worker/external_qualification/data_test" \
-H "Content-Type: application/json" \
-d '{
"qualification_id": "QUAL_ID",
"worker_token": "WORKER_TOKEN",
"api_token": "YOUR_TEST_API_KEY",
"decision": "approve"
}'Svar · 200
{
"success": true
}Exempel på fel
// status 401
{
"statusCode": 401,
"statusMessage": "Invalid API test key"
}Fel för testresultat
Resultatendpointen svarar alltid med status 200. Kontrollera success: när den är false anger error varför:
| error | Vad det betyder |
|---|---|
Missing required parameters: qualification_id, worker_token, api_token, decision | En av de fyra parametrarna saknas. |
Decision must be 'approve' or 'reject' | decision har ett annat värde. |
Invalid API token | API-nyckeln är fel eller har ersatts av en nyare. |
Worker token not found for this qualification | Token tillhör inte det här testet. Be arbetaren kontrollera den. |
API token does not belong to the qualification owner | Använd nyckeln för kontot som skapade testet. |
This qualification is not configured for external submissions | Testet är inte markerat som externt. |
This qualification is no longer active | Testet är pausat eller avslutat. |
This worker has already been evaluated for this qualification | Varje arbetare får ett resultat per test. |
Worker account is suspended | Arbetaren kan inte göra test just nu. |
No remaining positions for this qualification | Alla platser i testet är tagna. |