BelgelerGeliştiriciler

TaskerData API

Kampanya oluştur, çalışanların gönderimlerini topla ve kendi kodundan incele ya da harici bir yeterlilik testi bağla. Her istek API anahtarınla doğrulanır.

Genel bakış

Kampanya API'si, kodunun işveren panelinde yaptıklarını yapmasını sağlar: kampanya oluştur, ilerlemelerini takip et, gönderimleri kanıtlarıyla indir ve onayla veya reddet. Harici yeterlilik uç noktaları, kendi web sitendeki bir testin TaskerData'ya her çalışanın geçip geçmediğini bildirmesini sağlar.

Tüm istekler HTTPS üzerinden https://taskerdata.com adresine gider. JSON gönder ve al.

API üzerinden oluşturulan kampanyalar paneldekiyle aynı maliyettedir ve aynı kurallara uyar. TaskerData onları yayına girmeden önce inceler (güvenilir işverenler hemen yayına girer) ve para aynı şekilde ayrılır ve ödenir.

Kimlik doğrulama

İşveren panelini aç ve API'ye git. Orada iki anahtar bulacaksın:

  • API anahtarı: gerçek istekler için. Kampanya API'si onu Authorization başlığından okur. Yeterlilik uç noktası onu api_token olarak alır.
  • Test API anahtarı: yalnızca yeterlilik test uç noktası için; böylece o entegrasyonu gerçek çalışanlara dokunmadan deneyebilirsin.

Yeni bir anahtar oluşturmak eskisinin yerini hemen alır, bu yüzden bunu yaptığında arka ucunu güncelle. Saatte en fazla 3 yeni anahtar oluşturabilirsin.

Önemli: API anahtarını gizli tut. Yalnızca sunucunda kullan, ziyaretçilerin açabileceği bir web sayfasında veya uygulamada asla kullanma.

API anahtarını her Kampanya API'si isteğiyle gönder:

Authorization: Bearer YOUR_API_KEY

Dakikada en fazla 120 Kampanya API'si isteği yapabilirsin. X-RateLimit-Remaining başlığı kaç tane kaldığını gösterir. Sonrasında 429 durumu alırsın ve Retry-After başlığı kaç saniye beklemen gerektiğini söyler.

Kampanya API'si

Kampanya oluştur ve getirdikleri işleri kendi kodundan yönet.

Kampanyaları listele

GET/api/v1/campaigns

Kampanyaların, en yenisi önce. total kaç kampanyanın eşleştiğini gösterir; böylece limit ve offset ile sayfalar halinde gezebilirsin.

Sorgu parametreleri

ParametreAçıklama
status Yalnızca bu durumdaki kampanyalar: pending, in review, active, paused, completed, terminated veya rejected
limit Kaç tane döndürüleceği, 1 ile 100 arası (varsayılan 20)
offset Sayfalama için kaç tane atlanacağı (varsayılan 0)
curl "https://taskerdata.com/api/v1/campaigns?status=active&limit=20" \
  -H "Authorization: Bearer $TASKERDATA_API_KEY"

Yanıt · 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
}

Hata örneği

// status 401
{
  "success": false,
  "error": {
    "code": "invalid_api_key",
    "message": "Invalid API key."
  }
}

Bir kampanyayı al

GET/api/v1/campaigns/{id}

Ayarlarıyla birlikte tek bir kampanya ve kaç gönderimin inceleme beklediği, düzeltme beklediği, onaylandığı ve reddedildiği. Bir kampanyanın ilerlemesini takip etmek için kullan.

Adreste

ParametreAçıklama
id zorunluKampanya ID'si (kampanya listesindeki id)
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID" \
  -H "Authorization: Bearer $TASKERDATA_API_KEY"

Yanıt · 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
    }
  }
}

Hata örneği

// status 404
{
  "success": false,
  "error": {
    "code": "not_found",
    "message": "Campaign not found."
  }
}

Kampanya oluştur

POST/api/v1/campaigns

Yeni bir kampanya oluşturur ve tam olarak paneldeki gibi tüm maliyetini kullanılabilir bakiyenden ayırır. Yanıt, kampanyanın id'sini, maliyetini ve durumunu içerir: TaskerData incelerken pending, güvenilir bir işverensen hemen active.

JSON gövdesi

