Bulk search
Submit many v3 searches as one resumable job.
POST
Submit a bulk search job
Submit a list of searches once, then poll one job. Orbit queues the work and retries temporary processing failures automatically. You do not need to send or retry a separate HTTP request for every CSV row.
Requires
Each item has a unique
Poll about every three seconds. Job statuses are
Each page contains at most ten items and a
Cancellation skips undispatched items. Work that already started finishes reconciling and billing, so cancellation can remain pending while that work completes. Published results stay available.
search:read. Items with include_profile: true also require profile:read when submitting and reading results.
id and the fields from Search, except request_id. Put request_id on the whole job. Face searches use the individual Search endpoint.
Submit and retry
A successful submission returns202 with job_id, request_id, status, counts, billing, and links to status, results, and cancellation.
Keep the same request_id when retrying submission. With the same API key, normalized items, and search-session context, it returns the original job. Changing the items or adding, removing, or changing the signed-in session under that identity returns 409 bulk_search_idempotency_conflict.
Limits:
- 1–5,000 items per job and an 8 MiB request body.
- At most 32 KiB per item.
request_idand itemidvalues must contain 1–128 characters.- At most four unfinished jobs per billing account.
409 bulk_search_queue_full with Retry-After. Retry the same job identity after the indicated delay. An accepted job does not consume the individual Search request-rate allowance for every item.
Submission and cancellation each allow a burst of eight HTTP requests per API key, refilling at one request every two seconds. Status and results share a separate bucket with a burst of 30, refilling at five requests per second. Excessive requests return 429 with Retry-After; accepted jobs keep processing. These buckets are separate from individual Search.
When submitting with an authenticated search session, use the same signed-in person for status, results, cancellation, and idempotent replay. Directory access is checked again during processing and result reads.
Track progress
queued, running, waiting_for_credits, needs_attention, completed, completed_with_errors, and canceled.
counts includes total, completed, failed, canceled, and pending. Failed counts include items that completed with some errors. An empty successful search is completed; it is not a processing failure.
Temporary errors appear in last_error while the job retries. If the job enters waiting_for_credits, add credits to the same billing account. It resumes automatically.
After repeated recovery failures, needs_attention asks you to contact support with the job id. Automatic recovery continues about every five minutes. Started work and its reserved credits remain tracked until their outcome is established.
Read results
next_offset. The offset follows the original input order, including unfinished items. Revisit unfinished pages after the job advances.
Each item includes:
id: your original item id.index: its zero-based position.status:queued,processing,completed,completed_with_errors,failed, orcanceled.result: a v3 search snapshot, ornulluntil its results are ready to publish.
Billing and cancellation
Credits are reserved as groups of items begin processing. Orbit charges for the results under the v3 pricing rules and releases unused credits. Retrying a job or reading its saved results does not repeat its search charges. Different item ids represent separate searches, even if their inputs are identical.Authorizations
Use an Orbit API key from the developer dashboard.
Body
application/json
Required string length:
1 - 128Required array length:
1 - 5000 elementsProvide query, intent, at least one identity signal, or a supported combination. When query and intent are both present, Orbit derives a base intent from query and overlays the caller-provided intent. Arrays, scalar values, and null replace derived values; nested objects merge field by field.
- Option 1
- Option 2
- Option 3
Example:
Response
Bulk search response.
Available options:
queued, running, waiting_for_credits, needs_attention, completed, completed_with_errors, canceled 