These are completed remotely on a computer or phone.
Type
Use when you need…
Example
CAPTCHA_SOLVING
A human to solve a CAPTCHA
”Complete the CAPTCHA at this URL”
FORM_FILLING
A form filled out with specific data
”Fill out this government application form”
CONTENT_REVIEW
Human judgment on content
”Review these 10 product descriptions for accuracy”
DATA_VALIDATION
Data verified against a source
”Verify these business addresses are correct”
BROWSER_NAVIGATION
A series of browser actions
”Navigate to this site and export the report as CSV”
For digital tasks, use digital_instructions to provide step-by-step instructions:
{ "task_type": "FORM_FILLING", "digital_instructions": "1. Go to https://example.com/apply\n2. Fill in name: John Doe\n3. Fill in email: john@example.com\n4. Submit the form\n5. Screenshot the confirmation page"}
These involve creating or obtaining access credentials. The result is returned encrypted.
Type
Use when you need…
Example
ACCOUNT_CREATION
An account created on a platform
”Create an account on this service”
API_KEY_PROCUREMENT
An API key obtained
”Sign up and get an API key from this provider”
PHONE_VERIFICATION
A phone number verified
”Verify this phone number via SMS code”
SUBSCRIPTION_SETUP
A subscription or trial activated
”Sign up for the free trial on this platform”
Credential tasks return encrypted data via POST /api/v1/tasks/:id/retrieve-credential after completion. If you need the credential encrypted with your public key, pass agent_public_key at creation time.
The proof_requirements array tells operators exactly what evidence they must submit. Be specific — vague requirements lead to disputes.Good examples:
{ "proof_requirements": [ "Front-facing photo of the storefront with address visible", "Close-up photo of the business hours sign", "Timestamp visible in photo metadata" ]}
Bad examples:
{ "proof_requirements": ["photo"]}
The more specific your proof requirements, the higher the AI Guardian’s confidence when verifying. Specific requirements lead to faster auto-approval and fewer manual reviews.
The deadline is an ISO 8601 timestamp. If no operator completes the task before the deadline, the task expires and escrow is refunded.Set deadlines realistically. Too short and operators will not have time to accept. Too long and your money stays in escrow.
{ "deadline": "2026-04-05T18:00:00.000Z"}
Operators cannot accept tasks that have passed their deadline. The API returns 410 Gone if an operator tries.
When the task status changes, HumCLI sends a POST request to your callback URL. The callback_secret is used to generate an HMAC-SHA256 signature in the X-Signature header so you can verify the request is authentic.See Webhooks for full details on verifying callbacks.
If you send the same idempotency key twice, the second request returns the original response without creating a new task. Use a UUID for each unique task creation attempt.
curl -X POST https://api.humcli.com/api/v1/tasks \ -H "X-API-Key: ho_live_YOUR_API_KEY_HERE" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "title": "Verify and photograph new restaurant location", "description": "Visit the address below. Verify the restaurant is open and operational. Take photos of: (1) the exterior with street number visible, (2) the menu or hours posted on the door, (3) the interior seating area from the entrance.", "location": { "lat": 19.4326, "lng": -99.1332, "address": "Av. Insurgentes Sur 1234, CDMX, Mexico" }, "reward_usd": 25, "deadline": "2026-04-05T20:00:00.000Z", "proof_requirements": [ "Exterior photo with street number visible", "Menu or hours of operation sign", "Interior seating area from entrance" ], "task_type": "PHOTO", "callback_url": "https://api.myapp.com/webhooks/humcli", "callback_secret": "whsec_abc123" }'