DokumentasjonUtviklere
TaskerData-API
Opprett kampanjer, samle inn innsendinger fra arbeidere og vurder dem fra din egen kode, eller koble til en ekstern kvalifiseringstest. Hver forespørsel autentiseres med API-nøkkelen din.
Oversikt
Kampanje-API-et lar koden din gjøre det du gjør på oppdragsgiverdashbordet: opprette kampanjer, følge fremdriften, laste ned innsendinger med bevis og godkjenne eller avvise dem. Endepunktene for eksterne kvalifiseringer lar en test på ditt eget nettsted fortelle TaskerData om hver arbeider besto.
Alle forespørsler går til https://taskerdata.com over HTTPS. Send og motta JSON.
Kampanjer som opprettes via API-et, koster det samme og følger de samme reglene som på dashbordet. TaskerData gjennomgår dem før de blir aktive (pålitelige oppdragsgivere blir aktive med en gang), og penger reserveres og utbetales på samme måte.
Autentisering
Åpne oppdragsgiverdashbordet og gå til API. Der finner du to nøkler:
- API-nøkkel: for ekte forespørsler. Kampanje-API-et leser den fra Authorization-headeren. Kvalifiseringsendepunktet tar den som api_token.
- Test-API-nøkkel: bare for testendepunktet for kvalifiseringer, slik at du kan prøve den integrasjonen uten å berøre ekte arbeidere.
Når du genererer en ny nøkkel, erstattes den gamle med en gang, så oppdater backend-en din når du gjør det. Du kan generere opptil 3 nye nøkler per time.
Viktig: Hold API-nøkkelen din hemmelig. Bruk den bare på serveren din, aldri på en nettside eller i en app som besøkende kan åpne.
Send API-nøkkelen din med hver forespørsel til Kampanje-API-et:
Authorization: Bearer YOUR_API_KEYDu kan gjøre opptil 120 forespørsler til Kampanje-API-et per minutt. Headeren X-RateLimit-Remaining viser hvor mange som er igjen. Etter det får du status 429, og headeren Retry-After sier hvor mange sekunder du må vente.
Kampanje-API
Opprett kampanjer og håndter arbeidet de gir, fra din egen kode.
List kampanjer
GET/api/v1/campaigns
Kampanjene dine, nyeste først. total er hvor mange kampanjer som samsvarer, slik at du kan bla gjennom dem med limit og offset.
Spørringsparametere
| Parameter | Beskrivelse |
|---|---|
status | Bare kampanjer med denne statusen: pending, in review, active, paused, completed, terminated eller rejected |
limit | Hvor mange som skal returneres, 1 til 100 (standard 20) |
offset | Hvor mange som skal hoppes over, for sideinndeling (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
}Eksempel på feil
// status 401
{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}Hent en kampanje
GET/api/v1/campaigns/{id}
Én kampanje med innstillingene og hvor mange innsendinger som venter på vurdering, venter på revisjon, er godkjent og er avvist. Bruk den til å følge fremdriften i en kampanje.
I adressen
| Parameter | Beskrivelse |
|---|---|
id påkrevd | Kampanje-ID-en (id i kampanjelisten) |
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
}
}
}Eksempel på feil
// status 404
{
"success": false,
"error": {
"code": "not_found",
"message": "Campaign not found."
}
}Opprett en kampanje
POST/api/v1/campaigns
Oppretter en ny kampanje og reserverer hele kostnaden fra den tilgjengelige saldoen din, akkurat som dashbordet. Svaret inneholder kampanjens id, kostnad og status: pending mens TaskerData gjennomgår den, eller active med en gang hvis du er en pålitelig oppdragsgiver.
JSON-body
| Parameter | Beskrivelse |
|---|---|
title påkrevd | Kampanjetittel, opptil 100 tegn |
category påkrevd | En kategori fra GET /api/v1/options. Utelat den når du bruker en mal |
instructions påkrevd | Hva arbeiderne skal gjøre, opptil 5 000 tegn |
url | Lenken arbeiderne åpner. Påkrevd for kategorier der needs_url er true |
payment påkrevd | Betaling per oppgave i USD, minst 0.12 |
positions påkrevd | Hvor mange arbeidere, minst 10. Med en datafil for malen beregnes det ut fra radene |
time_to_complete påkrevd | Minutter en arbeider har på seg til å bli ferdig, 1 til 120 |
time_to_rate påkrevd | Dager du har til å vurdere hver innsending, 1 til 30. Etter det godkjennes den automatisk |
proof.text | Be om et tekstsvar: fortell arbeideren hva som skal skrives |
proof.images | Be om skjermbilder eller bilder: én beskrivelse per bilde |
proof.video | Be om en video eller et opptak: hva det skal vise |
targeting.region | international (standard), usa, west-europe, east-europe, latin-america eller asia-africa |
targeting.exclude_countries | Navn på land som skal utelates fra regionen |
targeting.min_success_rate | Minste suksessrate for arbeidere: 75 (standard), 80, 85, 90, 95 eller 100 |
targeting.type, targeting.group_id | Sett type til "group" og group_id til én av arbeidergruppene dine for å sende oppgaven bare til den gruppen |
qualification_id | Bare arbeidere som har bestått denne kvalifiseringstesten, kan ta oppgaven |
template | Bruk én av malene dine i stedet for instruksjoner: id, pluss data med columns og rows som fyller plassholderne, én rad per oppgave. answers_per_row (1 til 5) og rows_per_task (1 til 50) er valgfrie |
drip_feed | Slipp arbeidere i puljer: min_workers og max_workers (1 til 50) og interval_minutes (15, 30, 60, 120, 180, 360, 720 eller 1440) |
location | For Lokale feltoppgaver og Mystery shopping: lat, lng, radius_m (50 til 50 000) og en valgfri address |
Foreløpig kan kategorier som krever filer du laster opp (som Lydtranskribering eller Bildemerking), videooppgaver og eksempelbilder bare opprettes på dashbordet. Guiden Kostnader og gebyrer forklarer hvordan prisen beregnes.
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
}
}Eksempel på feil
// status 402
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Insufficient balance"
}
}Hent innsendinger
GET/api/v1/campaigns/{id}/submissions
Arbeidet arbeiderne sendte for én kampanje, eldste først, med bevis: tekstsvaret, lenker til bilder og video, malsvar (answers), dataraden de jobbet med og, for feltoppgaver, posisjonen deres.
I adressen
| Parameter | Beskrivelse |
|---|---|
id påkrevd | Kampanje-ID-en (id i kampanjelisten) |
Spørringsparametere
| Parameter | Beskrivelse |
|---|---|
status | to_review (pending og resubmitted), pending, resubmitted, revision_requested, approved eller rejected |
since | Bare innsendinger sendt på eller etter dette tidspunktet, for eksempel 2026-10-01T00:00:00Z |
after_id | For sideinndeling: bare innsendinger med høyere id. Bruk next_after_id fra forrige side |
limit | Hvor mange som skal returneres, 1 til 100 (standard 50) |
For å samle inn nytt arbeid jevnlig tar du vare på den siste id-en du mottok, og sender den som after_id neste gang. raw inneholder alt arbeideren sendte, i tilfelle du trenger noe som ikke er oppført.
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
}Eksempel på feil
// status 400
{
"success": false,
"error": {
"code": "invalid_status",
"message": "status must be one of: to_review, pending, resubmitted, revision_requested, approved, rejected."
}
}Vurder en innsending
POST/api/v1/submissions/{id}/review
Godkjenn, avvis eller be om en revisjon, akkurat som knappene på dashbordet. Godkjenning betaler arbeideren fra de reserverte pengene. Avvisning gir betalingen og gebyret tilbake til saldoen din og frigjør plassen for en annen arbeider.
I adressen
| Parameter | Beskrivelse |
|---|---|
id påkrevd | Innsendings-ID-en |
JSON-body
| Parameter | Beskrivelse |
|---|---|
action påkrevd | approve, reject eller revision |
reason | Med reject: begrunnelsen arbeideren ser |
note | Med revision (påkrevd): hva arbeideren skal rette |
Du kan bare vurdere en innsending mens den venter på vurdering (pending eller resubmitted). Revisjoner er begrenset av kampanjens revisjonsgrense; etter det kan du bare godkjenne eller avvise.
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
}
}Eksempel på feil
// status 409
{
"success": false,
"error": {
"code": "already_reviewed",
"message": "Submission already reviewed"
}
}Sjekk saldoen
GET/api/v1/balance
available er det du kan bruke på nye kampanjer, reserved holdes av for aktive kampanjer, og spent er det du har betalt arbeidere så langt.
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
}
}Alternativer og ID-er
GET/api/v1/options
Viser kategoriene du kan bruke via API-et (needs_url og needs_location viser hvilke som trenger en lenke eller en posisjon), de tillatte verdiene for målretting og gradvis utrulling, og ID-ene til malene, arbeidergruppene og kvalifiseringstestene dine.
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"
}
]
}Feil
Kampanje-API-et bruker HTTP-statuskoder. Når noe går galt, er success false, og error har en code du kan sjekke i koden din og en message du kan vise eller logge. Kampanjekontrollene bruker de samme meldingene som dashbordet.
| Status | error.code | Hva det betyr |
|---|---|---|
| 400 | invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_required | Noe i forespørselen mangler eller er ikke tillatt. message sier hva. |
| 401 | missing_api_key, invalid_api_key | Ingen API-nøkkel, eller nøkkelen er feil eller er erstattet av en nyere. |
| 402 | insufficient_balance | Den tilgjengelige saldoen din dekker ikke kampanjen. Fyll på saldoen og prøv igjen. |
| 403 | test_key_not_allowed, account_suspended | Bruk den ekte API-nøkkelen din. En suspendert konto kan ikke bruke API-et. |
| 404 | not_found | Det finnes ingen kampanje eller innsending med den ID-en på kontoen din. |
| 409 | already_reviewed, review_refused | Innsendingen er allerede vurdert, eller vurderingen er ikke mulig akkurat nå, for eksempel fordi revisjonsgrensen er nådd. |
| 429 | rate_limited | Mer enn 120 forespørsler i løpet av et minutt. Vent det antallet sekunder som står i Retry-After. |
| 500 | internal_error | Et problem hos oss. Prøv igjen, og kontakt kundestøtte hvis det fortsetter. |
Eksterne kvalifiseringstester
For kvalifiseringstester som kjører på ditt eget nettsted.
Rapporter et testresultat Live
GET/api/worker/external_qualification/data
For kvalifiseringstester som er merket som eksterne. Arbeideren åpner testen din fra kvalifiseringen og skriver inn arbeidertokenet sitt på nettstedet ditt. Når vedkommende er ferdig, kaller du dette endepunktet med approve eller reject.
| Parameter | Beskrivelse |
|---|---|
qualification_id påkrevd | ID-en til kvalifiseringstesten din |
worker_token påkrevd | Arbeidertokenet arbeideren skrev inn på nettstedet ditt |
api_token påkrevd | API-nøkkelen din (testnøkkelen for testendepunktet) |
decision påkrevd | approve eller reject |
Hvis testen betaler en bonus for å bestå og oppdragsgiversaldoen din ikke dekker den, lagres innsendingen i stedet som ventende, slik at du kan fylle på saldoen og godkjenne den på dashbordet.
En arbeider kan vurderes én gang per test. Testen må være aktiv og merket som ekstern, og API-nøkkelen må tilhøre eieren av testen.
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
}Eksempel på feil
{
"success": false,
"error": "This worker has already been evaluated for this qualification"
}Test oppsettet ditt
POST/api/worker/external_qualification/data_test
Send de samme feltene som JSON til testendepunktet, med test-API-nøkkelen din. Ingenting lagres, og ingen arbeider påvirkes: det sjekker bare forespørselen din.
| Parameter | Beskrivelse |
|---|---|
qualification_id påkrevd | ID-en til kvalifiseringstesten din |
worker_token påkrevd | Arbeidertokenet arbeideren skrev inn på nettstedet ditt |
api_token påkrevd | API-nøkkelen din (testnøkkelen for testendepunktet) |
decision påkrevd | approve eller reject |
En feil testnøkkel returnerer status 401; manglende felt eller feil decision returnerer 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
}Eksempel på feil
// status 401
{
"statusCode": 401,
"statusMessage": "Invalid API test key"
}Feil i testresultater
Resultatendepunktet svarer alltid med status 200. Sjekk success: når den er false, sier error hvorfor:
| error | Hva det betyr |
|---|---|
Missing required parameters: qualification_id, worker_token, api_token, decision | Én av de fire parameterne mangler. |
Decision must be 'approve' or 'reject' | decision har en annen verdi. |
Invalid API token | API-nøkkelen er feil eller har blitt erstattet av en nyere. |
Worker token not found for this qualification | Tokenet tilhører ikke denne testen. Be arbeideren sjekke det. |
API token does not belong to the qualification owner | Bruk nøkkelen til kontoen som opprettet testen. |
This qualification is not configured for external submissions | Testen er ikke merket som ekstern. |
This qualification is no longer active | Testen er satt på pause eller ferdig. |
This worker has already been evaluated for this qualification | Hver arbeider får ett resultat per test. |
Worker account is suspended | Arbeideren kan ikke ta tester akkurat nå. |
No remaining positions for this qualification | Alle plassene i testen er tatt. |