The Batch API is available for Enterprise customers after Exa enables it for your team. Contact sales@exa.ai to discuss Enterprise access and enablement.
The Batch API is in beta. Include the
Exa-Beta: batches-2026-06-06 header on every request.Supported requests
Each batch item must be aPOST request to one of these routes:
Each item needs a batch-unique
customId. The same customId is returned in the results file so you can map output rows back to your input data.
Create a batch
Example response
Example response
Check status
Poll the batch until it reaches a terminal status:
When the batch completes,
resultsUrl contains a download URL for the JSONL results file, and expiresAt is set to the end of the results retention window.
List batches
data holds up to limit batches, and when hasMore is true, pass nextCursor as the cursor query parameter to fetch the next page.
Pass status=completed to list only completed batches:
completed is the only supported value; any other value returns an error. Completed listings are ordered by expiry and use their own cursor, so keep sending status=completed on every page — completed and unfiltered cursors are not interchangeable.
Download results
customId and either a response or an error: