API Documentation

Everything you need to integrate HumanDispatch into your agent or application.

Quick Start

Base URL: https://api.humandispatch.io

Auth: Bearer token — Authorization: Bearer sk_live_...

Content-Type: application/json

bash
# Install the SDK
npm install @humandispatch/sdk

# Or Python
pip install humandispatch
TypeScript
import { HumanDispatch } from "@humandispatch/sdk";

const hd = new HumanDispatch({ apiKey: "sk_live_..." });

// 1. Discover templates
const { templates } = await hd.templates.list();

// 2. Create a task
const task = await hd.tasks.create({
  task_type: "PRODUCT_PHOTO_ECOMM",
  title: "Spring PDP shots — 10 SKUs",
  location: { mode: "onsite", address: "Toronto, ON" },
  schedule: { start_at: "2026-04-22T10:00:00-04:00", duration_hours: 6 },
  budget: { currency: "CAD", pricing_model: "fixed", max_total: 3000 },
  deliverables: [{ kind: "photo", count: 30, format: "jpg" }],
  task_spec: { product_count: 10, background: "white", angles: ["front", "45deg", "detail"] },
});

// 3. Accept work when QA passes
const qa = await hd.workOrders.getQA(workOrderId);
if (qa.qa.overallPass) {
  await hd.workOrders.accept(workOrderId);
}

MCP Server

Connect any MCP-compatible agent (Claude, GPT, custom) with 13 typed tools:

JSON (mcp config)
{
  "mcpServers": {
    "humandispatch": {
      "command": "bun",
      "args": ["run", "src/mcp/server.ts"],
      "env": {
        "HUMANDISPATCH_API_URL": "https://api.humandispatch.io",
        "HUMANDISPATCH_API_KEY": "sk_live_..."
      }
    }
  }
}

Tools: get_templates, search_talent, create_task, request_quotes, accept_quote, create_booking, get_booking, submit_checkin, register_deliverables, get_qa, request_changes, accept_work, get_quotes

API Endpoints

Discovery

GET
/v1/templates

List all available task templates with schemas

GET
/v1/templates/:taskType

Get full template with spec schema, validation rules, and acceptance tests

Tasks

POST
/v1/tasks

Create a task from a template (supports Idempotency-Key header)

GET
/v1/tasks/:taskId

Get task details and status

GET
/v1/tasks

List tasks (filter by status, task_type)

Quotes

POST
/v1/tasks/:taskId/quote_requests

Request quotes from talent

GET
/v1/tasks/:taskId/quotes

List quotes received for a task

POST
/v1/quotes/:quoteId/accept

Accept a quote (enables booking)

Bookings

POST
/v1/bookings

Create booking with escrow hold from accepted quote

GET
/v1/bookings/:bookingId

Get booking details

POST
/v1/bookings/:bookingId/checkin

Record talent GPS check-in

POST
/v1/bookings/:bookingId/cancel

Cancel booking and release escrow

Work Orders

POST
/v1/work_orders/:id/deliverables

Register deliverables (files + metadata)

GET
/v1/work_orders/:id/qa

Run automated QA checks on deliverables

POST
/v1/work_orders/:id/request_changes

Request changes when QA fails

POST
/v1/work_orders/:id/accept

Accept work and release payout to talent

Talent

GET
/v1/talent/search

Search talent by skills, location, task_type

GET
/v1/talent/:talentId

Get talent profile

POST
/v1/talent

Register new talent

Files & Webhooks

POST
/v1/files/presign

Get presigned URL for file upload

POST
/v1/webhooks

Register webhook endpoint

GET
/v1/webhooks

List webhook endpoints

Task Templates

TemplateDescriptionRisk
PRODUCT_PHOTO_ECOMMProduct photography for PDP/adslow
UGC_VERTICAL_BATCHUGC vertical video clipsmedium
EVENT_PHOTO_COVERAGEEvent photography with edited selectslow
EVENT_HIGHLIGHT_VIDEO30-90s highlight reelslow
ON_SITE_STORY_PACKSame-day IG/TikTok story packslow
RETAIL_AUDIT_PHOTO_CHECKGPS-verified in-store auditsmedium
OOH_ASSET_VERIFICATIONBillboard/OOH placement verificationlow
STREET_TEAM_DISTRIBUTIONGeo-fenced flyer distributionhigh
POPUP_EVENT_STAFFINGBrand ambassador staffingmedium
PODCAST_ON_SITE_CAPTUREMulti-track audio recordinglow

Error Codes

JSON
{
  "error": {
    "http_status": 400,
    "code": "SCHEMA_VALIDATION_FAILED",
    "message": "Task validation failed",
    "details": { "errors": ["..."] },
    "request_id": "req_01J..."
  }
}
400SCHEMA_VALIDATION_FAILED — Invalid payload
402INSUFFICIENT_FUNDS / ESCROW_REQUIRED
403POLICY_BLOCKED / AUTH_SCOPE_DENIED
404NOT_FOUND
409CONFLICT_IDEMPOTENCY — Duplicate request
429RATE_LIMITED — 60 RPM general, 10 RPM money endpoints

Webhook Events

All webhooks are HMAC-SHA256 signed with replay protection. Events:

task.createdtask.policy_blockedquote.receivedbooking.confirmedbooking.checkin_recordeddeliverable.registeredqa.completedwork_order.acceptedpayout.initiateddispute.opened

Agent Discovery

/llms.txtComplete API reference for LLM consumption
/openapi.jsonOpenAPI 3.1 specification
/.well-known/ai-plugin.jsonStandardized agent plugin manifest
/JSON root with service description + endpoint map