Base URL
Authentication
Send an API key as a bearer token on every request:What’s free
Only one call uses contacts from your plan: confirming an export (POST /exports with "dry_run": false). Everything else, including quotes, checks, samples and every download, is free.
Requests and responses
- Request bodies are JSON (
Content-Type: application/json), exceptPUT /company-list, which also takes CSV or plain text. - Responses are JSON. Leads and exports can also be CSV with
format=csv. - Dates are
YYYY-MM-DD; timestamps are ISO 8601 in UTC. - Lanes are addressed by their code, like
L1. - Empty values are
null.
Idempotency
Confirming an export needs anidempotency_key. Retrying with the same key returns the original export ("reused": true) and never buys again. See Exports.
Paging
GET /leads returns up to limit leads (1 to 5,000, default 1,000).
- With
since=last, call again untilhas_moreisfalse: each call moves your cursor. - With
since=YYYY-MM-DD, passnext_page(or theX-Next-Pageheader for CSV) back aspage.
Long-running work
Exports and checks run in the background. Start them, then poll:
Poll every 10 to 30 seconds.
Errors
Errors return a status code and a JSON body with a stableerror code and a readable message:
error, not on message. See Errors for every code.