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_KEY

Du 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

ParameterBeskrivning
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

ParameterBeskrivning
id obligatoriskKampanjens 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

ParameterBeskrivning
title obligatoriskKampanjens titel, upp till 100 tecken
category obligatoriskEn kategori från GET /api/v1/options. Utelämna den när du använder en mall
instructions obligatoriskVad 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 obligatoriskBetalning per uppgift i USD, minst 0.12
positions obligatoriskHur många arbetare, minst 10. Med en datafil för mallen beräknas det utifrån raderna
time_to_complete obligatoriskMinuter som en arbetare har på sig att bli klar, 1 till 120
time_to_rate obligatoriskDagar 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

ParameterBeskrivning
id obligatoriskKampanjens ID (id i kampanjlistan)

Frågeparametrar

ParameterBeskrivning
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

ParameterBeskrivning
id obligatoriskInlämningens ID

JSON-body

ParameterBeskrivning
action obligatoriskapprove, 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.

Statuserror.codeVad det betyder
400invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_requiredNågot i förfrågan saknas eller är inte tillåtet. message säger vad.
401missing_api_key, invalid_api_keyIngen API-nyckel, eller så är nyckeln fel eller har ersatts av en nyare.
402insufficient_balanceDitt tillgängliga saldo räcker inte till kampanjen. Sätt in pengar och försök igen.
403test_key_not_allowed, account_suspendedAnvänd din riktiga API-nyckel. Ett avstängt konto kan inte använda API:t.
404not_foundDet finns ingen kampanj eller inlämning med det ID:t på ditt konto.
409already_reviewed, review_refusedInlä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.
429rate_limitedFler än 120 förfrågningar på en minut. Vänta det antal sekunder som anges i Retry-After.
500internal_errorEtt 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.

ParameterBeskrivning
qualification_id obligatoriskID:t för ditt kvalifikationstest
worker_token obligatoriskDen arbetartoken som arbetaren angav på din webbplats
api_token obligatoriskDin API-nyckel (testnyckeln för testendpointen)
decision obligatoriskapprove 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.

ParameterBeskrivning
qualification_id obligatoriskID:t för ditt kvalifikationstest
worker_token obligatoriskDen arbetartoken som arbetaren angav på din webbplats
api_token obligatoriskDin API-nyckel (testnyckeln för testendpointen)
decision obligatoriskapprove 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:

errorVad det betyder
Missing required parameters: qualification_id, worker_token, api_token, decisionEn av de fyra parametrarna saknas.
Decision must be 'approve' or 'reject'decision har ett annat värde.
Invalid API tokenAPI-nyckeln är fel eller har ersatts av en nyare.
Worker token not found for this qualificationToken tillhör inte det här testet. Be arbetaren kontrollera den.
API token does not belong to the qualification ownerAnvänd nyckeln för kontot som skapade testet.
This qualification is not configured for external submissionsTestet är inte markerat som externt.
This qualification is no longer activeTestet är pausat eller avslutat.
This worker has already been evaluated for this qualificationVarje arbetare får ett resultat per test.
Worker account is suspendedArbetaren kan inte göra test just nu.
No remaining positions for this qualificationAlla platser i testet är tagna.