ParametreAçıklama
title zorunluKampanya başlığı, en fazla 100 karakter
category zorunluGET /api/v1/options kaynağından bir kategori. Şablon kullandığında boş bırak
instructions zorunluÇalışanların ne yapması gerektiği, en fazla 5.000 karakter
url Çalışanların açtığı bağlantı. needs_url değeri true olan kategoriler için zorunlu
payment zorunluUSD cinsinden görev başına ödeme, en az 0.12
positions zorunluKaç çalışan, en az 10. Şablon veri dosyasıyla satırlardan hesaplanır
time_to_complete zorunluBir çalışanın bitirmek için sahip olduğu dakika, 1 ile 120 arası
time_to_rate zorunluHer gönderimi incelemek için sahip olduğun gün, 1 ile 30 arası. Sonrasında otomatik olarak onaylanır
proof.text Metin yanıtı iste: çalışana ne yazacağını söyle
proof.images Ekran görüntüsü veya fotoğraf iste: görsel başına bir açıklama
proof.video Video veya kayıt iste: neyi göstermesi gerektiği
targeting.region international (varsayılan), usa, west-europe, east-europe, latin-america veya asia-africa
targeting.exclude_countries Bölgeden çıkarılacak ülke adları
targeting.min_success_rate Asgari çalışan başarı oranı: 75 (varsayılan), 80, 85, 90, 95 veya 100
targeting.type, targeting.group_id Görevi yalnızca o gruba göndermek için type değerini "group" ve group_id değerini çalışan gruplarından birine ayarla
qualification_id Görevi yalnızca bu yeterlilik testini geçen çalışanlar alabilir
template Talimatlar yerine şablonlarından birini kullan: id ve yer tutucularını dolduran columns ve rows içeren data, görev başına bir satır. answers_per_row (1 ile 5) ve rows_per_task (1 ile 50) isteğe bağlıdır
drip_feed Çalışanları gruplar halinde yayınla: min_workers ve max_workers (1 ile 50) ve interval_minutes (15, 30, 60, 120, 180, 360, 720 veya 1440)
location Yerel Saha Görevleri ve Gizli Müşteri için: lat, lng, radius_m (50 ile 50.000) ve isteğe bağlı bir address

Şimdilik yüklediğin dosyalara ihtiyaç duyan kategoriler (Ses Transkripsiyonu veya Görsel Etiketleme gibi), video görevleri ve örnek görseller yalnızca panelden oluşturulabilir. Maliyetler ve ücretler rehberi fiyatın nasıl hesaplandığını açıklar.

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
    }
  }'

Yanıt · 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
  }
}

Hata örneği

// status 402
{
  "success": false,
  "error": {
    "code": "insufficient_balance",
    "message": "Insufficient balance"
  }
}

Gönderimleri al

GET/api/v1/campaigns/{id}/submissions

Çalışanların bir kampanya için gönderdiği işler, en eskisi önce, kanıtlarıyla birlikte: metin yanıtı, görsel ve video bağlantıları, şablon yanıtları (answers), üzerinde çalıştıkları veri satırı ve saha görevleri için konumları.

Adreste

ParametreAçıklama
id zorunluKampanya ID'si (kampanya listesindeki id)

Sorgu parametreleri

ParametreAçıklama
status to_review (pending ve resubmitted), pending, resubmitted, revision_requested, approved veya rejected
since Yalnızca bu zamanda veya sonrasında gönderilen gönderimler, örneğin 2026-10-01T00:00:00Z
after_id Sayfalama için: yalnızca daha yüksek id'ye sahip gönderimler. Önceki sayfadaki next_after_id değerini kullan
limit Kaç tane döndürüleceği, 1 ile 100 arası (varsayılan 50)

Yeni işleri düzenli olarak toplamak için aldığın son id'yi sakla ve bir sonraki sefer after_id olarak gönder. raw, listelenmemiş bir şeye ihtiyacın olursa diye çalışanın gönderdiği her şeyi içerir.

curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID/submissions?status=to_review&after_id=0" \
  -H "Authorization: Bearer $TASKERDATA_API_KEY"

Yanıt · 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
}

Hata örneği

// status 400
{
  "success": false,
  "error": {
    "code": "invalid_status",
    "message": "status must be one of: to_review, pending, resubmitted, revision_requested, approved, rejected."
  }
}

Bir gönderimi incele

POST/api/v1/submissions/{id}/review

Paneldeki düğmelerle aynı şekilde onayla, reddet veya düzeltme iste. Onaylamak çalışana ayrılan paradan ödeme yapar. Reddetmek ödemeyi ve ücretini bakiyene iade eder ve kontenjanı başka bir çalışan için boşaltır.

Adreste

ParametreAçıklama
id zorunluGönderim ID'si

JSON gövdesi

ParametreAçıklama
action zorunluapprove, reject veya revision
reason reject ile: çalışanın gördüğü neden
note revision ile (zorunlu): çalışanın neyi düzeltmesi gerektiği

Bir gönderimi yalnızca inceleme beklerken (pending veya resubmitted) inceleyebilirsin. Düzeltmeler kampanyanın düzeltme sınırıyla sınırlıdır; sonrasında yalnızca onaylayabilir veya reddedebilirsin.

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."
  }'

Yanıt · 200

{
  "success": true,
  "submission": {
    "id": 1842,
    "status": "revision_requested"
  },
  "balance": {
    "available": 65.94,
    "reserved": 34.06
  }
}

Hata örneği

// status 409
{
  "success": false,
  "error": {
    "code": "already_reviewed",
    "message": "Submission already reviewed"
  }
}

Bakiyeni kontrol et

GET/api/v1/balance

available yeni kampanyalara harcayabileceğin tutar, reserved yayındaki kampanyalar için ayrılan tutar, spent ise şimdiye kadar çalışanlara ödediğin tutardır.

curl "https://taskerdata.com/api/v1/balance" \
  -H "Authorization: Bearer $TASKERDATA_API_KEY"

Yanıt · 200

