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
| Status | Meaning |
|---|---|
401 | Missing or wrong API key |
402 | Not enough credit for this call; top up and retry |
403 | Key paused or suspended (repeated requests to look up people) |
400 / 422 | The 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.