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

# Corbado Observe API

> Access Observe data over HTTPS: authentication with scoped API keys, endpoint groups, paging, limits and server-side enrichment.

The **Observe API** gives programmatic access to the same data as the management console. The [Observe CLI](/corbado-observe/tools/cli) is built on it, so every CLI command has an API equivalent.

## 1. Base URL and authentication

```sh theme={null}
curl https://api.cloud.corbado.io/v1/observe/timeSeriesDefinitions \
  -H "Authorization: Bearer <observe-api-key>"
```

Every request authenticates with an API key as a bearer token. The key determines the project, so requests carry no project ID.

## 2. API keys

Create keys in the console under **Observe → Settings → API keys**.

* **Permissions:** each key lists the permissions it grants. Choose read permissions for analysis and exports. Add write permissions only where an integration sends data, for example server-side enrichment.
* **IP restriction:** limit a key to specific IP addresses or CIDR ranges. Without a restriction, the key works from any address.
* **Expiry:** keys can expire after 7, 30 or 90 days or remain valid until revoked. Personal keys expire after at most 90 days.
* **Who can create keys:** project owners create project keys. Other project members can create personal keys with read permissions.

| Permission group                                                                   | Used for                                                                                 |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Time series, flows, subflows, events, users, errors, error flavours, alerts (read) | Analysis through the API or CLI                                                          |
| Table exports and data exports (read)                                              | Downloading exports and per-user data                                                    |
| Events (write)                                                                     | [Server-side enrichment](#5-server-side-enrichment)                                      |
| Annotations (read, write, delete)                                                  | Marking releases and changes on the timeline                                             |
| Data deletion jobs (read, write)                                                   | [Per-user deletion](/corbado-observe/data-access/exports#3-per-user-export-and-deletion) |

## 3. Endpoint groups

All paths are relative to `https://api.cloud.corbado.io/v1`.

| Group             | Endpoints                                                                                                                                                  | Purpose                                                               |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| **Time series**   | `GET /observe/timeSeriesDefinitions`, `GET /observe/timeSeries`, `POST /observe/funnel/metricSeries`                                                       | KPI series and funnel metrics over time                               |
| **Search**        | `POST /observe/flowSearch`, `POST /observe/subFlowSearch`, `POST /observe/eventSearch`, `POST /observe/trackingEventLowSearch`, `POST /observe/userSearch` | Find flows, attempts, events and users by filter                      |
| **Errors**        | `GET /observe/errors`, `GET /observe/errorFlavours`, `POST /observe/errorFlavours/impact`                                                                  | Named errors, raw error variants and their impact on outcomes         |
| **Alerts**        | `/observe/alertRules`, `/observe/alertTransitions`, `/observe/alertInstances` and related endpoints                                                        | Alert configuration, state and history                                |
| **Annotations**   | `/observe/annotations`                                                                                                                                     | Releases and changes shown on charts                                  |
| **Exports**       | `/observe/tableExports`, `/observe/timeSeries/export`, `/observe/timeSeries/exports`                                                                       | [Table and time-series exports](/corbado-observe/data-access/exports) |
| **Per-user data** | `GET /observe/dataExports/{externalID}`, `/observe/dataDeletionJobs`                                                                                       | Export or delete one user's data                                      |
| **Ingest**        | `POST /observe/events`                                                                                                                                     | [Server-side enrichment](#5-server-side-enrichment)                   |

Endpoints under `/observe/dataContext/` serve interactive investigation in the CLI and have no compatibility guarantee. Build integrations on the endpoint groups above.

## 4. Paging and limits

* **Paging:** list endpoints return the headers `X-Corbado-Page`, `X-Corbado-TotalPages` and `X-Corbado-TotalItems`.
* **Busy responses:** time-series and funnel reads can return `429 Too Many Requests` with a `Retry-After` header when the service is busy. Retry after the indicated delay.
* **Export concurrency:** a project can run two time-series exports at the same time. Further requests return `429` until one completes.

## 5. Server-side enrichment

Some facts about a journey exist only on your servers, for example the user a login resolved to or a risk or bot verdict. Send them with `POST /observe/events` and a key that has the events write permission.

An enrichment event attaches a user reference or tags to a flow. It targets the flow either by the ID of an event Observe already received or by a time-based match within 10 seconds. One request carries up to 2,000 events. Enrichment arrives through an authenticated server-to-server call, so values that should not travel through the browser stay on your side.

<CardGroup cols={2}>
  <Card title="Observe CLI" icon="terminal" href="/corbado-observe/tools/cli">
    The same API from a terminal or an AI agent.
  </Card>

  <Card title="Exports" icon="file-export" href="/corbado-observe/data-access/exports">
    Download daily tables and KPI series.
  </Card>
</CardGroup>
