ドキュメント開発者向け

TaskerData API

自分のコードからキャンペーンを作成し、ワーカーの提出を集めて確認したり、外部資格テストを連携したりできます。すべてのリクエストはAPIキーで認証されます。

概要

キャンペーンAPIを使うと、依頼者ダッシュボードで行う操作をコードから実行できます: キャンペーンの作成、進行状況の確認、証拠付きの提出のダウンロード、承認・却下。外部資格テストのエンドポイントを使うと、自分のウェブサイト上のテストから、各ワーカーが合格したかどうかをTaskerDataに伝えられます。

すべてのリクエストはHTTPSで https://taskerdata.com に送信します。送受信はJSONで行います。

APIで作成したキャンペーンは、ダッシュボードと同じ費用で、同じルールに従います。公開前にTaskerDataが審査し(信頼できる依頼者はすぐに公開されます)、お金の確保と支払いも同じように行われます。

認証

依頼者ダッシュボードを開き、「API」に移動します。そこに2つのキーがあります:

  • APIキー: 本番のリクエスト用です。キャンペーンAPIはAuthorizationヘッダーから読み取ります。資格テストのエンドポイントでは api_token として受け取ります。
  • テスト用APIキー: 資格テストのテスト用エンドポイント専用です。実際のワーカーに影響を与えずに連携を試せます。

新しいキーを生成すると古いキーはすぐに置き換わるので、そのときはバックエンドを更新してください。新しいキーは1時間に3つまで生成できます。

重要: APIキーは秘密にしてください。サーバー上でのみ使い、訪問者が開けるウェブページやアプリでは絶対に使わないでください。

キャンペーンAPIのリクエストには毎回APIキーを付けて送信します:

Authorization: Bearer YOUR_API_KEY

キャンペーンAPIのリクエストは1分あたり120回までです。残り回数はX-RateLimit-Remainingヘッダーで確認できます。上限を超えるとステータス429が返され、Retry-Afterヘッダーに待つべき秒数が示されます。

キャンペーン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}

1つのキャンペーンの設定と、確認待ち、修正待ち、承認済み、却下の提出の数を返します。キャンペーンの進行状況の確認に使います。

アドレス内

パラメータ説明
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 スクリーンショットや写真を求める: 画像ごとに説明を1つ
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 を自分のワーカーグループのいずれかに設定すると、そのグループだけにタスクを送ります
qualification_id この資格テストに合格したワーカーだけがタスクに参加できます
template 指示の代わりに自分のテンプレートを使います: id と、プレースホルダーを埋める columns と rows を持つ data(1行が1タスク)。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

1つのキャンペーンでワーカーが送った作業を古い順に、証拠とともに返します: テキストの回答、画像や動画へのリンク、テンプレートへの回答(answers)、作業したデータ行、現地タスクの場合はその位置。

アドレス内

パラメータ説明
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

ダッシュボードのボタンと同じように、承認、却下、修正依頼を行います。承認すると、確保されたお金からワーカーに支払われます。却下すると、報酬と手数料が残高に戻り、募集枠が他のワーカーのために空きます。

アドレス内

パラメータ説明
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"
    }
  ]
}

エラー

キャンペーンAPIはHTTPステータスコードを使います。問題が起きると success が false になり、error にはコードで判定するための code と、表示やログ用の message が入ります。キャンペーンのチェックには、ダッシュボードと同じメッセージが使われます。

ステータスerror.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キーがないか、キーが間違っているか、新しいキーに置き換えられています。
402insufficient_balance利用可能残高がキャンペーンの費用に足りません。残高をチャージしてもう一度お試しください。
403test_key_not_allowed, account_suspended本番用のAPIキーを使ってください。停止中のアカウントはAPIを使えません。
404not_foundあなたのアカウントに、そのIDのキャンペーンまたは提出はありません。
409already_reviewed, review_refused提出はすでに確認済みか、修正回数の上限に達したなどの理由で、現在は確認できません。
429rate_limited1分間に120回を超えるリクエストがありました。Retry-After に示された秒数だけ待ってください。
500internal_error当社側の問題です。もう一度お試しください。問題が続く場合はサポートにお問い合わせください。

外部資格テスト

自分のウェブサイトで実施する資格テスト用です。

テスト結果の報告 本番

GET/api/worker/external_qualification/data

外部として設定された資格テスト用です。ワーカーは資格テストからあなたのテストを開き、あなたのウェブサイトでワーカートークンを入力します。完了したら、approve または reject を付けてこのエンドポイントを呼び出します。

パラメータ説明
qualification_id 必須資格テストのID
worker_token 必須ワーカーがあなたのウェブサイトで入力したワーカートークン
api_token 必須あなたのAPIキー(テスト用エンドポイントではテスト用キー)
decision 必須approve または reject

合格時にボーナスを支払うテストで依頼者残高が足りない場合、提出は保留として保存されるので、残高をチャージしてダッシュボードで承認できます。

ワーカーの評価はテストごとに1回です。テストが有効で外部として設定されている必要があり、APIキーはテストの所有者のものでなければなりません。

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

テスト用APIキーを使い、同じ項目をJSONでテスト用エンドポイントに送信します。何も保存されず、ワーカーにも影響しません。リクエストを確認するだけです。

パラメータ説明
qualification_id 必須資格テストのID
worker_token 必須ワーカーがあなたのウェブサイトで入力したワーカートークン
api_token 必須あなたのAPIキー(テスト用エンドポイントではテスト用キー)
decision 必須approve または reject

テスト用キーが間違っているとステータス401が、項目の不足やdecisionの誤りはステータス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"
}

テスト結果のエラー

結果のエンドポイントは常にステータス200で応答します。success を確認し、false の場合は error に理由が示されます:

error意味
Missing required parameters: qualification_id, worker_token, api_token, decision4つのパラメータのいずれかがありません。
Decision must be 'approve' or 'reject'decision に別の値が入っています。
Invalid API tokenAPIキーが間違っているか、新しいキーに置き換えられています。
Worker token not found for this qualificationトークンがこのテストのものではありません。ワーカーに確認してもらってください。
API token does not belong to the qualification ownerテストを作成したアカウントのキーを使ってください。
This qualification is not configured for external submissionsテストが外部として設定されていません。
This qualification is no longer activeテストが一時停止中か終了しています。
This worker has already been evaluated for this qualification各ワーカーの結果はテストごとに1つです。
Worker account is suspendedこのワーカーは現在テストを受けられません。
No remaining positions for this qualificationテストの枠がすべて埋まっています。