Quote, then confirm
Every export is two steps with the same request body:1
Quote (free)
POST /api/v1/exports with "dry_run": true says how many people you’d get and how many contacts you’d have left. Nothing is bought.2
Confirm
The same request with
"dry_run": false and an idempotency_key starts the export and returns 202 with the export.Request body
What you get
- Only new people. Anyone you’ve exported this billing period is left out, whichever lane found them, even if their details changed since.
- Strongest first. Each lane fills from high intent, then medium, then low (if you allow it).
- Lanes in priority order. With several lanes, they’re filled one after another, highest-priority lane first.
- Capped by your plan.
will_exportis the smallest ofmax, what’s available, and the contacts you have left.
Idempotency and retries
Theidempotency_key makes confirms safe to retry. Sending the same key again returns the original export with "reused": true and status 200, and never buys again. Use a key that means “this export”, like weekly-2026-10-14 or a UUID you store before calling.
Statuses
Poll
GET /api/v1/exports/{id} every 10 to 30 seconds until the status is completed, partial or failed. Most exports finish within a few minutes.
Downloading
GET /api/v1/exports/{id} returns the export and its leads as JSON. Add ?format=csv for a CSV with the columns in Lead fields. Downloading again is always free, as often as you like. GET /api/v1/exports lists past exports, newest first.
When an export is refused
See Errors for everything else.