API
JSON in snake_case, Bearer auth, twenty items per call. Lookups are synchronous: they run 45 to 60 seconds — give your client a 60 to 90 second timeout.
auth
Authorization: Bearer pq_live_…
Idempotency-Key: <uuid v4>
Idempotency-Key: <uuid v4>
Sign in, create a pq_live_… key in the portal, then send it as Bearer. Idempotency-Key is required on every metered POST — the same key replays the same result instead of charging twice.
Sign uproutes
Credits returns balance, held, available, account_id and unmetered. Decision makers takes a company domain — or up to twenty — a need (email, phone, or both), and the same finder options as the actor (persona, buying committee, verify gates). Max twenty per synchronous call.
errors
400 · bad body, missing channel, over twenty
401 · missing or invalid key
402 · insufficient credits {required, available}
409 · Idempotency-Key already in flight
401 · missing or invalid key
402 · insufficient credits {required, available}
409 · Idempotency-Key already in flight
Status bodies, replay rules and 503 live on the errors page.
mcp
GET / POST https://api.pequod.app/mcp
Streamable HTTP on the same host as REST. Claude and ChatGPT connect with a Clerk login; curl still uses a Bearer key. Same credit meter. Tools and how to point a client at the URL are on the MCP page.
409 means that idempotency key is still in flight — wait and retry the identical call. When the run finishes, the same key replays 200 without double-charging.
There is no job queue, no result history, no CSV export and no webhook for you to subscribe to. A call either returns its result or an error, and the response is the only copy. Internal routes are not documented here.