Skip to main content

Error shape

Errors are returned as JSON. The human readable text sits either in error or in message depending on the endpoint, so read both.
2xx does not mean the results are ready. The GET endpoints answer 202 while a request is still running. See Request statuses.

Status codes

404 and 406 both mean “unknown request id”, but they are not interchangeable: the enrichment endpoint answers 406 and the Lead Finder endpoint answers 404. Handle both if your client talks to the two APIs.

Messages you are likely to hit

400 Bad request

401 Unauthorized

Find your key in your API settings. It travels in the X-API-Key header, not in an Authorization: Bearer header.

402 Payment required

A 402 on submission is different from the on_hold status. 402 means the request was refused. on_hold means an accepted request paused mid-flight because the balance hit zero. Top up and it resumes on its own. See Credits.

422 Unprocessable

Retry policy

Retry 429 and 500 with exponential backoff. Never retry 400, 401, 404, 406 or 422 unchanged: the same request will fail the same way. For 402, top up first. Submissions are not idempotent. Retrying a POST that actually succeeded creates a second request and consumes credits twice. When a POST times out with no response body, poll GET /account or check your requests in the app before resubmitting.