> ## 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.

> ## Agent Instructions
> The Exa API is served at https://api.exa.ai. Authenticate with `Authorization: Bearer $EXA_API_KEY` (or `x-api-key: $EXA_API_KEY`); create keys at https://dashboard.exa.ai/api-keys?utm_source=docs&utm_medium=docs&utm_campaign=markdown_instructions. Every way an agent can get access to Exa is described at https://exa.ai/auth.md.
> Prefer the official SDKs, `exa-py` (`pip install exa-py`) and `exa-js` (`npm install exa-js`); both read `EXA_API_KEY` from the environment.
> Tool-using agents can call Exa without writing code through the hosted MCP server at https://mcp.exa.ai/mcp, or install the Exa agent skill with `npx skills add exa-labs/agent-skills` (skill file: https://exa.ai/docs/skill.md).
> The OpenAPI specs at https://exa.ai/docs/exa-spec.yaml and https://exa.ai/docs/team-management-spec.yaml are the source of truth for request and response schemas.

# Content Policy

> Content Exa refuses to search for, the errors a refused request returns, and how warnings and suspensions work.

Exa refuses requests that seek child sexual abuse material or any other content that sexualizes minors. A refused request returns no results.

## Errors

A refused request returns `403` with one of these tags:

| Tag | Meaning |
| - | - |
| `PROHIBITED_CONTENT` | The request seeks prohibited content and was refused. Other requests from your team are served. |
| `TEAM_BLOCKED` | Your team is suspended and every request with its API keys is refused. |

```json theme={null}
{
  "requestId": "67207943fab9832d162b5317f4cca830",
  "error": "A human-readable explanation of the refusal.",
  "tag": "PROHIBITED_CONTENT"
}
```

Do not retry a refused request. The same request is refused again and counts toward the warnings described below.

## Warnings and suspension

Exa reviews refused requests by team. A team whose requests repeatedly seek prohibited content receives a warning, shown to its members at the top of the [dashboard](https://dashboard.exa.ai). Further violations after a warning suspend the team. A suspended team's API keys stop working with `TEAM_BLOCKED`. Its members can still sign in, but see a suspension message instead of dashboard pages while using that team; they can switch to another team in good standing.

## Send `userIdentifier` for your users

If your product sends requests on behalf of your users, use an opaque `userIdentifier` that does not contain personal information such as an email address or name. Hash those values before sending them.

## Contact

If you believe a request was refused in error, or your team was warned or suspended, contact [support@exa.ai](mailto:support@exa.ai). Include the `requestId` of an affected request.
