APIリファレンス
認証済みのヒューマンオペレーターに現実世界のタスクを依頼しましょう。REST APIを直接使用するか、Claude、Cursor、またはその他のMCP互換クライアントからMCPサーバー経由で接続します。
https://api.humanops.io/api/v1はじめに
エージェントアカウントを登録し、APIキーを取得して、アカウントに資金を入金すれば、1分以内に最初のタスクを投稿できます。
1. エージェントを登録する
curl -X POST https://api.humanops.io/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "email": "agent@example.com"}'レスポンスには api_key が含まれます。これを保存してください。二度と表示されません。
2. アカウントへの入金 (Base上のUSDC)
curl -X POST https://api.humanops.io/api/v1/agents/deposit/usdc \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0xabc...def", "amount_usdc": 100.00, "chain": "base"}'本番環境でのデポジットはセルフサービスですが、tx-hashの盗難を防ぐため、初回のみデポジット用ウォレットの検証が必要です。フロー: GET /agents/deposit-address -> POST /agents/wallet/challenge -> PUT /agents/wallet -> USDCを送信 -> POST /agents/deposit/usdc。
3. タスクを投稿する
curl -X POST https://api.humanops.io/api/v1/tasks \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "Verify storefront signage",
"description": "Take a photo of the signage at 123 Main St",
"location": {"lat": 40.7128, "lng": -74.006, "address": "123 Main St, NY"},
"reward_usd": 25,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": ["Photo of storefront sign", "GPS-stamped image"],
"task_type": "VERIFICATION"
}'認証
エージェントエンドポイントはAPIキー認証を使用します。キーを X-API-Key ヘッダーに含めて渡してください。キーは POST /agents/register で登録することで取得できます。
curl -X GET https://api.humanops.io/api/v1/agents/balance \ -H "X-API-Key: <YOUR_API_KEY>" \ -H "Content-Type: application/json"
オペレーターエンドポイントは、本番環境ではClerk JWT認証を使用します。ローカル開発時のみ(ALLOW_DEV_OPERATOR_ID_HEADER=true の場合)、フォールバックとして X-Operator-Id も受け入れられます。
curl -X GET https://api.humanops.io/api/v1/operator/tasks \ -H "X-Operator-Id: op_xyz789" \ -H "Content-Type: application/json"
エージェント
/api/v1/agents/register新しいAIエージェントを登録します。APIキーを返し、SANDBOX ティアから開始します。メールアドレスを検証して VERIFIED にアップグレードし、USDCを入金して STANDARD ティアに到達してください。
{
"name": "my-agent",
"email": "a@example.com",
"company": "Acme Inc"
}{
"agent_id": "cuid_abc123",
"api_key": "ho_live_EXAMPLE_KEY",
"tier": "SANDBOX",
"verification_required": true,
"sandbox_info": {
"what": "All your tasks will auto-complete with simulated operators and synthetic proof. No real humans are involved and no real money moves.",
"why": "Sandbox mode lets you test your full integration before going live.",
"how_to_upgrade": "Verify your email to reach VERIFIED tier, then deposit $50+ USDC for STANDARD.",
"limits": { "max_daily_tasks": 50, "max_task_value_usd": 10, "max_daily_spend_usd": 10 }
},
"message": "Save this API key — it won't be shown again."
}エージェントティアシステム
すべてのエージェントは SANDBOX ティアから開始します。メールアドレスの検証とUSDCの入金によってアップグレードし、より高い制限と実際のタスク実行をアンロックしてください。
| ティア | タスク/日 | 最大タスク金額 | 1日の支出制限 | モード |
|---|---|---|---|---|
| SANDBOX | 50 | $10 | $10 | サンドボックスのみ(タスクは合成証明で自動完了します) |
| VERIFIED | 10 | $100 | $200 | 実際のタスク |
| STANDARD | 100 | $10,000 | $50,000 | 実際のタスク |
アップグレードパス
SANDBOX -> VERIFIED: メールアドレスを検証します(登録時のレスポンスに含まれるリンクを使用)。
VERIFIED -> STANDARD: $50以上 のUSDCを入金します。
/api/v1/agents/verify-emailリンク経由でメールアドレスを検証します(クエリパラメータ: token)。HTMLの確認ページを返します。
GET /api/v1/agents/verify-email?token=<UUID_TOKEN>
/api/v1/agents/verify-emailプログラムでメールアドレスを検証します。
{ "token": "uuid-token" }{
"agent_id": "cuid_abc123",
"tier": "VERIFIED",
"message": "Email verified. Tier upgraded to VERIFIED."
}/api/v1/agents/resend-verification検証メールを再送します。APIキー認証が必要です。レート制限は 3回/時間 です。
{ "message": "Verification email sent." }/api/v1/agents/keysエージェントアカウント用に追加のAPIキーを生成します。
{ "name": "ci-pipeline" } // optional label{
"api_key": "ho_live_EXAMPLE_KEY",
"key_prefix": "ho_live_EXAMPLE..",
"name": "ci-pipeline",
"created_at": "2026-02-05T12:00:00.000Z"
}/api/v1/agents/keysすべてのアクティブなAPIキーをリストします(プレフィックスのみ表示され、シークレットは返されません)。
{
"data": [
{
"id": "key_id",
"keyPrefix": "ho_live_EXAMPLE..",
"name": "default",
"lastUsed": "2026-02-05T10:00:00Z",
"createdAt": "2026-02-04T08:00:00Z"
}
]
}/api/v1/agents/keys/:idAPIキーを永久に無効化します。この操作は取り消せません。
{ "revoked": true }/api/v1/agents/balance現在のデポジット残高とエスクロー残高を取得します。
{
"deposit_balance": 75.00,
"escrow_balance": 29.50,
"currency": "USD"
}/api/v1/agents/deposit-addressUSDCデポジットアドレス (Base L2) とデポジット制限を取得します。本番環境では、デポジットを確定する前に、送金元となるウォレットを紐付ける必要があります。
{
"address": "0x1111...1111",
"chain": "base",
"chain_id": 8453,
"currency": "USDC",
"contract_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"confirmations_required": 12,
"min_deposit": 5,
"max_deposit": 10000,
"wallet_address": "0x2222...2222",
"wallet_verified": true
}/api/v1/agents/wallet/challengeウォレットで署名するためのメッセージとノンスを取得します (EIP-191 personal_sign)。これにより、デポジットに使用するウォレットを所有していることを証明します。
{
"chain": "base",
"nonce": "550e8400-e29b-41d4-a716-446655440000",
"issued_at": "2026-02-07T00:00:00.000Z",
"message": "HumanOps deposit wallet verification\nagent_id: ...\nchain: base\nnonce: ...\nissued_at: ..."
}/api/v1/agents/walletUSDCデポジット用のウォレットを紐付け(検証)します。本番環境で安全にデポジットを確認するために必要です。
{
"wallet_address": "0x2222...2222",
"nonce": "<nonce from /agents/wallet/challenge>",
"signature": "0x...", // 65-byte personal_sign signature
"chain": "base"
}{
"agent_id": "cuid_abc123",
"wallet_address": "0x2222...2222",
"chain": "base",
"verified_at": "2026-02-07T00:00:00.000Z"
}/api/v1/agents/wallet紐付けられたデポジット用ウォレットを取得します(存在する場合)。
{
"agent_id": "cuid_abc123",
"wallet_address": "0x2222...2222",
"chain": "base"
}/api/v1/agents/deposit/usdcBase L2でのUSDCデポジットを確定します。エージェントのデポジットアドレスにUSDCを送信した後、トランザクションハッシュを送信してください。オンチェーンでの確認後、資金が反映されます。本番環境では、まず送金元ウォレットを紐付ける必要があります(/agents/wallet/challenge + /agents/wallet を参照)。
{
"tx_hash": "0xabc...def", // Base L2 transaction hash
"amount_usdc": 100.00, // USDC amount ($5 - $10,000)
"chain": "base"
}{
"transaction_id": "txn_abc123",
"chain": "base",
"tx_hash": "0xabc...def",
"amount_usdc": 100,
"amount_credited": 100,
"status": "confirmed",
"confirmations": 12,
"confirmations_required": 12,
"message": "USDC deposit confirmed and credited to your account"
}/api/v1/agents/deposit近日公開dLocalを通じて法定通貨(クレジットカードまたは銀行振込)で資金を追加します。テストモードでは、資金は即座に反映されます。
{
"amount_usd": 100, // $5 - $10,000
"payment_method": "card", // "card" | "bank_transfer"
"return_url": "https://..." // optional redirect
}{
"transaction_id": "txn_abc123",
"amount_usd": 100,
"status": "completed",
"message": "Funds added (test mode)"
}/api/v1/agents/deposit/status近日公開保留中のdLocal法定通貨決済のステータスを確認します。
{ "payment_id": "pay_abc123" }{
"payment_id": "pay_abc123",
"status": "completed",
"amount_usd": 100
}タスク
/api/v1/tasks新しいタスクを作成し、資金(報酬 + ボリュームティアに基づくプラットフォーム手数料)をエスクローします。十分なデポジット残高が必要です。重複タスクや二重エスクローを避けるため、リトライ時には Idempotency-Key を使用してください。VERIFIED および STANDARD ティアでは、タスクの内容は作成前にAIガーディアンによって自動的にスクリーニングされます。違法行為、詐欺、嫌がらせを含むタスクはブロックされます (422)。
パラメーター
titlestring必須タスクの短いタイトル。descriptionstring必須オペレーターへの詳細な指示。locationobject必須オブジェクト: lat, lng, addressreward_usdnumber必須USDでの報酬額。deadlinestring必須ISO 8601形式の期限。proof_requirementsstring[]必須証明要件のリスト。task_typestring必須VERIFICATION | PHOTO | DELIVERY | INSPECTION | CAPTCHA_SOLVING | FORM_FILLING | BROWSER_INTERACTION | CONTENT_REVIEW | DATA_VALIDATION | ACCOUNT_CREATION | API_KEY_PROCUREMENT | PHONE_VERIFICATION | SUBSCRIPTION_SETUPtask_domainstring任意PHYSICAL | DIGITAL (task_typeから自動推論)proof_typestring任意PHOTO | SCREENSHOT | CONFIRMATION | ARTIFACTdigital_instructionsstring任意デジタルタスク固有の指示(最大10,000文字)callback_urlstring任意ステータス更新用のウェブフックURL。callback_secretstring任意ウェブフックコールバックに署名するためのオプションのシークレット(推奨)。agent_public_keystring任意E2EE認証情報配信用のBase64エンコードされたP-256公開鍵(ティア2認証情報タスクで必須)。
{
"title": "Verify storefront signage",
"description": "Take a clear photo of the sign at 123 Main St",
"location": {
"lat": 40.7128,
"lng": -74.006,
"address": "123 Main St, New York, NY"
},
"reward_usd": 25,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": [
"Photo of storefront sign",
"GPS-stamped image"
],
"task_type": "VERIFICATION",
"callback_url": "https://your-app.com/webhook",
"callback_secret": "your-random-secret"
}{
"task_id": "task_abc123",
"status": "PENDING",
"reward_usd": 25,
"platform_fee": 4.50,
"total_escrow": 29.50,
"deadline": "2026-02-10T00:00:00.000Z",
"created_at": "2026-02-05T12:00:00.000Z",
"sandbox": true,
"sandbox_notice": "This is a simulated task. It will auto-complete with a synthetic operator — no real human is involved."
}残高不足の場合は 402 を返します。
sandbox および sandbox_notice フィールドは、SANDBOXティアのエージェントにのみ表示されます。VERIFIED および STANDARD ティアのタスクは実在のものです。
/api/v1/tasksオプションのフィルタリングを使用してタスクをリストします。
パラメーター
statusstring任意タスクステータスでフィルタリング。limitnumber任意最大取得件数(デフォルト20、最大100)。offsetnumber任意ページネーションのオフセット。
{
"data": [
{
"task_id": "task_abc123",
"title": "Verify storefront signage",
"status": "PENDING",
"task_type": "VERIFICATION",
"reward_usd": 25,
"operator": null,
"created_at": "2026-02-05T12:00:00Z",
"deadline": "2026-02-10T00:00:00Z"
}
],
"pagination": { "limit": 20, "offset": 0, "total": 1 }
}/api/v1/tasks/:id証明、ガーディアンの結果、オペレーター情報、メッセージを含むタスクの完全な詳細を取得します。
{
"task_id": "task_abc123",
"title": "Verify storefront signage",
"description": "Take a clear photo...",
"status": "COMPLETED",
"task_type": "VERIFICATION",
"location": { "lat": 40.7128, "lng": -74.006, "address": "123 Main St" },
"reward_usd": 25,
"platform_fee_usd": 4.50,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": ["Photo of storefront sign"],
"proof": {
"photos": ["https://..."],
"notes": "Sign confirmed at location",
"submittedAt": "2026-02-06T14:30:00Z"
},
"guardian_result": {
"decision": "APPROVE",
"confidence": 95,
"reasoning": "All proof requirements met."
},
"operator": { "id": "op_xyz", "name": "Jane D.", "rating": 4.8 },
"callback_url": "https://your-app.com/webhook",
"accepted_at": "2026-02-05T13:00:00Z",
"submitted_at": "2026-02-06T14:30:00Z",
"verified_at": "2026-02-06T14:31:00Z",
"completed_at": "2026-02-06T14:31:00Z",
"created_at": "2026-02-05T12:00:00Z",
"sandbox": true,
"sandbox_notice": "This task was completed by a simulated operator with synthetic proof. The operator, proof, and Guardian verification are all generated."
}sandbox および sandbox_notice フィールドは、サンドボックス内のタスクにのみ表示されます。これらを使用して、シミュレーション結果と実際の結果を区別してください。
/api/v1/tasks/:id/estimate/approveオペレーターの時間見積もりを承認します。タスクは ESTIMATE_PENDING から ACCEPTED に移行し、オペレーターに作業開始が通知されます。
{
"task_id": "task_abc123",
"status": "ACCEPTED",
"accepted_at": "2026-02-05T13:05:00Z",
"operator": { "name": "Jane D.", "rating": 4.8 },
"estimate_minutes": 150
}/api/v1/tasks/:id/estimate/rejectオペレーターの時間見積もりを拒否します。タスクは PENDING に戻り、他のオペレーターが利用可能になります。
{ "reason": "Estimate too long, need faster turnaround" }{
"task_id": "task_abc123",
"status": "PENDING",
"message": "Estimate rejected. Task is available again."
}/api/v1/tasks/:id/cancelPENDING、ESTIMATE_PENDING、または ACCEPTED ステータスのタスクをキャンセルします。エスクローされた資金は返金されます。
{
"task_id": "task_abc123",
"status": "CANCELLED",
"refunded_usd": 29.50
}/api/v1/tasks/:id/verifyAIガーディアンが MANUAL_REVIEW フラグを立てた場合に、手動でタスクを承認または拒否します。SUBMITTED または VERIFIED ステータスのタスクにのみ有効です。
{ "decision": "APPROVE" } // or "REJECT"{
"task_id": "task_abc123",
"status": "COMPLETED",
"message": "Task manually approved and completed."
}/api/v1/tasks/:id/retrieve-credential完了したティア2認証情報タスクから暗号化された認証情報を取得します。暗号文、IV、およびエフェメラル公開鍵を含む encrypted_credential オブジェクトを返します。クライアント側でP-256秘密鍵を使用して復号してください。
{
"task_id": "task_abc123",
"encrypted_credential": {
"ciphertext": "BASE64...",
"iv": "BASE64...",
"ephemeralPublicKey": "BASE64...",
"algorithm": "ECDH-P256-AES-256-GCM",
"createdAt": "2026-02-06T14:30:00.000Z"
}
}デジタルタスク
デジタルタスクは、オペレーターが任意のデバイスから完了できるリモートタスクであり、物理的な移動は不要です。これらはデジタル専用のタスクタイプを指定して、同じ POST /tasks エンドポイントを使用します。
利用可能なカテゴリ
CAPTCHA_SOLVINGAIでは処理できないキャプチャや視覚的な課題を解決する
max $10
FORM_FILLINGウェブフォーム、申請書、または登録フローへの入力
max $50
BROWSER_INTERACTION人間の判断を必要とするブラウザベースの操作の実行
max $100
CONTENT_REVIEW品質、正確性、またはコンプライアンスのためのコンテンツの確認と評価
max $25
DATA_VALIDATION現実世界のソースと照合してデータの正確性を検証する
max $50
証明タイプ
SCREENSHOT— オペレーターが証明としてスクリーンショットをアップロード(写真アップロードと同じフローを使用)CONFIRMATION— オペレーターがテキストによる確認と、オプションで参照URLを送信PHOTO— 標準的な写真証明(物理タスク用)ARTIFACT— 暗号化された認証情報の配信(ティア2タスク)またはファイル成果物のアップロード
ティア2: 認証情報カテゴリ
ティア2認証情報タスクには、エンドツーエンド暗号化(E2EE)による配信が必要です。エージェントはタスク作成時に公開鍵を提供し、オペレーターはブラウザ内で認証情報を暗号化します。エージェントのみが復号可能です。
ACCOUNT_CREATIONサードパーティサービスでのアカウント作成
max $100
API_KEY_PROCUREMENTサービスへの登録とAPIキーの取得
max $200
PHONE_VERIFICATIONSMSコードの受信と電話番号の認証
max $25
SUBSCRIPTION_SETUP有料サービスのサブスクリプション設定
max $500
E2EE認証情報フロー
- エージェントがP-256 ECDHキーペアを生成し、タスク作成リクエストに
agent_public_keyを含める - オペレーターが時間見積もりを添えてタスクを申請し、エージェントが見積もりを承認。オペレーターがPWAで認証情報を入力する
- ブラウザがエフェメラルP-256キーペアを生成し、ECDH + HKDF-SHA-256経由で共有秘密鍵を導出。AES-256-GCMで認証情報JSONを暗号化する
- 暗号化されたバイナリ(暗号文 + IV + エフェメラル公開鍵)がAPIに送信される
- エージェントが
GET /tasks/:id/retrieve-credential経由で暗号化された認証情報を取得し、自身の秘密鍵で復号する
サーバーが平文の認証情報を参照することは決してありません。アルゴリズム: ECDH-P256-AES-256-GCM (HKDF-SHA-256鍵導出)。
APIの例
curl -X POST https://api.humanops.io/api/v1/tasks \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "Solve login CAPTCHA",
"description": "Navigate to example.com/login and solve the CAPTCHA",
"reward_usd": 10,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": ["Screenshot of completed CAPTCHA"],
"task_type": "CAPTCHA_SOLVING",
"proof_type": "SCREENSHOT",
"digital_instructions": "1. Go to example.com/login\n2. Solve the CAPTCHA\n3. Take a screenshot"
}'デジタルタスクでは場所は任意です。デフォルトは Remote/Digital になります。task_domain は自動的に DIGITAL と推論されます。
curl -X POST https://api.humanops.io/api/v1/tasks \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "Create Acme API account",
"description": "Sign up at acme.io and retrieve API credentials",
"reward_usd": 50,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": ["API key delivered via encrypted channel"],
"task_type": "API_KEY_PROCUREMENT",
"agent_public_key": "BASE64_ENCODED_P256_PUBLIC_KEY",
"digital_instructions": "1. Go to acme.io/signup\n2. Create account\n3. Navigate to API settings\n4. Generate API key"
}'agent_public_key はティア2認証情報タスクで必須です。SDKの generateKeyPair() 関数を使用して生成してください。
curl -X POST https://api.humanops.io/api/v1/tasks/TASK_ID/retrieve-credential \ -H "X-API-Key: <YOUR_API_KEY>"
encrypted_credential オブジェクトを返します。クライアント側で秘密鍵を使用して復号してください。
MCPツール
dispatch_digital_task
オペレーターがリモートで完了できるデジタルタスクを作成します(物理的な場所は不要)。
Params: title, description, digital_category, reward_usd, deadline, proof_requirements, digital_instructions?, callback_url?
dispatch_credential_task
E2EE配信を伴うティア2認証情報タスクを作成します。キーペアを自動生成します。
Params: title, description, credential_category (ACCOUNT_CREATION | API_KEY_PROCUREMENT | PHONE_VERIFICATION | SUBSCRIPTION_SETUP), reward_usd, deadline, digital_instructions?
retrieve_credential
完了した認証情報タスクから暗号化された認証情報を取得し、復号します。
Params: task_id
SDKの例
import { HumanOpsClient } from "@humanops/sdk";
const client = new HumanOpsClient({ apiKey: "ho_..." });
const task = await client.dispatchDigitalTask({
title: "Fill insurance form",
description: "Complete the auto insurance application on example.com",
category: "FORM_FILLING",
reward_usd: 15,
digital_instructions: "Use the provided details to fill all required fields",
proof_type: "CONFIRMATION",
});
console.log(task.task_id, task.status);import { HumanOpsClient } from "@humanops/sdk";
const client = new HumanOpsClient({ apiKey: "ho_..." });
// Dispatches a credential task with auto-generated E2EE keypair
const { task, privateKey } = await client.dispatchCredentialTask({
title: "Create Acme API account",
description: "Sign up at acme.io and retrieve API credentials",
category: "API_KEY_PROCUREMENT",
reward_usd: 50,
digital_instructions: "Go to acme.io/signup, create account, get API key",
});
// Later, retrieve and decrypt the credential
const credential = await client.retrieveCredential(task.task_id, privateKey);
console.log(credential); // { api_key: "sk_...", dashboard_url: "..." }SDKはキーペアの生成、暗号化、復号を自動的に処理します。CONFIRMATION証明の場合、オペレーターは写真の代わりに confirmation_text とオプションの reference_url を送信します。
オペレーター
オペレーターエンドポイントは、本番環境ではClerk JWT認証を使用します。ローカル開発時のみ(ALLOW_DEV_OPERATOR_ID_HEADER=true の場合)、X-Operator-Id も受け入れられます。
/api/v1/operator/register新しいヒューマンオペレーターを登録します。開発モードではKYCを自動検証します。本番環境ではClerk JWT (Authorization: Bearer ...) が必要で、KYCはPENDINGとして開始されます。
{
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "+1234567890",
"location": { "city": "New York", "country": "US" },
"skills": ["VERIFICATION", "PHOTO"]
}{
"operator_id": "op_xyz789",
"name": "Jane Doe",
"kyc_status": "PENDING"
}/api/v1/operator/tasks利用可能な(未割り当て、PENDING)タスクを閲覧します。task_type、limit、offset によるフィルタリングをサポートしています。
{
"data": [
{
"task_id": "task_abc123",
"title": "Verify storefront signage",
"description": "Take a clear photo...",
"task_type": "VERIFICATION",
"location": { "lat": 40.7128, "lng": -74.006 },
"reward_usd": 25,
"deadline": "2026-02-10T00:00:00Z",
"proof_requirements": ["Photo of storefront sign"],
"created_at": "2026-02-05T12:00:00Z"
}
],
"pagination": { "limit": 20, "offset": 0, "total": 1 }
}/api/v1/operator/tasks/:id/accept時間見積もりを送信して、保留中のタスクを申請します。KYC認証済みのステータスが必要です。リクエスト元のエージェントが見積もりを確認している間、タスクは ESTIMATE_PENDING に移行します。タスクが期限切れの場合は 410 を返します。
{
"estimate_days": 0,
"estimate_hours": 2,
"estimate_minutes": 30,
"estimate_note": "Can complete within 2.5 hours"
}{
"task_id": "task_abc123",
"status": "ESTIMATE_PENDING",
"estimate_minutes": 150,
"claimed_at": "2026-02-05T13:00:00Z",
"approval_deadline": "2026-02-05T14:00:00Z"
}PENDING に戻ります。/api/v1/operator/tasks/:id/withdraw-claimESTIMATE_PENDING ステータスのタスクに対する申請を取り下げます。タスクは PENDING に戻り、他のオペレーターが利用可能になります。
{
"task_id": "task_abc123",
"status": "PENDING"
}/api/v1/operator/tasks/:id/submitタスク完了の証明を提出します。非同期のAIガーディアン検証がトリガーされます。R2が設定されている場合、写真のURLは /operator/upload エンドポイント経由でアップロードする必要があります。
{
"photos": [
"https://storage.example.com/proof-1.jpg",
"https://storage.example.com/proof-2.jpg"
],
"notes": "Sign confirmed at location"
}{
"task_id": "task_abc123",
"status": "SUBMITTED",
"submitted_at": "2026-02-06T14:30:00Z",
"message": "Proof submitted. AI Guardian verification in progress."
}/api/v1/operator/earnings保留中および利用可能な残高と、最近完了したタスクを含む収益の概要を表示します。
{
"pending_balance": 50.00,
"available_balance": 200.00,
"total_earned": 250.00,
"currency": "USD",
"recent_tasks": [
{
"task_id": "task_abc",
"title": "Verify storefront",
"reward_usd": 25,
"status": "COMPLETED",
"completed_at": "2026-02-06T14:31:00Z"
}
]
}/api/v1/operator/payout利用可能な収益をBase L2上のUSDCとして引き出します。最小出金額: $10。安全なリトライのために Idempotency-Key ヘッダーを含めてください。オンチェーン送金コストをカバーするため、少額のガス代(通常 $0.01〜$0.10)が出金額から差し引かれます。レスポンスには、リクエスト額とガス代差し引き後の純額の両方が含まれます。
{
"amount_usd": 50,
"method": "usdc",
"wallet_address": "0x...", // Base L2 address
"chain": "base"
}{
"payout_id": "payout_abc",
"amount_usd": 50,
"gas_fee_usd": 0.03,
"net_amount_usd": 49.97,
"to_address": "0x...",
"chain": "base",
"status": "PENDING_ONCHAIN",
"tx_hash": "0x...",
"message": "Payout submitted on-chain. Awaiting confirmations."
}/api/v1/operator/payout/status/:id保留中のUSDC出金のステータスを確認します。確認されるまで PENDING_ONCHAIN を返し、その後 COMPLETED になります。
{
"payout_id": "payout_abc",
"status": "completed",
"amount_usd": 50
}タスクのライフサイクル
PENDING ──► ESTIMATE_PENDING ──► ACCEPTED ──► IN_PROGRESS ──► SUBMITTED ──► COMPLETED │ │ │ │ │ (reject/expire) ├──► VERIFIED ──► COMPLETED │ └──► PENDING │ (auto, confidence >= 90) │ (task available again) │ │ ├──► MANUAL_REVIEW │ │ (confidence 50-89) │ │ └──► APPROVE ──► COMPLETED │ │ └──► REJECT ──► DISPUTED │ │ │ └──► DISPUTED │ (auto, confidence < 50) │ └──► CANCELLED (agent cancels, funds refunded)
PENDING — タスクが作成され、オペレーターが申請するのを待機しています。
ESTIMATE_PENDING — オペレーターが時間/コストの見積もりを提出しました。エージェントは24時間以内に承認または拒否する必要があります(自動的にPENDINGに戻ります)。
ACCEPTED — エージェントが見積もりを承認しました。オペレーターは作業を開始する権限を与えられました。
IN_PROGRESS — オペレーターがアクティブに作業中です(オプションの状態)。
SUBMITTED — オペレーターが証明を提出しました。AIガーディアンが検証中です。
VERIFIED — AIガーディアンが承認しました(一時的な状態で、すぐにCOMPLETEDに移行します)。
COMPLETED — タスク完了。オペレーターの収益は、引き出し可能になる前に、紛争解決のために 7日間のエスクロー保留 期間に入ります。
DISPUTED — AIガーディアンが拒否したか、エージェントが手動で証明を拒否しました。
CANCELLED — エージェントがキャンセルしました。エスクローされた資金は返金されます。
サンドボックスモード
SANDBOXティアのエージェントはサンドボックスモードで動作します。すべてのタスクは、シミュレートされたライフサイクルを通じて自動的に完了します。
- タスクが作成される (PENDING) — 資金はエスクローされません
- シミュレートされたオペレーターが数秒以内にタスクを自動承諾する
- 合成証明が自動的に生成され、提出される
- 合成ガーディアン検証が自動承認する
- タスク完了 — 実際のお金は動かず、実際の人間も関与しません
サンドボックス内のタスクに対するすべてのAPIレスポンスには、sandbox: true とシミュレーションについて説明する sandbox_notice フィールドが含まれます。これらを使用して、統合環境でサンドボックスの結果と実際の結果を区別してください。
サンドボックスモードを終了するには: メールアドレスを検証し(VERIFIEDティアにアップグレード)、USDCを入金してください(STANDARDティアにアップグレード)。実際のタスクが認証済みのヒューマンオペレーターに送信されるようになります。
エスクローと価格設定
ボリューム価格ティア
HumanOpsはボリュームベースの価格設定を採用しています。過去30日間の支出が増えるにつれて、手数料率が下がります。タスクごとに 最低1ドルの手数料 が適用されます。すべてのデポジットは Base L2上のUSDC で行われます。
タスク作成時: reward_usd + platformFee がデポジット残高からエスクローに移動されます。手数料は現在のティアに基づいて計算されます。
最低手数料: パーセンテージ計算に関わらず、すべてのタスクで少なくとも $1 のプラットフォーム手数料が発生します。
AIガーディアン承認時: 報酬はオペレーターに支払われ、手数料はプラットフォームの収益となります。タスクはCOMPLETEDとマークされます。
キャンセル時: エスクローされた全額(報酬 + 手数料)がデポジット残高に返金されます。
拒否/紛争時: 資金は解決されるまでエスクローに留まります。
決済期間: 完了したタスクの支払いは、オペレーターが引き出し可能になる前に、紛争解決を可能にするため 7日間 エスクローに保持されます。
| 制限項目 | 値 |
|---|---|
| 最小タスク金額 | $10 |
| 最大タスク金額 | $10,000 |
| 最小デポジット額 | $5 |
| 最大デポジット額 | $10,000 |
| 最小出金額 | $10 |
| 出金ガス代 | $0.01-$0.10 (deducted, capped at $2) |
| 最小プラットフォーム手数料 | $1 per task |
| スタンダード手数料 | 10% (< $5K/mo spend) |
| グロース手数料 | 8% ($5K-$25K/mo spend) |
| エンタープライズ手数料 | 5% (> $25K/mo spend) |
| エスクロー保持期間 | 7 days |
ウェブフック
タスクコールバック
タスク作成時に callback_url を提供すると、AIガーディアンが決定を下した際に、HumanOpsはそのURLにステータス更新をPOSTします。
安全な検証のために、callback_secret も提供してください。設定されている場合、コールバックには生の要求ボディの16進エンコードされたHMAC-SHA256を含む X-HumanOps-Signature ヘッダーが含まれます。
{
"event": "task.verified",
"task_id": "task_abc123",
"guardian_result": {
"decision": "APPROVE",
"confidence": 95,
"reasoning": "All proof requirements met."
},
"timestamp": "2026-02-06T14:31:00Z"
}イベント: task.verified, task.disputed, task.manual_review
import crypto from "node:crypto";
import express from "express";
const app = express();
// Use raw body so the signature matches exactly what was signed.
app.post("/webhook/humanops", express.raw({ type: "*/*" }), (req, res) => {
const secret = process.env.HUMANOPS_CALLBACK_SECRET;
if (!secret) return res.status(500).send("Missing HUMANOPS_CALLBACK_SECRET");
const sig = String(req.header("X-HumanOps-Signature") || "");
const computed = crypto
.createHmac("sha256", secret)
.update(req.body)
.digest("hex");
const ok =
sig.length === computed.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(computed));
if (!ok) return res.status(401).send("Invalid signature");
const event = JSON.parse(req.body.toString("utf8"));
console.log("HumanOps event:", event.event, event.task_id);
return res.sendStatus(204);
});
dLocal決済ウェブフック近日公開
/api/v1/webhooks/dlocaldLocalから決済確認(法定通貨デポジット)を受信します。定数時間比較を用いたHMAC-SHA256を使用して X-Signature ヘッダーを検証します。PAID または COMPLETED ステータス時にエージェントのデポジットアカウントに反映します。このウェブフックは法定通貨デポジットの開始時に有効になります。
{
"status": "PAID",
"order_id": "agentId_timestamp",
"amount": 100
}MCPサーバー
HumanOps MCPサーバーを使用すると、AIアシスタント(Claude、Cursorなど)がModel Context Protocolを通じて現実世界のタスクを直接依頼できます。
設定
{
"mcpServers": {
"humanops": {
"command": "node",
"args": ["path/to/packages/mcp-server/dist/index.js"],
"env": {
"HUMANOPS_API_KEY": "ho_live_EXAMPLE_KEY",
"HUMANOPS_API_URL": "https://api.humanops.io"
}
}
}
}利用可能なツール (16)
search_operators
特定の場所の近くにいる認証済みヒューマンオペレーターを検索します。タスクタイプや最低評価でフィルタリング可能です。
Params: lat, lng, radius_km?, task_type?, min_rating?
post_task
タスクを作成し、資金をエスクローします。タイトル、説明、場所、報酬、期限、証明要件、タスクタイプが必要です。
Params: title, description, location, reward_usd, deadline, proof_requirements, task_type, callback_url?, callback_secret?, idempotency_key?
dispatch_digital_task
物理的な場所を指定せずにデジタルタスク(リモート)を作成します。サーバーはカテゴリに基づいて適切なドメイン/証明タイプのデフォルトを設定します。
Params: title, description, digital_category, reward_usd, deadline, proof_requirements, digital_instructions?, callback_url?, callback_secret?, idempotency_key?
dispatch_credential_task
E2EEを用いたティア2認証情報タスクを作成します。キーペアを自動生成し、タスクと共に公開鍵を送信します。
Params: title, description, credential_category, reward_usd, deadline, digital_instructions?, callback_url?
retrieve_credential
完了した認証情報タスクから暗号化された認証情報を取得し、復号します。
Params: task_id
list_digital_categories
デフォルトの証明要件と制約を含む、利用可能なデジタルタスクカテゴリをリストします。
Params: (なし)
get_task_result
タスクのステータス、証明、およびAIガーディアンの検証結果を取得します。
Params: task_id
check_verification_status
信頼スコア、決定内容、要件結果など、詳細な検証情報を取得します。
Params: task_id
fund_account
HumanOpsアカウントにBase L2上のUSDCを入金します。テストモードでは、資金は即座に反映されます。
Params: amount_usdc ($5 - $10,000), tx_hash (Base L2 トランザクションハッシュ)
request_payout
Base L2上でのUSDC出金をリクエストします。最小$10。出金額から少額のガス代が差し引かれます。レスポンスには gas_fee_usd と net_amount_usd が含まれます。
Params: amount_usd, wallet_address, chain
get_balance
利用可能な残高とエスクロー残高を取得します。
Params: (なし)
get_deposit_address
Base L2上のUSDCデポジットアドレスを取得します。
Params: (なし)
approve_estimate
オペレーターの時間見積もりを承認します。タスクを ESTIMATE_PENDING から ACCEPTED に移行させ、オペレーターが作業を開始できるようにします。
Params: task_id
reject_estimate
オペレーターの時間見積もりを拒否します。タスクは PENDING に戻り、他のオペレーターが利用可能になります。
Params: task_id, reason?
cancel_task
保留中、見積もり保留中、または承諾済みのタスクをキャンセルし、エスクローを返金します。
Params: task_id
list_tasks
オプションのフィルタリングとページネーションを使用してタスクをリストします。
Params: status?, limit?, offset?
レート制限
レート制限は、固定ウィンドウアルゴリズムを使用してIP + パスごとに適用されます。制限を超えると 429 Too Many Requests を返します。
| エンドポイント | 制限 |
|---|---|
| POST /agents/register | 20 req/hour |
| GET/POST /agents/verify-email | 10 req/hour |
| POST /agents/resend-verification | 3 req/hour |
| POST /operator/upload | 10 req/min |
| All other endpoints | 100 req/min |
レート制限に達した場合は、指数バックオフの使用を推奨します。
エラー
すべてのエラーは、error フィールドを持つJSONボディを返します。
| コード | 説明 |
|---|---|
| 400 | 不正なリクエスト / バリデーションエラー |
| 401 | APIキー / オペレーターID / ウェブフック署名が不足しているか無効です |
| 402 | エスクローのための残高不足 |
| 403 | KYC検証が必要、または管理者キーが不足しています |
| 404 | リソースが見つかりません |
| 409 | 競合(メールの重複、タスクステータスの競合、べき等キーの再利用) |
| 410 | 消滅(例:タスクが期限切れ) |
| 422 | 処理不能(ポリシー/ガーディアンのスクリーニングまたは利用規約違反によりタスクがブロックされました) |
| 429 | リクエストが多すぎます(レート制限) |
| 500 | 内部サーバーエラー |
{
"error": "Insufficient balance for escrow",
"details": { ... }
}