Agent creates long-running tasks that can search, read, reason, enrich rows, and return answers with source grounding. Use it when a workflow needs more than a single search or contents call: open-ended research, list building, structured extraction, entity enrichment, or follow-up questions over previous results. For implementation examples and workflow guidance, start with the Agent guide.Documentation Index
Fetch the complete documentation index at: https://exa.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
How it works
- Create a run with
POST /agent/runs. - The agent queues and starts the run, returning an
agent_runobject immediately unless you request streaming. - The run searches, reads, reasons, and writes until it completes, fails, is cancelled, or reaches the one-hour timeout.
- You poll
GET /agent/runs/{id}, stream creation events, or replay stored events withGET /agent/runs/{id}/events. - You can continue from a completed run by passing
previousRunIdto a new create request.
Endpoints
| Method | Path | Description |
|---|---|---|
POST | /agent/runs | Create a run. Can return JSON or stream server-sent events. |
GET | /agent/runs | List runs for your team. |
GET | /agent/runs/{id} | Get a run by ID. |
POST | /agent/runs/{id}/cancel | Cancel a queued or running run. |
DELETE | /agent/runs/{id} | Delete a stored run. |
GET | /agent/runs/{id}/events | List run events or replay them as server-sent events. |
Run lifecycle
Runs progress through these statuses:stopReason: null. Terminal runs use one of these stop reasons:
Output
Each run returns anoutput object:
| Field | Description |
|---|---|
output.text | Natural-language answer or summary. |
output.structured | Validated JSON when you provide outputSchema; otherwise null. |
output.grounding | Citations for the text answer or structured fields, when emitted. |
outputSchema supports JSON Schema draft-07, 2019-09, and 2020-12 via $schema. Standard formats are supported, plus phone.
To request contact information, include contact fields in outputSchema using standard JSON Schema string formats, for example { "type": "string", "format": "email" }. Bound arrays with maxItems when possible so the maximum contact-enrichment cost is predictable.
Create requests also accept effort, which controls the run’s cost and reasoning effort preference. Supported values are low, medium, high, xhigh, and auto; the default is auto.
Events and streaming
SetAccept: text/event-stream when you create a run to stream lifecycle events as they happen. You can also replay stored events later with GET /agent/runs/{id}/events.
Events use standard SSE framing:
agent_run.completed, agent_run.failed, and agent_run.cancelled.
Limits and pricing
Your Agent concurrency limit is one fifth of your account QPS. For pay-as-you-go accounts with default QPS, this means two active Agent runs at a time.Agent pricing is beta pricing and may change before launch.
| Component | Price |
|---|---|
| Agent Compute Units | 1 ACU = $0.0001 |
| Search tool calls | $7 / 1,000 searches |
| Email contact enrichment | $0.02 / email |
| Phone number contact enrichment | $0.07 / phone number |
| Browser use | Coming soon |

