# Overview (/docs/api)



The Circleback API lets you read your meetings, notes, action items,
transcripts, people, and companies. Use it to sync meeting data into your own
tools, build automations, or search across your conversations.

## Authentication [#authentication]

Send your API key as a bearer token in the `Authorization` header of every
request:

```bash
curl https://circleback.ai/api/meetings \
  -H "Authorization: Bearer cb_<secret>"
```

### Get an API key [#get-an-api-key]

To get started, go to **Settings → API keys** in Circleback and create an API key.
Keys look like `cb_<secret>` and are shown once at creation, so store
yours somewhere safe.

### Base URL [#base-url]

```
https://circleback.ai/api
```

The API accepts and returns JSON.

## Pagination [#pagination]

List endpoints return one page of results at a time. Omit `cursor` from the
first request. When another page is available, the response includes an RFC
8288 `Link` header with `rel="next"`:

```http
Link: </api/meetings?cursor=eyJwYWdlIjoxfQ>; rel="next"
```

Follow that URL to request the next page. Cursors are opaque and should not be
modified or reused with different filters.

## Rate limits [#rate-limits]

Requests are counted per Circleback account, across all API keys and MCP or
CLI OAuth tokens for the account. Limits are based on the plan the account is
on.

| Plan       | Per second | Per minute |
| ---------- | ---------- | ---------- |
| Free       | 3          | 20         |
| Pro        | 20         | 300        |
| Business   | 20         | 300        |
| Enterprise | 20         | 300        |

Every response reports whichever of the two windows you are closest to
exhausting. `RateLimit-Limit` is that window's allowance, so you can tell the
windows apart: `20` in the example below is the Free per-minute limit, not the
per-second one. `RateLimit-Reset` is the seconds until that same window
refills:

```http
RateLimit-Limit: 20
RateLimit-Remaining: 14
RateLimit-Reset: 24
```

Requests over the limit are rejected with `429 Too Many Requests` and a
`Retry-After` header holding the number of seconds to wait before trying
again. The JSON body is the same error envelope as other API failures, and its
message names the plan whose limit you hit:

```json
{
  "error": "Ratelimit exceeded for the Free plan.",
  "code": "RATE_LIMITED"
}
```

## Explore the reference [#explore-the-reference]

Endpoints are grouped by resource in the sidebar: Meetings, Action items,
Calendar, Companies, People, and Tags. Every page documents the request and
response shapes and lets you try the endpoint with your API key.
