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_KEY

Du 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

ParameterBeskrivelse
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

ParameterBeskrivelse
id påkrevdKampanje-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

ParameterBeskrivelse
title påkrevdKampanjetittel, opptil 100 tegn
category påkrevdEn kategori fra GET /api/v1/options. Utelat den når du bruker en mal
instructions påkrevdHva arbeiderne skal gjøre, opptil 5 000 tegn
url Lenken arbeiderne åpner. Påkrevd for kategorier der needs_url er true
payment påkrevdBetaling per oppgave i USD, minst 0.12
positions påkrevdHvor mange arbeidere, minst 10. Med en datafil for malen beregnes det ut fra radene
time_to_complete påkrevdMinutter en arbeider har på seg til å bli ferdig, 1 til 120
time_to_rate påkrevdDager 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

ParameterBeskrivelse
id påkrevdKampanje-ID-en (id i kampanjelisten)

Spørringsparametere

ParameterBeskrivelse
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

ParameterBeskrivelse
id påkrevdInnsendings-ID-en

JSON-body

ParameterBeskrivelse
action påkrevdapprove, 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.

Statuserror.codeHva det betyr
400invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_requiredNoe i forespørselen mangler eller er ikke tillatt. message sier hva.
401missing_api_key, invalid_api_keyIngen API-nøkkel, eller nøkkelen er feil eller er erstattet av en nyere.
402insufficient_balanceDen tilgjengelige saldoen din dekker ikke kampanjen. Fyll på saldoen og prøv igjen.
403test_key_not_allowed, account_suspendedBruk den ekte API-nøkkelen din. En suspendert konto kan ikke bruke API-et.
404not_foundDet finnes ingen kampanje eller innsending med den ID-en på kontoen din.
409already_reviewed, review_refusedInnsendingen er allerede vurdert, eller vurderingen er ikke mulig akkurat nå, for eksempel fordi revisjonsgrensen er nådd.
429rate_limitedMer enn 120 forespørsler i løpet av et minutt. Vent det antallet sekunder som står i Retry-After.
500internal_errorEt 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.

ParameterBeskrivelse
qualification_id påkrevdID-en til kvalifiseringstesten din
worker_token påkrevdArbeidertokenet arbeideren skrev inn på nettstedet ditt
api_token påkrevdAPI-nøkkelen din (testnøkkelen for testendepunktet)
decision påkrevdapprove 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.

ParameterBeskrivelse
qualification_id påkrevdID-en til kvalifiseringstesten din
worker_token påkrevdArbeidertokenet arbeideren skrev inn på nettstedet ditt
api_token påkrevdAPI-nøkkelen din (testnøkkelen for testendepunktet)
decision påkrevdapprove 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:

errorHva 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 tokenAPI-nøkkelen er feil eller har blitt erstattet av en nyere.
Worker token not found for this qualificationTokenet tilhører ikke denne testen. Be arbeideren sjekke det.
API token does not belong to the qualification ownerBruk nøkkelen til kontoen som opprettet testen.
This qualification is not configured for external submissionsTesten er ikke merket som ekstern.
This qualification is no longer activeTesten er satt på pause eller ferdig.
This worker has already been evaluated for this qualificationHver arbeider får ett resultat per test.
Worker account is suspendedArbeideren kan ikke ta tester akkurat nå.
No remaining positions for this qualificationAlle plassene i testen er tatt.