Create a batch
Submit a batch of Exa API requests to run asynchronously.
requests is a POST to /search or /agent/runs with a batch-unique customId. The same customId is returned in the results file so you can map output rows back to your input data. See the Batch API guide for the end-to-end workflow.
Get your Exa API key
Authorizations
Pass your Exa API key in the x-api-key header. You can also authenticate with Authorization: Bearer .
Headers
Required beta token for the Batch API.
batches-2026-06-06 Body
Response
OK
Batch ID. New batch IDs are returned with the batch_ prefix.
"batch_01j7x9v0m2n4p6q8r0s2t4v6w8"
The object type, always batch.
"batch"Lifecycle status of the batch.
in_progress, completed, cancelling, cancelled, expired When the batch was created.
When the batch expires, or null if it does not expire.
When the batch reached a terminal status, or null while it is still running.
Short-lived presigned download URL for the batch results file (JSONL), or null until the batch completes. This is a direct object-store download link, not an API route; fetch it as-is and re-fetch the batch to mint a fresh URL once it expires.
Caller-provided key-value metadata for your own tracking.