Skip to main content
Use the batch API when you have a list. One submit request queues the work; matching runs asynchronously.

1. Submit

Response (202 Accepted):
Maximum batch size: 1,000 companies. Larger payloads return 422. Jobs are retained for 30 days from creation (expires_at on the status payload).

2. Poll status

Poll every few seconds. Avoid tight polling loops.

3. Fetch results

Results are available once status is running, completed, or failed. Requesting them while still queued returns 409.
Each item in data uses the same fields as POST /match. See Response reference.

4. Completion webhook

Optional. Pass callback_url on submit to receive one POST when the job reaches completed or failed. Polling still works.
callback_url must be https (http is allowed only in local development). Private, loopback, and link-local hosts are rejected outside local development. Cloud metadata addresses such as 169.254.169.254 are always rejected. The webhook body is the same shape as GET /match/batch/{job_id}, plus event:
event is job.completed or job.failed. If you set webhook_secret (16–128 characters), the request includes:
The hex digest is HMAC-SHA256 of the raw JSON body using your secret. Verify against the bytes you received; do not re-serialise the JSON first. Respond with 2xx. Delivery is attempted once. A failed webhook does not fail the job — poll status if you miss it. Retrying misses on a finished job queues it again; a second webhook fires when that run finishes.

Ownership

Jobs are scoped to the user who owns the API key. Another account’s job_id returns 404.
Last modified on August 20, 2026