> ## Documentation Index
> Fetch the complete documentation index at: https://developers.arg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Exa

> Search the web, extract clean page content, and run deep-research agents from your own Exa account.

Exa connects with an API key from your Exa dashboard. It covers three surfaces: search, page extraction, and asynchronous agent runs for deep research and list building.

This is your own Exa account, billed to your key. It is separate from the web search built into chat, which needs no connection.

## What you can do

**Actions** - search the web, read pages you already have URLs for, start an agent run, read an agent run.

**Triggers** - none. Use it through the assistant in chat or as an action node in an automation.

## Get your credential

<Steps>
  <Step title="Open your Exa dashboard">
    Sign in at [dashboard.exa.ai/api-keys](https://dashboard.exa.ai/api-keys).
  </Step>

  <Step title="Create an API key">
    Create a key and copy it. The same page shows your usage and remaining balance.
  </Step>
</Steps>

## Connect

<Steps>
  <Step title="Open Integrations">
    In arg.ai, go to **Settings → Integrations** and click **Connect** on **Exa**.
  </Step>

  <Step title="Paste the key">Enter your API key in the API key field.</Step>

  <Step title="Save">
    arg.ai checks the key against Exa without spending a search, then connects it.
  </Step>
</Steps>

## Use it

* **In chat:** *"Search for recent papers on retrieval evaluation and summarize the three most cited."*
* **In an automation:** add an **Exa** action node to search, then chain a page read over the URLs it returned.

## How much content comes back

Search and page reads share one `content` setting, because Exa prices and sizes each differently:

* **`highlights`** (the default for search) returns the excerpts relevant to your query - the right choice for agent loops, since it answers the question without flooding the context window.
* **`text`** returns the whole page as markdown. Cap it with `text_max_characters` for deep reading.
* **`summary`** returns a generated précis, optionally answering a `summary_query`.
* **`none`** returns links and metadata only.

Set `max_age_hours` to control freshness: `0` always fetches the page live, `-1` never does.

## Agent runs are asynchronous

**Start an agent run** returns a run id straight away - the research itself takes anywhere from seconds to minutes depending on the `effort` tier. Read it back by id with **Read an agent run**; once it reports `completed`, the same read carries the text answer, the structured output (when you supplied an `output_schema`), and the grounding citations.
