# Rate limits

Gateway counts each caller’s requests to each address over a sliding hour, reports what is left on every answer, and answers 429 with Retry-After once the limit is reached.

## The limits

These are the defaults; a deployment can set its own.

| Routes | Limit |
|---|---|
| `POST /models`, `/models/chat`, `/models/two`, `/models/decision`, `/models/transcribe` · `POST /v1/chat/completions`, `/models/completions`, `/v1/audio/transcriptions` · `GET /models/requests/{requestId}` | 10,000 requests an hour |
| `GET /organization/gateway/requests` · `GET /organization/gateway/usage` · `GET /organization/apikeys` · `GET /organization/byokeys` · `GET /organization/byokeys/providers` | 2,000 requests an hour |
| `POST /organization/apikeys` · `DELETE /organization/apikeys` | 50 requests an hour |

The model catalogs, `GET /models/...` and `GET /v1/models`, have no request limit.

The window slides: a request counts against the limit for an hour after it was made. Each caller is counted on its
own, an API key or a signed-in person, and so is each address: calls to `/models` and to `/v1/chat/completions` are
counted apart, and so are reads of two different call records.

## Headers

An answer from a limited route says where you stand:

| Header | Notes |
|---|---|
| `X-RateLimit-Limit` | The requests allowed in the window. |
| `X-RateLimit-Remaining` | The requests left. |
| `X-RateLimit-Reset` | When the oldest request in the window stops counting, in Unix seconds. |
| `Retry-After` | On a `429` only: the seconds to wait before trying again. |

## When you reach it

The call is answered `429` before it is routed, so no provider is called and nothing is charged. On Momor's routes the
body is a problem document; on the OpenAI-compatible routes it is OpenAI's error object, with the code
`rate_limit_exceeded`.

```json
{ "status": 429, "detail": "Too many requests; try again once Retry-After has passed." }
```

Wait for `Retry-After` before trying again.

## Providers' own limits

A provider limiting Momor's key is a failure like any other: the call moves on to the next candidate, and you see a
provider's `429` only when every candidate failed. A provider limiting [your own key](/docs/gateway/bring-your-own-keys/)
answers `429` with a message naming the provider, `<provider> is rate-limiting the caller's own key: …`, so you can
tell its limit from Momor's. See [errors](/docs/gateway/errors/).
