DokumentacijaKūrėjams
„TaskerData“ API
Skelbkite kampanijas, rinkite darbuotojų pateikimus ir peržiūrėkite juos savo kodu arba prijunkite išorinį kvalifikacijos testą. Kiekviena užklausa autentifikuojama jūsų API raktu.
Apžvalga
Kampanijų API leidžia jūsų kodui daryti tai, ką darote užsakovo skydelyje: kurti kampanijas, sekti jų eigą, atsisiųsti pateikimus su įrodymais ir juos tvirtinti ar atmesti. Išorinės kvalifikacijos galiniai taškai leidžia testui jūsų svetainėje pranešti „TaskerData“, ar kiekvienas darbuotojas išlaikė.
Visos užklausos siunčiamos į https://taskerdata.com per HTTPS. Siunčiate ir gaunate JSON.
Per API sukurtos kampanijos kainuoja tiek pat ir laikosi tų pačių taisyklių kaip skydelyje. „TaskerData“ jas peržiūri prieš paskelbiant (patikimų užsakovų paskelbiamos iš karto), o pinigai rezervuojami ir išmokami taip pat.
Autentifikavimas
Atidarykite užsakovo skydelį ir eikite į „API“. Ten rasite du raktus:
- API raktas: tikroms užklausoms. Kampanijų API jį skaito iš Authorization antraštės. Kvalifikacijos galinis taškas jį priima kaip api_token.
- Bandomasis API raktas: tik kvalifikacijos bandomajam galiniam taškui, kad galėtumėte išbandyti integraciją nepaveikdami tikrų darbuotojų.
Authorization: Bearer k9Xq••••••••3f9aapi_token=Tz4m••••••••a71c429 → Retry-AfterSukūrus naują raktą senasis iš karto pakeičiamas, todėl tada atnaujinkite savo serverį. Per valandą galite sukurti iki 3 naujų raktų.
Svarbu: Laikykite API raktą paslaptyje. Naudokite jį tik savo serveryje, niekada ne lankytojams prieinamame tinklalapyje ar programėlėje.
Su kiekviena Kampanijų API užklausa siųskite savo API raktą:
Authorization: Bearer YOUR_API_KEYGalite atlikti iki 120 Kampanijų API užklausų per minutę. Antraštė X-RateLimit-Remaining rodo, kiek liko. Viršijus gaunate būseną 429, o antraštė Retry-After nurodo, kiek sekundžių palaukti.
Kampanijų API
Kurkite kampanijas ir tvarkykite jų atneštą darbą savo kodu.
- Sukūrimas
POST …/campaigns - „TaskerData“ peržiūra
- Paskelbta
- Ateina pateikimai
GET …/submissions - Patvirtinti, taisyti ar atmesti
POST …/review - Darbuotojui sumokama
Kampanijų sąrašas
GET/api/v1/campaigns
Jūsų kampanijos, naujausios pirmiausia. total rodo, kiek kampanijų atitinka, todėl per jas galite naršyti su limit ir offset.
Užklausos parametrai
| Parametras | Aprašymas |
|---|---|
status | Tik šios būsenos kampanijos: pending, in review, active, paused, completed, terminated arba rejected |
limit | Kiek grąžinti, nuo 1 iki 100 (numatyta 20) |
offset | Kiek praleisti, puslapiavimui (numatyta 0) |
curl "https://taskerdata.com/api/v1/campaigns?status=active&limit=20" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Atsakymas · 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
}Klaidos pavyzdys
// status 401
{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}Gauti kampaniją
GET/api/v1/campaigns/{id}
Viena kampanija su jos nustatymais ir kiek pateikimų laukia peržiūros, laukia taisymo, patvirtinta ir atmesta. Naudokite ją kampanijos eigai sekti.
Adrese
| Parametras | Aprašymas |
|---|---|
id privaloma | Kampanijos ID (id kampanijų sąraše) |
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Atsakymas · 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
}
}
}Klaidos pavyzdys
// status 404
{
"success": false,
"error": {
"code": "not_found",
"message": "Campaign not found."
}
}Sukurti kampaniją
POST/api/v1/campaigns
Paskelbia naują kampaniją ir rezervuoja visą jos kainą iš jūsų turimo likučio, lygiai kaip skydelis. Atsakyme yra kampanijos id, jos kaina ir būsena: pending, kol „TaskerData“ ją peržiūri, arba iš karto active, jei esate patikimas užsakovas.
JSON turinys
| Parametras | Aprašymas |
|---|---|
title privaloma | Kampanijos pavadinimas, iki 100 simbolių |
category privaloma | Kategorija iš GET /api/v1/options. Naudodami šabloną jos nenurodykite |
instructions privaloma | Ką turi daryti darbuotojai, iki 5 000 simbolių |
url | Nuoroda, kurią atidaro darbuotojai. Privaloma kategorijoms, kurių needs_url yra true |
payment privaloma | Užmokestis už užduotį USD, bent 0,12 |
positions privaloma | Kiek darbuotojų, bent 10. Su šablono duomenų failu apskaičiuojama pagal eilutes |
time_to_complete privaloma | Minutės, per kurias darbuotojas turi baigti, nuo 1 iki 120 |
time_to_rate privaloma | Dienos kiekvienam pateikimui peržiūrėti, nuo 1 iki 30. Po to patvirtinama automatiškai |
proof.text | Prašyti tekstinio atsakymo: nurodykite darbuotojui, ką parašyti |
proof.images | Prašyti ekrano kopijų ar nuotraukų: po vieną aprašymą kiekvienam paveikslėliui |
proof.video | Prašyti vaizdo įrašo ar įrašymo: ką jame turi būti matyti |
targeting.region | international (numatyta), usa, west-europe, east-europe, latin-america arba asia-africa |
targeting.exclude_countries | Šalių pavadinimai, kuriuos reikia išskirti iš regiono |
targeting.min_success_rate | Mažiausias darbuotojo sėkmės rodiklis: 75 (numatyta), 80, 85, 90, 95 arba 100 |
targeting.type, targeting.group_id | Nustatykite type į "group" ir group_id į vieną iš savo darbuotojų grupių, kad užduotis būtų siunčiama tik tai grupei |
qualification_id | Užduoties gali imtis tik šį kvalifikacijos testą išlaikę darbuotojai |
template | Naudokite vieną iš savo šablonų vietoj instrukcijų: id ir data su columns bei rows, kurie užpildo jo vietos rezervavimo žymas, po vieną eilutę užduočiai. answers_per_row (nuo 1 iki 5) ir rows_per_task (nuo 1 iki 50) neprivalomi |
drip_feed | Skelbti darbuotojams dalimis: min_workers ir max_workers (nuo 1 iki 50) bei interval_minutes (15, 30, 60, 120, 180, 360, 720 arba 1440) |
location | Vietinėms lauko užduotims ir slapto pirkėjo užduotims: lat, lng, radius_m (nuo 50 iki 50 000) ir neprivalomas address |
Kol kas kategorijos, kurioms reikia jūsų įkeliamų failų (pvz., garso transkribavimas ar paveikslėlių žymėjimas), vaizdo įrašų užduotys ir pavyzdiniai paveikslėliai gali būti kuriami tik skydelyje. Kaip skaičiuojama kaina, paaiškinta gide „Kainos ir mokesčiai“.
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
}
}'Atsakymas · 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
}
}Klaidos pavyzdys
// status 402
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Insufficient balance"
}
}Gauti pateikimus
GET/api/v1/campaigns/{id}/submissions
Vienos kampanijos darbuotojų atsiųstas darbas, seniausias pirmiausia, su įrodymais: tekstiniu atsakymu, nuorodomis į paveikslėlius ir vaizdo įrašus, šablono atsakymais (answers), duomenų eilute, su kuria dirbo, ir, lauko užduotims, jų vieta.
Adrese
| Parametras | Aprašymas |
|---|---|
id privaloma | Kampanijos ID (id kampanijų sąraše) |
Užklausos parametrai
| Parametras | Aprašymas |
|---|---|
status | to_review (pending ir resubmitted), pending, resubmitted, revision_requested, approved arba rejected |
since | Tik pateikimai, išsiųsti šiuo metu ar vėliau, pavyzdžiui, 2026-10-01T00:00:00Z |
after_id | Puslapiavimui: tik pateikimai su didesniu id. Naudokite next_after_id iš ankstesnio puslapio |
limit | Kiek grąžinti, nuo 1 iki 100 (numatyta 50) |
Norėdami reguliariai rinkti naują darbą, išsisaugokite paskutinį gautą id ir kitą kartą siųskite jį kaip after_id. raw turi viską, ką atsiuntė darbuotojas, jei prireiktų to, kas neišvardyta.
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID/submissions?status=to_review&after_id=0" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Atsakymas · 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
}Klaidos pavyzdys
// status 400
{
"success": false,
"error": {
"code": "invalid_status",
"message": "status must be one of: to_review, pending, resubmitted, revision_requested, approved, rejected."
}
}Peržiūrėti pateikimą
POST/api/v1/submissions/{id}/review
Patvirtinkite, atmeskite arba paprašykite pataisyti, kaip skydelio mygtukais. Patvirtinus darbuotojui sumokama iš rezervuotų pinigų. Atmetus užmokestis ir jo mokestis grąžinami į jūsų likutį, o vieta atlaisvinama kitam darbuotojui.
Adrese
| Parametras | Aprašymas |
|---|---|
id privaloma | Pateikimo ID |
JSON turinys
| Parametras | Aprašymas |
|---|---|
action privaloma | approve, reject arba revision |
reason | Su reject: priežastis, kurią mato darbuotojas |
note | Su revision (privaloma): ką darbuotojas turėtų pataisyti |
Pateikimą galite peržiūrėti tik tol, kol jis laukia peržiūros (pending arba resubmitted). Taisymų skaičių riboja kampanijos taisymų riba; ją pasiekus galite tik patvirtinti arba atmesti.
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."
}'Atsakymas · 200
{
"success": true,
"submission": {
"id": 1842,
"status": "revision_requested"
},
"balance": {
"available": 65.94,
"reserved": 34.06
}
}Klaidos pavyzdys
// status 409
{
"success": false,
"error": {
"code": "already_reviewed",
"message": "Submission already reviewed"
}
}Patikrinkite likutį
GET/api/v1/balance
available – kiek galite išleisti naujoms kampanijoms, reserved – rezervuota vykdomoms kampanijoms, o spent – kiek iki šiol sumokėjote darbuotojams.
curl "https://taskerdata.com/api/v1/balance" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Atsakymas · 200
{
"success": true,
"balance": {
"available": 65.94,
"reserved": 34.06,
"spent": 212.4
}
}Parinktys ir ID
GET/api/v1/options
Pateikia kategorijas, kurias galite naudoti per API (needs_url ir needs_location rodo, kurioms reikia nuorodos ar vietos), leidžiamas taikymo ir laipsniško paskelbimo reikšmes bei jūsų šablonų, darbuotojų grupių ir kvalifikacijos testų ID.
curl "https://taskerdata.com/api/v1/options" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"Atsakymas · 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"
}
]
}Klaidos
Kampanijų API naudoja HTTP būsenos kodus. Kai kas nors nepavyksta, success yra false, o error turi kodą, kurį galite tikrinti savo kode, ir pranešimą, kurį galite parodyti ar įrašyti į žurnalą. Kampanijų patikros naudoja tuos pačius pranešimus kaip skydelis.
| Būsena | error.code | Ką tai reiškia |
|---|---|---|
| 400 | invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_required | Kažko užklausoje trūksta arba tai neleidžiama. message nurodo ką. |
| 401 | missing_api_key, invalid_api_key | Nėra API rakto, arba raktas neteisingas ar pakeistas naujesniu. |
| 402 | insufficient_balance | Jūsų turimas likutis nepadengia kampanijos. Papildykite lėšas ir bandykite dar kartą. |
| 403 | test_key_not_allowed, account_suspended | Naudokite tikrąjį API raktą. Sustabdyta paskyra negali naudoti API. |
| 404 | not_found | Jūsų paskyroje nėra kampanijos ar pateikimo su tokiu ID. |
| 409 | already_reviewed, review_refused | Pateikimas jau peržiūrėtas arba peržiūra šiuo metu neįmanoma, pavyzdžiui, nes pasiekta taisymų riba. |
| 429 | rate_limited | Daugiau nei 120 užklausų per minutę. Palaukite tiek sekundžių, kiek nurodyta Retry-After. |
| 500 | internal_error | Problema mūsų pusėje. Bandykite dar kartą, o jei kartojasi, susisiekite su pagalba. |
Išoriniai kvalifikacijos testai
Kvalifikacijos testams, vykdomiems jūsų svetainėje.
- Darbuotojas atidaro jūsų testą
- Įveda savo darbuotojo žetoną
- Laiko testą jūsų svetainėje
- Jūsų serveris praneša rezultatą
decision=approve - Darbuotojas kvalifikuotas
Pranešti testo rezultatą Tikras
GET/api/worker/external_qualification/data
Kvalifikacijos testams, pažymėtiems kaip išoriniai. Darbuotojas atidaro jūsų testą iš kvalifikacijos ir jūsų svetainėje įveda savo darbuotojo žetoną. Jam baigus, iškvieskite šį galinį tašką su approve arba reject.
| Parametras | Aprašymas |
|---|---|
qualification_id privaloma | Jūsų kvalifikacijos testo ID |
worker_token privaloma | Darbuotojo žetonas, kurį darbuotojas įvedė jūsų svetainėje |
api_token privaloma | Jūsų API raktas (bandomajam galiniam taškui – bandomasis raktas) |
decision privaloma | approve arba reject |
Jei testas už išlaikymą moka premiją, o jūsų užsakovo likutis jos nepadengia, pateikimas išsaugomas kaip laukiantis, kad galėtumėte papildyti likutį ir patvirtinti jį skydelyje.
Darbuotoją viename teste galima įvertinti vieną kartą. Testas turi būti aktyvus ir pažymėtas kaip išorinis, o API raktas turi priklausyti testo savininkui.
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"Atsakymas · 200
{
"success": true
}Klaidos pavyzdys
{
"success": false,
"error": "This worker has already been evaluated for this qualification"
}Išbandykite nustatymus
POST/api/worker/external_qualification/data_test
Siųskite tuos pačius laukus kaip JSON į bandomąjį galinį tašką su savo bandomuoju API raktu. Niekas neišsaugoma ir jokiam darbuotojui neturi įtakos: tikrinama tik jūsų užklausa.
| Parametras | Aprašymas |
|---|---|
qualification_id privaloma | Jūsų kvalifikacijos testo ID |
worker_token privaloma | Darbuotojo žetonas, kurį darbuotojas įvedė jūsų svetainėje |
api_token privaloma | Jūsų API raktas (bandomajam galiniam taškui – bandomasis raktas) |
decision privaloma | approve arba reject |
Neteisingas bandomasis raktas grąžina būseną 401; trūkstami laukai ar neteisingas sprendimas – būseną 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"
}'Atsakymas · 200
{
"success": true
}Klaidos pavyzdys
// status 401
{
"statusCode": 401,
"statusMessage": "Invalid API test key"
}Testo rezultato klaidos
Rezultato galinis taškas visada atsako būsena 200. Tikrinkite success: kai jis false, error nurodo priežastį:
| error | Ką tai reiškia |
|---|---|
Missing required parameters: qualification_id, worker_token, api_token, decision | Trūksta vieno iš keturių parametrų. |
Decision must be 'approve' or 'reject' | decision turi kitą reikšmę. |
Invalid API token | API raktas neteisingas arba pakeistas naujesniu. |
Worker token not found for this qualification | Žetonas nepriklauso šiam testui. Paprašykite darbuotojo jį patikrinti. |
API token does not belong to the qualification owner | Naudokite paskyros, sukūrusios testą, raktą. |
This qualification is not configured for external submissions | Testas nepažymėtas kaip išorinis. |
This qualification is no longer active | Testas pristabdytas arba baigtas. |
This worker has already been evaluated for this qualification | Kiekvienas darbuotojas viename teste gauna vieną rezultatą. |
Worker account is suspended | Darbuotojas šiuo metu negali laikyti testų. |
No remaining positions for this qualification | Visos testo vietos užimtos. |