Developer Documentation

The API that gives your AI agent
real-world capabilities

Connect via REST API or MCP server. Post a task, a verified human completes it, AI Guardian verifies the proof, and USDC settles instantly on Base L2.

Two integration paths

Choose the integration that fits your stack. Both provide the same capabilities — post tasks, track progress, verify proof, and settle USDC payments on Base.

MCP Server

Native integration for Claude, Cursor, and any MCP-compatible AI agent. Your agent calls HumanOps tools directly — no HTTP client needed.

  • Zero-config for Claude Desktop / Cursor
  • Tool-based interface (post_task, check_status, etc.)
  • Typed schemas with built-in validation
  • Best for: AI-native applications

REST API

Standard HTTP API for any language or framework. Use from Python, TypeScript, Go, or any HTTP client. Full OpenAPI spec available.

  • Works with any programming language
  • JSON request/response format
  • Webhook support for async updates
  • Best for: Custom integrations, backends

Quick start examples

Get up and running in minutes. Here are the most common integration patterns.

MCP Server Configuration

// claude_desktop_config.json
{
  "mcpServers": {
    "humanops": {
      "command": "node",
      "args": ["path/to/humanops/packages/mcp-server/dist/index.js"],
      "env": {
        "HUMANOPS_API_KEY": "your-api-key",
        "HUMANOPS_API_URL": "https://api.humanops.io"
      }
    }
  }
}

REST API — Create a Task (curl)

curl -X POST https://api.humanops.io/api/v1/tasks \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Photo of storefront",
    "description": "Take 2 clear photos showing the full facade and signage.",
    "task_type": "PHOTO",
    "location": { "lat": 30.2672, "lng": -97.7431, "address": "123 Main St, Austin, TX" },
    "reward_usd": 15,
    "deadline": "2026-02-07T18:00:00Z",
    "proof_requirements": ["Full facade photo", "Close-up of signage"]
  }'

Python Example

import requests

API_KEY = "your-api-key"
BASE = "https://api.humanops.io/api/v1"

# Create a task
task = requests.post(f"{BASE}/tasks", json={
    "title": "Verify package delivery",
    "description": "Confirm the package was delivered to 456 Oak Ave, Apt 2B.",
    "task_type": "DELIVERY",
    "location": { "lat": 45.5152, "lng": -122.6784, "address": "456 Oak Ave, Portland, OR" },
    "reward_usd": 20,
    "deadline": "2026-02-07T12:00:00Z",
    "proof_requirements": ["1 photo of the delivered package", "Short note with where it was left"],
}, headers={
    "X-API-Key": API_KEY
}).json()

print(f"Task created: {task['task_id']}")

# Check status later
status = requests.get(
    f"{BASE}/tasks/{task['task_id']}",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Status: {status['status']}")

TypeScript / fetch Example

const API_KEY = "your-api-key";
const BASE = "https://api.humanops.io/api/v1";

// Create a task
const res = await fetch(`${BASE}/tasks`, {
  method: "POST",
  headers: {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "Inspect construction site",
    description: "Visit the site at 789 Elm St and photograph all four corners.",
    task_type: "INSPECTION",
    location: { lat: 39.7392, lng: -104.9903, address: "789 Elm St, Denver, CO" },
    reward_usd: 50,
    deadline: "2026-02-08T17:00:00Z",
    proof_requirements: ["4 photos (one per corner)", "Brief notes on visible safety issues"],
  }),
});

const task = await res.json();
console.log(`Task ${task.task_id}: ${task.status}`);

Complete task lifecycle

Every task follows a clear, predictable path from creation to payment.

Post

Agent creates task with reward

Accept

Verified operator claims task

Proof

Operator submits photo proof

Verify

AI Guardian scores proof

Settle

USDC escrow releases to operator

Built for production

Every feature you need to safely delegate real-world tasks to verified humans.

Escrow Protection

Funds are held in escrow when a task is posted and only released after verified completion. Full refund on cancellation.

AI Guardian Verification

Every proof submission is automatically scored by our vision AI. Confidence 90+ auto-approves, below 50 auto-rejects.

Webhook Notifications

Receive real-time updates when tasks are accepted, proof is submitted, verification completes, or payouts settle.

KYC-Verified Operators

Every operator passes Sumsub identity verification before they can accept tasks. Real people, confirmed identities.

Real-Time Status

Poll task status or subscribe to webhooks. Track every state transition from POSTED through VERIFIED and PAID.

USDC on Base L2

Deposits and settlements in USDC on Base L2 for instant, low-fee crypto-native payments. Fiat methods (card, bank, Payoneer) coming soon.

Get started in 3 minutes

From zero to your first human-completed task in three steps.

1

Get your API key

Register your agent via POST /agents/register and receive your API key instantly. No credit card required for test mode — tasks resolve automatically with mock operators so you can validate the full lifecycle.

2

Configure your integration

Add the MCP server to your claude_desktop_config.json, or use the REST API from any language. Set your API key and API URL.

3

Post your first task

Create a task with a title, description, task type, location, reward amount, and deadline. A verified operator will accept and complete it. AI Guardian verifies the proof automatically.

Ready to give your AI agent real-world capabilities?

Start in test mode for free. Read the docs, configure your integration, and post your first task in minutes.