# OpenAPI and SDKs

Generate a client from the spec.

The API is described by an OpenAPI 3.1 document generated from the same types that validate every request and response.

* Spec: `https://api.anara.com/openapi.json`
* Interactive reference: `https://api.anara.com/docs`

Application errors are tagged objects with a `_tag` and a `message`. Request-schema validation failures return `400` and may have an empty body; check the status before parsing JSON. Errors that need more carry it as fields, for example `PaymentRequired` has `balanceMicroUsd`, `requiredMicroUsd`, and `topUpUrl`. The spec lists each endpoint's possible errors by status, so a generated client can narrow on them.

## Generate a client [#generate-a-client]

```bash title="Terminal"
npx @hey-api/openapi-ts -i https://api.anara.com/openapi.json -o src/anara -c @hey-api/client-fetch
```

```bash title="Terminal"
openapi-generator-cli generate -i https://api.anara.com/openapi.json -g python -o anara-python
```

Send the key as a bearer token; both `bearer` and `apiKey` security schemes are in the spec.

## For agents [#for-agents]

The docs are readable by machines as well as people.

* `https://docs.anara.com/api/llms.txt` lists the API pages with a summary. `https://docs.anara.com/llms.txt` covers the whole site.
* [Use with coding agents](/api/coding-agents) has a ready `AGENTS.md` snippet.
* `https://docs.anara.com/llms-full.txt` is the full text of every page in one file.
* Append `.md` to any docs URL, or send `Accept: text/markdown`, to get one page as Markdown.
* `https://docs.anara.com/mcp` is an MCP server (Streamable HTTP, no auth) with `list_docs`, `search_docs`, and `read_doc` tools.

```json title="MCP client config"
{
  "mcpServers": {
    "anara-docs": { "url": "https://docs.anara.com/mcp" }
  }
}
```

## API version [#api-version]

The public endpoints are `/v1/search` with `type` (`instant`, `standard`, or `deep`) and `/v1/resolve`. This pre-launch API replaces the earlier endpoint names without compatibility aliases. Once integrations are in use, incompatible request/response changes require a versioned migration.
