डॉक्सडेवलपर

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 जिसे दिखाया या लॉग किया जा सके। कैंपेन की जाँच में वही मैसेज आते हैं जो डैशबोर्ड में।

Statuserror.codeइसका मतलब
400invalid_body, invalid_campaign, invalid_region, category_needs_files, invalid_status, invalid_since, invalid_action, note_requiredरिक्वेस्ट में कुछ छूटा है या उसकी अनुमति नहीं है। message में बताया गया है कि क्या।
401missing_api_key, invalid_api_keyAPI key नहीं भेजी गई, या key गलत है या उसकी जगह नई key बन चुकी है।
402insufficient_balanceआपका उपलब्ध बैलेंस कैंपेन के लिए काफ़ी नहीं है। फ़ंड जोड़ें और फिर कोशिश करें।
403test_key_not_allowed, account_suspendedअपनी लाइव API key इस्तेमाल करें। सस्पेंड अकाउंट API का इस्तेमाल नहीं कर सकता।
404not_foundआपके अकाउंट में इस ID का कोई कैंपेन या सबमिशन नहीं है।
409already_reviewed, review_refusedसबमिशन की समीक्षा पहले ही हो चुकी है, या अभी समीक्षा नहीं हो सकती, जैसे संशोधन सीमा पूरी हो जाने पर।
429rate_limitedएक मिनट में 120 से ज़्यादा रिक्वेस्ट। Retry-After में बताए गए सेकंड तक रुकें।
500internal_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 tokenAPI 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टेस्ट की सारी जगहें भर चुकी हैं।