# Overview (/docs/api)



Elmo provides a REST API for managing organizations and retrieving analytics programmatically. All endpoints require Bearer token authentication.

**Base URL:** `/api/v1`

The same reference is browsable inside the app at **Settings → API**, where it reads the deployment's
own spec — every instance serves that spec at `/api/v1/openapi.json`.

## Authentication [#authentication]

Include your API key in the `Authorization` header:

```http
Authorization: Bearer YOUR_API_KEY
```

Organization owners and admins can issue API keys from **Settings → API Keys** in the organization's settings sidebar — keys belong to the organization, not to a brand. A key is issued either read-only or read-write, and can be restricted to selected brands and given an expiry date. Instance-wide admin keys can also be configured server-side via the `ADMIN_API_KEYS` environment variable.

To call the API from TypeScript or Python, use the [SDKs](/docs/api/sdks) rather than writing the
requests yourself.

Prefer to drive Elmo from an AI assistant rather than from code? The same data is available over the
[MCP server](/docs/api/mcp), which speaks the same permissions and the same tenancy.

## Endpoints [#endpoints]

Browse the available endpoints in the sidebar, grouped by resource:

* **Brands** — manage brand records
* **Tools** — one-shot helpers (e.g. brand analysis) that don't persist anything
* **Prompts** — manage brand prompts
* **Competitors** — manage brand competitors
* **Snapshots** — aggregated analytics snapshots for prompts
* **Reports** — generate and retrieve AI Share of Voice reports
* **Analytics** — visibility, share of voice, citations, per-model, prompt, and query fan-out metrics
* **Runs** — retrieve prompt evaluation runs
* **Tags** — list the prompt tags in use on a brand
* **Opportunities** — retrieve the latest generated brand opportunities
* **Organizations and billing** — inspect organization and subscription state
* **Models** — list the answer engines this deployment tracks
