Submit an asynchronous research Agent run.
Exa
Semantic search, page content, cited answers and asynchronous research.
Submit an asynchronous research Agent run.
Submit an asynchronous research task. query and Idempotency-Key are required. Configure effort, outputSchema, dataSources and previousRunId as needed. HTTP 202 returns a job; poll get_exa_agent_run until completed, failed or cancelled. Completed output contains text, structured data and grounding. Reusing an Idempotency-Key returns the existing job. Job pricing fields are provider metadata, not Felo billing records.
- Type: stringIdempotency
- Key max length:191requiredUnique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key and request fingerprint returns the original run.
- Type: stringqueryrequired
The natural-language research query.
- Type: arraydata
Sources Third-party data sources (Exa Connect) the Agent is granted access to.
- Type: stringeffort
Compute/depth tier for the run.
- Type: objectinput
Row-processing input: rows to process and exclusions.
- dataType: array
Input rows for the run.
- exclusion
Items to exclude from processing.
- Type: objectoutput
Schema JSON Schema used to validate the structured output.
- Type: stringprevious
Run Id Continue from a previously completed run.
- Type: object · AsyncJob202
Research run accepted. The Location header points at the job resource; poll it until terminal.
An asynchronous integration job. Returned by the submit call (HTTP 202) and by the poll/detail call. Poll the job by its id until status is a terminal value (completed, failed, or cancelled).
- Type: string Format: date-timenullablecompleted
At When the job reached a terminal status. Null while the job is still queued or running.
- Type: string Format: date-timecreated
At When the job was accepted.
- Type: stringendpoint
Provider operation identifier stored with the job. This metadata is not a Felo polling URL; use the documented Felo job path or Location header.
- Type: object nullableerror
Present when status is failed. Null otherwise.
- codeType: string
Machine-readable error code.
- messageType: string
Human-readable error message.
- Type: stringid
Job identifier. Use it with the corresponding Felo polling endpoint.
- Type: stringobject
Always "integration_async_job".
- nullableoutput
Job result payload. Present only once status is completed. For Agent Runs this is the structured research result.
- Type: booleanoutput
Expired True when the result has been retained past its retention window and is no longer retrievable.
- Type: objectpricing
- authorizedType: integer
Micros U S D Provider authorization metadata in micro-USD. This is not a Felo credit hold or billing record.
- billingType: string
Mode Provider job billing mode. Felo charges follow Felo billing records.
- currencyType: string
- finalType: integer nullable
Micros U S D Provider settlement metadata in micro-USD, nullable before settlement. This is not the Felo charge.
- Type: string enumstatus
Customer-facing lifecycle status. queued and running are non-terminal; completed, failed, and cancelled are terminal.
values- queued
- running
- completed
- failed
- cancelled
application/json - 400
The request could not be processed. Check the request parameters.
- 401
A valid Felo API key is required.
- 402
The request cannot proceed because a billing requirement is not met.
- 403
The account is not permitted to perform this operation.
- 409
idempotency_conflict — the same Idempotency-Key was reused with a different request body.
- 429
A request or spending limit has been reached.
- 502
The service could not complete the request.
- 503
The API or billing service is temporarily unavailable.
- 504
The service timed out while processing the request.
- default
The operation failed. Keep the response request ID when contacting Felo support.
curl https://openapi.felo.ai/v1/beta/exa/agent/runs \
--request POST \
--header 'Idempotency-Key: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"query": "Summarize the main changes in RAG evaluation methods over the past year as a bullet list.",
"outputSchema": {},
"input": {
"data": [],
"exclusion": null
},
"effort": "",
"previousRunId": "",
"dataSources": []
}'
{
"id": "iaj_01HZY8Q2M4K7N9V3T6W1X0B2C3",
"object": "integration_async_job",
"endpoint": "/apis/v1/exa/agent/runs",
"status": "queued",
"createdAt": "2026-09-30T03:09:45.799Z",
"completedAt": "2026-09-30T03:09:45.799Z",
"pricing": {
"currency": "USD",
"authorizedMicrosUSD": 1,
"finalMicrosUSD": 1,
"billingMode": "flat_per_call"
},
"output": null,
"outputExpired": true,
"error": {
"code": "string",
"message": "string"
}
}