{
  "success": true,
  "balance": {
    "available": 65.94,
    "reserved": 34.06,
    "spent": 212.4
  }
}

Seçenekler ve ID'ler

GET/api/v1/options

API üzerinden kullanabileceğin kategorileri (needs_url ve needs_location hangilerinin bağlantı veya konum gerektirdiğini gösterir), izin verilen hedefleme ve kademeli yayın değerlerini ve şablonlarının, çalışan gruplarının ve yeterlilik testlerinin ID'lerini listeler.

curl "https://taskerdata.com/api/v1/options" \
  -H "Authorization: Bearer $TASKERDATA_API_KEY"

Yanıt · 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"
    }
  ]
}

Hatalar

Kampanya API'si HTTP durum kodlarını kullanır. Bir şeyler ters gittiğinde success false olur ve error, kodunda kontrol etmen için bir code ve göstermen veya kaydetmen için bir message içerir. Kampanya kontrolleri paneldeki mesajların aynısını kullanır.

Durumerror.codeNe anlama gelir
400invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_requiredİstekte bir şey eksik veya izin verilmiyor. message neyin olduğunu söyler.
401missing_api_key, invalid_api_keyAPI anahtarı yok veya anahtar yanlış ya da daha yenisiyle değiştirilmiş.
402insufficient_balanceKullanılabilir bakiyen kampanyayı karşılamıyor. Bakiye yükle ve tekrar dene.
403test_key_not_allowed, account_suspendedCanlı API anahtarını kullan. Askıya alınmış bir hesap API'yi kullanamaz.
404not_foundHesabında bu ID'ye sahip bir kampanya veya gönderim yok.
409already_reviewed, review_refusedGönderim zaten incelenmiş veya inceleme şu anda mümkün değil, örneğin düzeltme sınırına ulaşıldığı için.
429rate_limitedBir dakikada 120'den fazla istek. Retry-After içindeki saniye kadar bekle.
500internal_errorBizim tarafımızda bir sorun. Tekrar dene ve devam ederse destek ekibiyle iletişime geç.

Harici yeterlilik testleri

Kendi web sitende çalışan yeterlilik testleri için.

Test sonucu bildir Canlı

GET/api/worker/external_qualification/data

Harici olarak işaretlenmiş yeterlilik testleri için. Çalışan testini yeterlilikten açar ve çalışan token'ını web sitene girer. Bitirdiğinde bu uç noktayı approve veya reject ile çağır.

ParametreAçıklama
qualification_id zorunluYeterlilik testinin ID'si
worker_token zorunluÇalışanın web sitene girdiği çalışan token'ı
api_token zorunluAPI anahtarın (test uç noktası için test anahtarı)
decision zorunluapprove veya reject

Test geçmek için bonus ödüyorsa ve işveren bakiyen bunu karşılayamıyorsa, gönderim bunun yerine beklemede olarak kaydedilir; böylece bakiye yükleyip panelden onaylayabilirsin.

Bir çalışan test başına bir kez değerlendirilebilir. Test aktif ve harici olarak işaretlenmiş olmalı, API anahtarı da testin sahibine ait olmalıdır.

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"

Yanıt · 200

{
  "success": true
}

Hata örneği

{
  "success": false,
  "error": "This worker has already been evaluated for this qualification"
}

Kurulumunu test et

POST/api/worker/external_qualification/data_test

Aynı alanları JSON olarak test API anahtarınla test uç noktasına gönder. Hiçbir şey kaydedilmez ve hiçbir çalışan etkilenmez: yalnızca isteğini kontrol eder.

ParametreAçıklama
qualification_id zorunluYeterlilik testinin ID'si
worker_token zorunluÇalışanın web sitene girdiği çalışan token'ı
api_token zorunluAPI anahtarın (test uç noktası için test anahtarı)
decision zorunluapprove veya reject

Yanlış bir test anahtarı 401 durumu döndürür; eksik alanlar veya yanlış bir decision 400 durumu döndürür.

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"
  }'

Yanıt · 200

{
  "success": true
}

Hata örneği

// status 401
{
  "statusCode": 401,
  "statusMessage": "Invalid API test key"
}

Test sonucu hataları

Sonuç uç noktası her zaman 200 durumuyla yanıt verir. success alanını kontrol et: false olduğunda error nedenini söyler:

errorNe anlama gelir
Missing required parameters: qualification_id, worker_token, api_token, decisionDört parametreden biri eksik.
Decision must be 'approve' or 'reject'decision başka bir değere sahip.
Invalid API tokenAPI anahtarı yanlış veya daha yenisiyle değiştirilmiş.
Worker token not found for this qualificationToken bu teste ait değil. Çalışandan kontrol etmesini iste.
API token does not belong to the qualification ownerTesti oluşturan hesabın anahtarını kullan.
This qualification is not configured for external submissionsTest harici olarak işaretlenmemiş.
This qualification is no longer activeTest duraklatılmış veya bitmiş.
This worker has already been evaluated for this qualificationHer çalışan test başına bir sonuç alır.
Worker account is suspendedÇalışan şu anda test alamaz.
No remaining positions for this qualificationTestteki tüm yerler dolu.