> For the complete documentation index, see [llms.txt](https://docs.adaptria.locaria.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adaptria.locaria.com/internal-api/rate-limits.md).

# Rate limits

The API gateway applies rate limits to keep the service fair and stable for everyone. Connectors that issue bursts of requests should pace themselves against these limits.

## The limits

Requests are rate limited at two levels:

* **Per IP address** (before authentication): **100 requests per minute**.
* **Per API credential** (after authentication): **60 requests per minute**, applied to all requests regardless of method.

Read the rate-limit headers on each response rather than hard-coding these values, as the configured limits may vary by environment.

## Exceeding a limit

When a limit is exceeded, the API responds with `429 Too Many Requests` and the standard error envelope (`code: RATE_LIMIT_EXCEEDED`).

Rate-limited responses include the following standard response headers, which your connector can use to pace and retry requests:

| Header                | Description                                                  |
| --------------------- | ------------------------------------------------------------ |
| `RateLimit-Limit`     | The request limit for the current window.                    |
| `RateLimit-Remaining` | Requests remaining in the current window (`0` when limited). |
| `RateLimit-Reset`     | Unix timestamp (seconds) at which the window resets.         |
| `Retry-After`         | Seconds to wait before retrying.                             |

{% hint style="info" %}
Build backoff into your connector: on a `429`, wait for the period given in `Retry-After` before retrying. Pair this with an [`Idempotency-Key`](/internal-api/idempotency.md) so retries cannot create duplicate projects.
{% endhint %}
