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

# API rate limits

> Darwin API rate limits per key per minute on Origin, Adapt, Evolve and Apex, the smaller budget for heavy calls, RateLimit headers and how to handle 429.

The API is on every Darwin plan. Larger plans get more requests per minute. Limits apply **per API key**, so two integrations with their own keys don't slow each other down.

| Plan | Requests per minute, per key | Heavy requests per minute, per key |
| - | -: | -: |
| **Origin** | 120 | 10 |
| **Adapt** | 120 | 10 |
| **Evolve** | 600 | 30 |
| **Apex** | 1,200 | 60 |

Heavy requests run a model, read a website or build an export. They have their own budget and do not use up the standard one:

* `POST /chat/sessions/{id}/messages` (each chat API message)
* `POST /knowledge/documents` and `PATCH /knowledge/documents/{id}`
* `POST /knowledge/sources/{id}/refresh`
* `POST /privacy/exports`
* `POST /webhook_endpoints/{id}/test`

Every other endpoint counts against the standard budget. Each [MCP](/api-reference/mcp) tool call counts as one standard request for the connection's key.

## Headers

Every successful response carries the budget it was counted against:

| Header | Meaning |
| - | - |
| `RateLimit-Limit` | Requests allowed in the current one-minute window |
| `RateLimit-Remaining` | Requests left in this window |
| `RateLimit-Reset` | Seconds until the window resets |

The window is a fixed minute that starts with the key's first request.

## When you hit the limit

The request is refused with `429` and the code [`rate_limited`](/api-reference/errors#rate_limited). The response carries `Retry-After` with the seconds to wait, along with the `RateLimit-*` headers. Nothing was done, so retrying after the wait is safe.

```http theme={null}
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Retry-After: 23
RateLimit-Limit: 120
RateLimit-Remaining: 0
RateLimit-Reset: 23
```

To stay under the limit:

* Use [webhooks](/api-reference/webhooks) instead of polling for new leads and meetings.
* Read with `limit=100` and `updated_since` rather than many small pages. See [Pagination](/api-reference/pagination).
* Give each integration its own key.
* Spread a large backfill over several minutes.

The [chat API](/api-reference/chat-api#monthly-allowance) also has a monthly allowance of conversations, separate from these per-minute limits.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.