Docs

Quickstart

Three tools, one key, plain JSON.

1. Get a key

Buy credit on the pricing section. After Stripe's checkout your key is shown once. Store it as an environment variable:

export PATCHWELL_KEY="pw_live_..."

2. Call a tool

Clean a file

curl https://patchwell.io/v1/clean_data \
  -H "Authorization: Bearer $PATCHWELL_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/customers.csv"}'

Small files can go inline: send content_base64 and filename instead of url. Options: dedupe_on, required, hints (column to kind), phone_region, phone_format (national or e164), and recipe (a previous run's recipe, to clean a new file the same way).

Transcribe audio or video

curl https://patchwell.io/v1/transcribe \
  -H "Authorization: Bearer $PATCHWELL_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/interview.mp4"}'

Ask a research question

curl https://patchwell.io/v1/research \
  -H "Authorization: Bearer $PATCHWELL_KEY" -H "Content-Type: application/json" \
  -d '{"ask": "Which open-source licenses allow commercial use?"}'

3. Long jobs

Anything that takes longer than about 100 seconds returns {"status": "running", "job_id": "fc-..."}. Poll it every 20 to 30 seconds until status is done:

curl https://patchwell.io/v1/jobs/fc-... -H "Authorization: Bearer $PATCHWELL_KEY"

MCP

Add Patchwell to any MCP client. The tools transcribe, clean_data, research and get_job_result appear automatically.

{
  "mcpServers": {
    "patchwell": {
      "type": "http",
      "url": "https://patchwell.io/mcp/",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

Errors and billing

StatusMeaning
401Missing or wrong API key
402Not enough credit for this call; top up and retry
403Key paused or suspended (repeated requests to look up people)
400 / 422The request or file can't be processed; the message says why

Every response carries billing.price. Check your balance any time: GET /v1/credits/balance. Full schema: API reference.