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_KEYDakikada 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
| Parametre | Açı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
| Parametre | Açıklama |
|---|---|
id zorunlu | Kampanya 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
| Parametre | Açıklama |
|---|---|
title zorunlu | Kampanya başlığı, en fazla 100 karakter |
category zorunlu | GET /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 zorunlu | USD cinsinden görev başına ödeme, en az 0.12 |
positions zorunlu | Kaç çalışan, en az 10. Şablon veri dosyasıyla satırlardan hesaplanır |
time_to_complete zorunlu | Bir çalışanın bitirmek için sahip olduğu dakika, 1 ile 120 arası |
time_to_rate zorunlu | Her 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
| Parametre | Açıklama |
|---|---|
id zorunlu | Kampanya ID'si (kampanya listesindeki id) |
Sorgu parametreleri
| Parametre | Açı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
| Parametre | Açıklama |
|---|---|
id zorunlu | Gönderim ID'si |
JSON gövdesi
| Parametre | Açıklama |
|---|---|
action zorunlu | approve, 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.
| Durum | error.code | Ne anlama gelir |
|---|---|---|
| 400 | invalid_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. |
| 401 | missing_api_key, invalid_api_key | API anahtarı yok veya anahtar yanlış ya da daha yenisiyle değiştirilmiş. |
| 402 | insufficient_balance | Kullanılabilir bakiyen kampanyayı karşılamıyor. Bakiye yükle ve tekrar dene. |
| 403 | test_key_not_allowed, account_suspended | Canlı API anahtarını kullan. Askıya alınmış bir hesap API'yi kullanamaz. |
| 404 | not_found | Hesabında bu ID'ye sahip bir kampanya veya gönderim yok. |
| 409 | already_reviewed, review_refused | Gönderim zaten incelenmiş veya inceleme şu anda mümkün değil, örneğin düzeltme sınırına ulaşıldığı için. |
| 429 | rate_limited | Bir dakikada 120'den fazla istek. Retry-After içindeki saniye kadar bekle. |
| 500 | internal_error | Bizim 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.
| Parametre | Açıklama |
|---|---|
qualification_id zorunlu | Yeterlilik testinin ID'si |
worker_token zorunlu | Çalışanın web sitene girdiği çalışan token'ı |
api_token zorunlu | API anahtarın (test uç noktası için test anahtarı) |
decision zorunlu | approve 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.
| Parametre | Açıklama |
|---|---|
qualification_id zorunlu | Yeterlilik testinin ID'si |
worker_token zorunlu | Çalışanın web sitene girdiği çalışan token'ı |
api_token zorunlu | API anahtarın (test uç noktası için test anahtarı) |
decision zorunlu | approve 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:
| error | Ne anlama gelir |
|---|---|
Missing required parameters: qualification_id, worker_token, api_token, decision | Dört parametreden biri eksik. |
Decision must be 'approve' or 'reject' | decision başka bir değere sahip. |
Invalid API token | API anahtarı yanlış veya daha yenisiyle değiştirilmiş. |
Worker token not found for this qualification | Token bu teste ait değil. Çalışandan kontrol etmesini iste. |
API token does not belong to the qualification owner | Testi oluşturan hesabın anahtarını kullan. |
This qualification is not configured for external submissions | Test harici olarak işaretlenmemiş. |
This qualification is no longer active | Test duraklatılmış veya bitmiş. |
This worker has already been evaluated for this qualification | Her çalışan test başına bir sonuç alır. |
Worker account is suspended | Çalışan şu anda test alamaz. |
No remaining positions for this qualification | Testteki tüm yerler dolu. |