## Key Features

- **Asynchronous**: Submit instructions via `POST /research/v1` and receive a `researchId` immediately. Poll or stream for results — tasks can run from seconds to minutes depending on complexity.
- **Multi-step reasoning**: The agent iteratively plans, searches, crawls, and synthesizes. It decomposes your instructions into sub-tasks, runs them in parallel, and combines findings into a single output.
- **Structured output**: Optionally provide an `outputSchema` (JSON Schema) to get validated, parsed JSON back instead of free-form text.
- **Streaming**: Pass `?stream=true` when polling to receive real-time Server-Sent Events as the agent thinks, searches, and writes.

## How It Works

1. **Create** a task with your instructions and optional output schema via [`POST /research/v1`](/content/docs/reference/research/create-a-task/index.html).
2. The agent **plans** by decomposing your instructions into targeted sub-tasks.
3. Each sub-task **searches** the web and **crawls** relevant pages to gather information.
4. Findings are **synthesized** into a final output with citations.
5. **Retrieve** the completed result via [`GET /research/v1/{researchId}`](/content/docs/reference/research/get-a-task/index.html) or list all tasks with [`GET /research/v1`](/content/docs/reference/research/list-tasks/index.html).

## Models

| Model               | Description                                      |
|---------------------|--------------------------------------------------|
| `exa-research-fast` | Fastest, lowest cost                             |
| `exa-research`     | Balanced speed and quality (default)            |
| `exa-research-pro` | Most thorough analysis and strongest reasoning   |

## Task Lifecycle

Tasks progress through these statuses: `pending` → `running` → `completed` | `failed` | `canceled`. Only completed tasks are billed. The `costDollars` field on completed tasks provides a detailed breakdown of searches, pages crawled, and reasoning tokens used.

## Next Steps

- [Create a research task](/content/docs/reference/research/create-a-task/index.html)
- [Get a task by ID](/content/docs/reference/research/get-a-task/index.html)
- [List all tasks](/content/docs/reference/research/list-tasks/index.html)
