डॉक्सडेवलपर
TaskerData API
अपने कोड से कैंपेन पोस्ट करें, वर्कर्स के सबमिशन जुटाएँ और उनकी समीक्षा करें, या कोई बाहरी क्वालिफ़िकेशन टेस्ट जोड़ें। हर रिक्वेस्ट आपकी API key से ऑथेंटिकेट होती है।
परिचय
Campaign API से आपका कोड वही सब कर सकता है जो आप रिक्वेस्टर डैशबोर्ड में करते हैं: कैंपेन बनाना, उनकी प्रगति पर नज़र रखना, प्रमाण के साथ सबमिशन डाउनलोड करना और उन्हें स्वीकार या अस्वीकार करना। बाहरी क्वालिफ़िकेशन endpoint से आपकी वेबसाइट पर चलने वाला टेस्ट TaskerData को बता सकता है कि हर वर्कर पास हुआ या नहीं।
सभी रिक्वेस्ट HTTPS पर https://taskerdata.com को जाती हैं। डेटा JSON में भेजें और पाएँ।
API से बने कैंपेन की कीमत और नियम डैशबोर्ड जैसे ही हैं। लाइव होने से पहले TaskerData उनकी समीक्षा करता है (भरोसेमंद रिक्वेस्टर के कैंपेन तुरंत लाइव हो जाते हैं), और पैसे भी उसी तरह रिज़र्व होते हैं और भुगतान होता है।
ऑथेंटिकेशन
रिक्वेस्टर डैशबोर्ड खोलें और API पर जाएँ। वहाँ आपको दो keys मिलेंगी:
- API key: असली रिक्वेस्ट के लिए। Campaign API इसे Authorization हेडर से पढ़ता है। क्वालिफ़िकेशन endpoint इसे api_token के रूप में लेता है।
- Test API key: सिर्फ़ क्वालिफ़िकेशन टेस्ट endpoint के लिए, ताकि आप असली वर्कर को छुए बिना वह इंटीग्रेशन आज़मा सकें।
नई key बनाते ही पुरानी key तुरंत बदल जाती है, इसलिए ऐसा करने पर अपना बैकएंड भी अपडेट करें। आप एक घंटे में ज़्यादा से ज़्यादा 3 नई keys बना सकते हैं।
ज़रूरी: अपनी API key गुप्त रखें। इसे सिर्फ़ अपने सर्वर पर इस्तेमाल करें, कभी भी ऐसे वेब पेज या ऐप में नहीं जिसे विज़िटर खोल सकें।
Campaign API की हर रिक्वेस्ट के साथ अपनी API key भेजें:
Authorization: Bearer YOUR_API_KEYआप एक मिनट में Campaign API को ज़्यादा से ज़्यादा 120 रिक्वेस्ट भेज सकते हैं। X-RateLimit-Remaining हेडर बताता है कि कितनी बाकी हैं। इसके बाद आपको status 429 मिलता है, और Retry-After हेडर बताता है कि कितने सेकंड रुकना है।
Campaign API
अपने कोड से कैंपेन बनाएँ और उनसे आने वाले काम को संभालें।
कैंपेन की सूची
GET/api/v1/campaigns
आपके कैंपेन, सबसे नए पहले। total बताता है कि कितने कैंपेन मेल खाते हैं, ताकि आप limit और offset से पेज बदल सकें।
क्वेरी पैरामीटर
| पैरामीटर | विवरण |
|---|---|
status | सिर्फ़ इस स्टेटस वाले कैंपेन: pending, in review, active, paused, completed, terminated या rejected |
limit | कितने लौटाने हैं, 1 से 100 (डिफ़ॉल्ट 20) |
offset | पेज बदलने के लिए कितने छोड़ने हैं (डिफ़ॉल्ट 0) |
curl "https://taskerdata.com/api/v1/campaigns?status=active&limit=20" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"जवाब · 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
}एरर का उदाहरण
// status 401
{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "Invalid API key."
}
}एक कैंपेन देखें
GET/api/v1/campaigns/{id}
एक कैंपेन, उसकी सेटिंग्स के साथ, और यह कि कितने सबमिशन समीक्षा के इंतज़ार में हैं, कितने संशोधन के इंतज़ार में हैं, कितने स्वीकृत और कितने अस्वीकृत हैं। कैंपेन की प्रगति पर नज़र रखने के लिए इसका इस्तेमाल करें।
पते (URL) में
| पैरामीटर | विवरण |
|---|---|
id ज़रूरी | कैंपेन ID (कैंपेन सूची में id) |
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"जवाब · 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
}
}
}एरर का उदाहरण
// status 404
{
"success": false,
"error": {
"code": "not_found",
"message": "Campaign not found."
}
}कैंपेन बनाएँ
POST/api/v1/campaigns
नया कैंपेन पोस्ट करता है और उसकी पूरी लागत आपके उपलब्ध बैलेंस से रिज़र्व करता है, ठीक डैशबोर्ड की तरह। जवाब में कैंपेन की id, उसकी लागत और उसका स्टेटस होता है: TaskerData की समीक्षा के दौरान pending, या अगर आप भरोसेमंद रिक्वेस्टर हैं तो तुरंत active।
JSON बॉडी
| पैरामीटर | विवरण |
|---|---|
title ज़रूरी | कैंपेन का शीर्षक, ज़्यादा से ज़्यादा 100 अक्षर |
category ज़रूरी | GET /api/v1/options में से कोई श्रेणी। टेम्पलेट इस्तेमाल करने पर इसे न भेजें |
instructions ज़रूरी | वर्कर्स को क्या करना है, ज़्यादा से ज़्यादा 5,000 अक्षर |
url | वह लिंक जो वर्कर खोलते हैं। उन श्रेणियों के लिए ज़रूरी है जिनमें needs_url true है |
payment ज़रूरी | हर टास्क का भुगतान USD में, कम से कम 0.12 |
positions ज़रूरी | कितने वर्कर, कम से कम 10। टेम्पलेट डेटा फ़ाइल होने पर यह पंक्तियों से तय होता है |
time_to_complete ज़रूरी | वर्कर के पास काम पूरा करने के लिए कितने मिनट हैं, 1 से 120 |
time_to_rate ज़रूरी | हर सबमिशन की समीक्षा के लिए आपके पास कितने दिन हैं, 1 से 30। उसके बाद वह अपने-आप स्वीकृत हो जाता है |
proof.text | टेक्स्ट जवाब माँगें: वर्कर को बताएँ कि क्या लिखना है |
proof.images | स्क्रीनशॉट या फ़ोटो माँगें: हर इमेज के लिए एक विवरण |
proof.video | वीडियो या रिकॉर्डिंग माँगें: उसमें क्या दिखना चाहिए |
targeting.region | international (डिफ़ॉल्ट), usa, west-europe, east-europe, latin-america या asia-africa |
targeting.exclude_countries | क्षेत्र में से हटाने वाले देशों के नाम |
targeting.min_success_rate | वर्कर की न्यूनतम सफलता दर: 75 (डिफ़ॉल्ट), 80, 85, 90, 95 या 100 |
targeting.type, targeting.group_id | टास्क सिर्फ़ अपने किसी वर्कर ग्रुप को भेजने के लिए type को "group" और group_id को उस ग्रुप की ID पर सेट करें |
qualification_id | सिर्फ़ वही वर्कर टास्क ले सकते हैं जिन्होंने यह क्वालिफ़िकेशन टेस्ट पास किया है |
template | निर्देशों की जगह अपना कोई टेम्पलेट इस्तेमाल करें: id, और साथ में data जिसमें columns और rows हों जो उसके प्लेसहोल्डर भरें, हर टास्क के लिए एक पंक्ति। answers_per_row (1 से 5) और rows_per_task (1 से 50) वैकल्पिक हैं |
drip_feed | वर्कर्स को बैच में जारी करें: min_workers और max_workers (1 से 50) और interval_minutes (15, 30, 60, 120, 180, 360, 720 या 1440) |
location | स्थानीय फ़ील्ड टास्क और मिस्ट्री शॉपिंग के लिए: lat, lng, radius_m (50 से 50,000) और वैकल्पिक address |
फ़िलहाल जिन श्रेणियों में आपको फ़ाइलें अपलोड करनी होती हैं (जैसे ऑडियो ट्रांसक्रिप्शन या इमेज टैगिंग), वीडियो टास्क और उदाहरण इमेज वाले कैंपेन सिर्फ़ डैशबोर्ड में बनाए जा सकते हैं। कीमत कैसे निकलती है, यह लागत और फ़ीस गाइड में बताया गया है।
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
}
}'जवाब · 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
}
}एरर का उदाहरण
// status 402
{
"success": false,
"error": {
"code": "insufficient_balance",
"message": "Insufficient balance"
}
}सबमिशन पाएँ
GET/api/v1/campaigns/{id}/submissions
किसी एक कैंपेन के लिए वर्कर्स का भेजा काम, सबसे पुराने पहले, उनके प्रमाण के साथ: टेक्स्ट जवाब, इमेज और वीडियो के लिंक, टेम्पलेट के जवाब (answers), वह डेटा पंक्ति जिस पर उन्होंने काम किया और फ़ील्ड टास्क में उनकी लोकेशन।
पते (URL) में
| पैरामीटर | विवरण |
|---|---|
id ज़रूरी | कैंपेन ID (कैंपेन सूची में id) |
क्वेरी पैरामीटर
| पैरामीटर | विवरण |
|---|---|
status | to_review (pending और resubmitted), pending, resubmitted, revision_requested, approved या rejected |
since | सिर्फ़ इस समय या इसके बाद भेजे गए सबमिशन, जैसे 2026-10-01T00:00:00Z |
after_id | पेज बदलने के लिए: सिर्फ़ इससे बड़ी id वाले सबमिशन। पिछले पेज का next_after_id इस्तेमाल करें |
limit | कितने लौटाने हैं, 1 से 100 (डिफ़ॉल्ट 50) |
नया काम नियमित रूप से जुटाने के लिए, आखिरी मिली id सेव रखें और अगली बार उसे after_id के रूप में भेजें। raw में वह सब होता है जो वर्कर ने भेजा, अगर आपको कुछ ऐसा चाहिए जो सूची में नहीं है।
curl "https://taskerdata.com/api/v1/campaigns/CAMPAIGN_ID/submissions?status=to_review&after_id=0" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"जवाब · 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
}एरर का उदाहरण
// status 400
{
"success": false,
"error": {
"code": "invalid_status",
"message": "status must be one of: to_review, pending, resubmitted, revision_requested, approved, rejected."
}
}सबमिशन की समीक्षा करें
POST/api/v1/submissions/{id}/review
स्वीकार करें, अस्वीकार करें या संशोधन माँगें, बिल्कुल डैशबोर्ड के बटनों की तरह। स्वीकार करने पर वर्कर को रिज़र्व पैसे से भुगतान होता है। अस्वीकार करने पर भुगतान और उसकी फ़ीस आपके बैलेंस में वापस आती है और पोज़िशन किसी दूसरे वर्कर के लिए खुल जाती है।
पते (URL) में
| पैरामीटर | विवरण |
|---|---|
id ज़रूरी | सबमिशन ID |
JSON बॉडी
| पैरामीटर | विवरण |
|---|---|
action ज़रूरी | approve, reject या revision |
reason | reject के साथ: वह कारण जो वर्कर को दिखता है |
note | revision के साथ (ज़रूरी): वर्कर को क्या ठीक करना है |
आप किसी सबमिशन की समीक्षा तभी कर सकते हैं जब वह समीक्षा के इंतज़ार में हो (pending या resubmitted)। संशोधन कैंपेन की संशोधन सीमा तक ही माँगे जा सकते हैं; उसके बाद आप सिर्फ़ स्वीकार या अस्वीकार कर सकते हैं।
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."
}'जवाब · 200
{
"success": true,
"submission": {
"id": 1842,
"status": "revision_requested"
},
"balance": {
"available": 65.94,
"reserved": 34.06
}
}एरर का उदाहरण
// status 409
{
"success": false,
"error": {
"code": "already_reviewed",
"message": "Submission already reviewed"
}
}अपना बैलेंस देखें
GET/api/v1/balance
available वह रकम है जो आप नए कैंपेन पर खर्च कर सकते हैं, reserved लाइव कैंपेन के लिए रोकी गई रकम है, और spent वह है जो आप अब तक वर्कर्स को दे चुके हैं।
curl "https://taskerdata.com/api/v1/balance" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"जवाब · 200
{
"success": true,
"balance": {
"available": 65.94,
"reserved": 34.06,
"spent": 212.4
}
}विकल्प और ID
GET/api/v1/options
वे श्रेणियाँ दिखाता है जिन्हें आप API से इस्तेमाल कर सकते हैं (needs_url और needs_location बताते हैं कि किनमें लिंक या लोकेशन चाहिए), टारगेटिंग और ड्रिप फ़ीड की मान्य वैल्यू, और आपके टेम्पलेट, वर्कर ग्रुप और क्वालिफ़िकेशन टेस्ट की ID।
curl "https://taskerdata.com/api/v1/options" \
-H "Authorization: Bearer $TASKERDATA_API_KEY"जवाब · 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"
}
]
}एरर
Campaign API HTTP status कोड इस्तेमाल करता है। कुछ गलत होने पर success false होता है और error में एक code होता है जिसे आपका कोड जाँच सके, और एक message जिसे दिखाया या लॉग किया जा सके। कैंपेन की जाँच में वही मैसेज आते हैं जो डैशबोर्ड में।
| Status | error.code | इसका मतलब |
|---|---|---|
| 400 | invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_required | रिक्वेस्ट में कुछ छूटा है या उसकी अनुमति नहीं है। message में बताया गया है कि क्या। |
| 401 | missing_api_key, invalid_api_key | API key नहीं भेजी गई, या key गलत है या उसकी जगह नई key बन चुकी है। |
| 402 | insufficient_balance | आपका उपलब्ध बैलेंस कैंपेन के लिए काफ़ी नहीं है। फ़ंड जोड़ें और फिर कोशिश करें। |
| 403 | test_key_not_allowed, account_suspended | अपनी लाइव API key इस्तेमाल करें। सस्पेंड अकाउंट API का इस्तेमाल नहीं कर सकता। |
| 404 | not_found | आपके अकाउंट में इस ID का कोई कैंपेन या सबमिशन नहीं है। |
| 409 | already_reviewed, review_refused | सबमिशन की समीक्षा पहले ही हो चुकी है, या अभी समीक्षा नहीं हो सकती, जैसे संशोधन सीमा पूरी हो जाने पर। |
| 429 | rate_limited | एक मिनट में 120 से ज़्यादा रिक्वेस्ट। Retry-After में बताए गए सेकंड तक रुकें। |
| 500 | internal_error | हमारी तरफ़ कोई समस्या है। फिर से कोशिश करें, और अगर ऐसा होता रहे तो सपोर्ट से संपर्क करें। |
बाहरी क्वालिफ़िकेशन टेस्ट
उन क्वालिफ़िकेशन टेस्ट के लिए जो आपकी अपनी वेबसाइट पर चलते हैं।
टेस्ट का नतीजा भेजें लाइव
GET/api/worker/external_qualification/data
उन क्वालिफ़िकेशन टेस्ट के लिए जो बाहरी (external) के रूप में मार्क हैं। वर्कर क्वालिफ़िकेशन से आपका टेस्ट खोलता है और आपकी वेबसाइट पर अपना worker token डालता है। जब वह टेस्ट पूरा कर ले, तो approve या reject के साथ इस endpoint को कॉल करें।
| पैरामीटर | विवरण |
|---|---|
qualification_id ज़रूरी | आपके क्वालिफ़िकेशन टेस्ट की ID |
worker_token ज़रूरी | वह worker token जो वर्कर ने आपकी वेबसाइट पर डाला |
api_token ज़रूरी | आपकी API key (टेस्ट endpoint के लिए test key) |
decision ज़रूरी | approve या reject |
अगर टेस्ट पास करने पर बोनस मिलता है और आपका रिक्वेस्टर बैलेंस उसके लिए काफ़ी नहीं है, तो सबमिशन लंबित के रूप में सेव हो जाता है, ताकि आप बैलेंस टॉप अप करके डैशबोर्ड में उसे स्वीकार कर सकें।
हर टेस्ट में एक वर्कर का मूल्यांकन एक ही बार हो सकता है। टेस्ट एक्टिव होना चाहिए और बाहरी के रूप में मार्क होना चाहिए, और API key टेस्ट के मालिक की होनी चाहिए।
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"जवाब · 200
{
"success": true
}एरर का उदाहरण
{
"success": false,
"error": "This worker has already been evaluated for this qualification"
}अपना सेटअप जाँचें
POST/api/worker/external_qualification/data_test
यही फ़ील्ड JSON के रूप में अपनी test API key के साथ टेस्ट endpoint पर भेजें। कुछ भी सेव नहीं होता और किसी वर्कर पर असर नहीं पड़ता: यह सिर्फ़ आपकी रिक्वेस्ट जाँचता है।
| पैरामीटर | विवरण |
|---|---|
qualification_id ज़रूरी | आपके क्वालिफ़िकेशन टेस्ट की ID |
worker_token ज़रूरी | वह worker token जो वर्कर ने आपकी वेबसाइट पर डाला |
api_token ज़रूरी | आपकी API key (टेस्ट endpoint के लिए test key) |
decision ज़रूरी | approve या reject |
गलत test key पर status 401 मिलता है; फ़ील्ड छूटने या गलत decision पर 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"
}'जवाब · 200
{
"success": true
}एरर का उदाहरण
// status 401
{
"statusCode": 401,
"statusMessage": "Invalid API test key"
}टेस्ट नतीजे के एरर
नतीजे वाला endpoint हमेशा status 200 के साथ जवाब देता है। success देखें: अगर यह false है, तो error में कारण लिखा होता है:
| error | इसका मतलब |
|---|---|
Missing required parameters: qualification_id, worker_token, api_token, decision | चार पैरामीटर में से कोई एक नहीं भेजा गया। |
Decision must be 'approve' or 'reject' | decision में कोई और वैल्यू है। |
Invalid API token | API key गलत है या उसकी जगह नई key बन चुकी है। |
Worker token not found for this qualification | यह token इस टेस्ट का नहीं है। वर्कर से इसे जाँचने को कहें। |
API token does not belong to the qualification owner | उसी अकाउंट की key इस्तेमाल करें जिसने टेस्ट बनाया है। |
This qualification is not configured for external submissions | टेस्ट बाहरी के रूप में मार्क नहीं है। |
This qualification is no longer active | टेस्ट रुका हुआ है या खत्म हो चुका है। |
This worker has already been evaluated for this qualification | हर वर्कर को एक टेस्ट में एक ही नतीजा मिलता है। |
Worker account is suspended | वर्कर अभी टेस्ट नहीं दे सकता। |
No remaining positions for this qualification | टेस्ट की सारी जगहें भर चुकी हैं। |