API 参考
向经过验证的人类操作员委托现实世界任务。直接使用 REST API,或通过 Claude、Cursor 或任何兼容 MCP 的客户端连接 MCP 服务端。
https://api.humanops.io/api/v1入门指南
注册代理账户、获取 API 密钥、为账户充值,并在不到一分钟的时间内发布您的第一个任务。
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"}'生产环境的充值是自助服务的,但需要进行一次性的充值钱包验证,以防止交易哈希冒领。流程: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"
代理 (Agents)
/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 进行升级,以解锁更高的限制并执行真实任务。
| 等级 | 每日任务数 | 最大任务价值 | 每日支出上限 | 模式 |
|---|---|---|---|---|
| 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/:id永久撤销 API 密钥。此操作无法撤销。
{ "revoked": true }/api/v1/agents/balance获取您当前的充值余额和托管余额。
{
"deposit_balance": 75.00,
"escrow_balance": 29.50,
"currency": "USD"
}/api/v1/agents/deposit-address获取您的 USDC 充值地址 (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获取一条消息和随机数 (nonce),并使用您的钱包进行签名 (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/wallet绑定(验证)您的充值钱包以进行 USDC 充值。在生产环境中是安全确认充值的必要步骤。
{
"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/usdc确认在 Base 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
}任务 (Tasks)
/api/v1/tasks创建一个新任务并托管资金(奖励 + 基于您的交易量等级的平台费)。需要足够的充值余额。重试时请使用 Idempotency-Key,以避免重复创建任务和双重托管。对于 VERIFIED 和 STANDARD 等级,任务内容在创建前会自动由 AI Guardian 进行筛选。涉及非法活动、欺诈或骚扰的任务将被拦截 (422)。
参数
titlestring必填任务的简短标题。descriptionstring必填给操作员的详细指令。locationobject必填对象:lat, lng, addressreward_usdnumber必填以美元计的奖励金额。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可选用于状态更新的 Webhook URL。callback_secretstring可选用于签署 Webhook 回调的可选密钥(推荐)。agent_public_keystring可选用于端到端加密 (E2EE) 凭据交付的 Base64 编码 P-256 公钥(第二梯队凭据任务必填)。
{
"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获取完整的任务详情,包括证明、AI Guardian 结果、操作员信息和消息。
{
"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/cancel取消处于 PENDING、ESTIMATE_PENDING 或 ACCEPTED 状态的任务。托管资金将退还。
{
"task_id": "task_abc123",
"status": "CANCELLED",
"refunded_usd": 29.50
}/api/v1/tasks/:id/verify当 AI Guardian 将任务标记为 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从已完成的第二梯队凭据任务中检索加密凭据。返回包含密文、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_SOLVING解决 AI 无法处理的验证码和视觉挑战
max $10
FORM_FILLING填写网页表单、申请表或注册流程
max $50
BROWSER_INTERACTION执行需要人类判断的基于浏览器的交互
max $100
CONTENT_REVIEW审查并评估内容的质量、准确性或合规性
max $25
DATA_VALIDATION通过交叉引用现实世界资源来验证数据的准确性
max $50
证明类型
SCREENSHOT— 操作员上传截图作为证明(使用相同的照片上传流程)CONFIRMATION— 操作员提交文本确认,可附带参考 URLPHOTO— 标准照片证明(物理任务)ARTIFACT— 加密凭据交付(第二梯队任务)或文件工件上传
第二梯队:凭据类别
第二梯队凭据任务需要端到端加密交付。代理在创建任务时提供公钥;操作员在浏览器中加密凭据;只有代理可以解密。
ACCOUNT_CREATION在第三方服务上创建账户
max $100
API_KEY_PROCUREMENT注册并从服务中检索 API 密钥
max $200
PHONE_VERIFICATION接收短信验证码并验证电话号码
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 是第二梯队凭据任务的必填项。使用 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 交付功能的第二梯队凭据任务。自动生成密钥对。
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,而不是照片。
操作员 (Operators)
操作员端点在生产环境中使用 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-claim撤回对处于 ESTIMATE_PENDING 状态任务的领取请求。任务返回 PENDING 状态,并可供其他操作员领取。
{
"task_id": "task_abc123",
"status": "PENDING"
}/api/v1/operator/tasks/:id/submit提交任务完成证明。触发 AI Guardian 异步验证。配置 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 请求头以确保重试安全。提现金额中将扣除少量 Gas 费(通常为 $0.01-$0.10)以支付链上转账成本。响应中包含请求金额和扣除 Gas 费后的净额。
{
"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 Guardian 正在验证。
VERIFIED — AI Guardian 已批准(瞬时状态;随后变为 COMPLETED)。
COMPLETED — 任务完成。操作员收益进入 7 天托管期 以进行争议解决,之后方可提现。
DISPUTED — AI Guardian 拒绝或代理手动拒绝了证明。
CANCELLED — 代理已取消;托管资金已退还。
沙盒模式
SANDBOX 等级代理在沙盒模式下运行。所有任务通过模拟生命周期自动完成:
- 任务创建 (PENDING) —— 不托管任何资金
- 模拟操作员在几秒钟内自动接受任务
- 自动生成并提交合成证明
- 合成 Guardian 验证自动批准
- 任务完成 —— 没有真实资金流动,没有真人参与
沙盒任务的每个 API 响应都包含 sandbox: true 和一个解释模拟情况的 sandbox_notice 字段。在集成时使用这些字段来区分沙盒结果和真实结果。
退出沙盒模式: 验证您的电子邮件(升级到 VERIFIED 等级)并存入 USDC(升级到 STANDARD 等级)。真实任务将被派遣给经过验证的人类操作员。
托管与定价
交易量定价等级
HumanOps 使用基于交易量的定价 —— 您的费率随过去 30 天支出的增加而降低。每项任务适用 $1 的最低费用。所有充值均使用 Base L2 上的 USDC。
任务创建时: reward_usd + platformFee 从您的充值余额转移到托管账户。费用根据您当前的等级计算。
最低费用: 无论百分比计算结果如何,每项任务至少产生 $1 的平台费。
AI Guardian 批准 (APPROVE) 时: 奖励发放给操作员,费用计入平台收入。任务标记为 COMPLETED。
取消时: 全额托管金额(奖励 + 费用)退还至您的充值余额。
拒绝/争议 (REJECT/DISPUTE) 时: 资金保留在托管账户中等待解决。
结算期: 已完成任务的款项将在托管账户中保留 7 天,以便进行争议解决,之后操作员方可提现。
| 限制项 | 数值 |
|---|---|
| 最小任务价值 | $10 |
| 最大任务价值 | $10,000 |
| 最小充值额 | $5 |
| 最大充值额 | $10,000 |
| 最小提现额 | $10 |
| 提现 Gas 费 | $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 |
Webhooks
任务回调
如果您在创建任务时提供了 callback_url,当 AI Guardian 做出决定时,HumanOps 将向该 URL 发送 POST 状态更新。
为了安全验证,请同时提供 callback_secret。设置后,回调将包含一个 X-HumanOps-Signature 请求头,其中包含原始请求体的十六进制编码 HMAC-SHA256 签名。
{
"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 支付 Webhook即将推出
/api/v1/webhooks/dlocal接收来自 dLocal 的支付确认(法币充值)。使用 HMAC-SHA256 通过恒定时间比较验证 X-Signature 请求头。在状态为 PAID 或 COMPLETED 时为代理的充值账户入账。此 Webhook 将在法币充值功能上线时启用。
{
"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 功能的第二梯队凭据任务。自动生成密钥对,并随任务发送公钥。
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 Guardian 验证结果。
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 费。响应包含 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 / Webhook 签名 |
| 402 | 托管余额不足 |
| 403 | 需要 KYC 验证或缺少管理员密钥 |
| 404 | 未找到资源 |
| 409 | 冲突(重复的电子邮件、任务状态冲突、幂等键重复使用) |
| 410 | 已失效(例如:任务已过期) |
| 422 | 无法处理(任务因政策/Guardian 筛选或违反使用条款而被拦截) |
| 429 | 请求过多(受速率限制) |
| 500 | 服务器内部错误 |
{
"error": "Insufficient balance for escrow",
"details": { ... }
}