Skip to main content
The enrichment API, the Lead Finder API and the Company Finder API are asynchronous. You submit a request, you get a request_id back immediately, and the work happens in the background.
Always branch on status, never on the HTTP status code alone.While a request is running, the GET endpoints answer 202 Accepted with a body that has no data (enrichment), no leads (Lead Finder) and no companies (Company Finder). Many HTTP clients treat every 2xx as success, so an integration that only checks response.ok reads an empty result and wrongly concludes that nothing was found.

Lifecycle

1

Submit

POST /async answers 201, POST /lead_finder/async and POST /company_finder/async answer 202. The body carries the identifier you will poll on: id for enrichment, request_id for Lead Finder and Company Finder.
2

Processing

The GET endpoint answers 202 with status: "processing" and a message. No data, no leads, no summary.
3

Done

The GET endpoint answers 200 with status: "terminated". summary and the results array are now present.

Status values

A Lead Finder search that matched nothing is reported as terminated with an empty leads array and summary.leads_found at 0. A Company Finder search that matched nothing is reported the same way, with an empty companies array and summary.companies_found at 0. It is a normal outcome, not an error.
A Company Finder search that ends on_hold does not resume after a top up. Nothing was charged: top up, then submit the search again.

Polling recipe

Prefer a webhook whenever you can. When you do have to poll, wait a few seconds between attempts and stop on terminated, keeping an eye on the rate limit.
For Lead Finder, use GET /lead_finder/async/{request_id} and treat 404 as the unknown-id case instead of 406. For Company Finder, use GET /company_finder/async/{request_id}, also with 404, and treat on_hold as final: it never resumes on its own.

Per lead status

Inside a terminated enrichment, each row of data carries its own enriched boolean. A batch can be terminated while some of its leads could not be enriched. Check enriched before using a row.