Creating a job
Always send an
Idempotency-Key when creating a job. A job is the one place where a retried
request costs real money twice — see Idempotency.The three job types
enrich
enrich
Takes the same body as
POST /enrich, with either an inputs array
or an inputs_url pointing at a JSONL file of inputs — one object per line, same shape as a
synchronous input.search
search
Takes a search body with no
limit or cursor, and returns the full
result set past the 1,000-row synchronous depth by sharding the query for you.export
export
Takes
entity, format (csv or jsonl) and a search body. Produces a file rather than
paginated JSON.Collecting the result
Subscribe tojob.completed and let the webhook tell you. Polling is the fallback, not the plan.
enrich and search jobs, read the output from GET /jobs/{id}/results — cursor-paginated
like any other list. For export jobs the job itself carries a signed download_url, valid for
24 hours; results returns 409 for them.
Statuses
Cancelling
queued or running job. Work already completed is still charged, and results
produced so far remain readable. A job that has already finished returns 409.
Practical limits
Jobs past the concurrency limit stay
queued rather than failing, so a nightly batch that
overruns will drain rather than drop.