---
title: Лимиты
description: Лимиты Clipia API — 120 запросов в минуту на ключ и 600 на аккаунт, заголовки RateLimit-*, ответ 429, лимит параллельных генераций и LLM-лимиты.
icon: Gauge
---

Запросы к API ограничены двумя счётчиками: **120 запросов в минуту на ключ** и **600 запросов в минуту на аккаунт** по всем его ключам вместе. Окно — календарная минута: счётчики обнуляются в начале каждой минуты. При превышении любого из них запрос отклоняется с `429 rate_limit_exceeded`.

## Лимиты по умолчанию

| Лимит | Значение | Ответ при превышении |
|-------|----------|----------------------|
| Запросов в минуту на ключ | 120 | `429 rate_limit_exceeded` |
| Запросов в минуту на аккаунт | 600 по всем ключам | `429 rate_limit_exceeded` |
| Запросов в минуту для подключения MCP через OAuth (без ключа) | 60 | `429 rate_limit_exceeded` |
| Параллельных генераций | не ограничено | — |
| Запросов в минуту для подключения MCP через OAuth (без ключа) | 60 | `429 rate_limit_exceeded` |
| Протокольных сообщений MCP в минуту на ключ | 600 | `429 rate_limit_exceeded` |
| Запросов в секунду с одного IP-адреса | 30, всплеск до 60 | `429 rate_limit_exceeded`, заголовок `Retry-After` |

Индивидуальные лимиты ключа выставляет команда Clipia по запросу; в консоли разработчика их не настроить. Срок действия и бюджет кредитов ключу задаёт владелец в консоли — см. [«Управление ключами»](/ru/docs/api-reference/keys).

Лимит 60 запросов в минуту действует на подключения [MCP](/ru/docs/mcp) через OAuth (Claude, ChatGPT, Cursor и другие клиенты, где вы входите в аккаунт Clipia, а не вводите ключ): у такой сессии нет своего ключа, поэтому её лимит ниже лимита ключа. Подключение MCP по API-ключу живёт по лимитам ключа. В этих лимитах считаются вызовы инструментов (`tools/call`). Протокольные методы (`initialize`, `tools/list`, `resources/read` и другие) считаются отдельно: 600 единиц в минуту на ключ или OAuth-подключение, одно JSON-RPC-сообщение — одна единица. Батч JSON-RPC, в котором есть что-либо кроме протокольных методов, отклоняется с `400 invalid_request`: каждый `tools/call` отправляйте отдельным запросом.

Лимит по IP-адресу защищает сервис от потока запросов и проверяется раньше лимитов ключа, поэтому в заголовках `RateLimit-*` его не видно. Он действует на `/v1/`, `/api/v1/` и `/mcp`; ответ `429` приходит в обычном формате ошибок с заголовком `Retry-After`. Этот лимит вводится отдельным обновлением инфраструктуры: пока оно не выполнено, такого ответа не будет.

## Заголовки ответа

Каждый ответ на запрос с ключом несёт заголовки лимита по ключу:

<TypeTable
  type={{
    'RateLimit-Limit': { type: 'integer', description: 'Лимит запросов в минуту для этого ключа' },
    'RateLimit-Remaining': { type: 'integer', description: 'Сколько запросов ключа осталось в текущей минуте' },
    'RateLimit-Reset': { type: 'integer', description: 'Момент сброса счётчика — unix-время в секундах, а не число секунд до сброса' },
    'x-ratelimit-remaining-requests': { type: 'integer', description: 'То же, что RateLimit-Remaining; для OpenAI-совместимых клиентов' },
    'Retry-After': { type: 'integer', description: 'Только при 429: через сколько секунд повторить' }
  }}
/>

<Callout type="warn" title="Лимит аккаунта в заголовках не виден">
`RateLimit-Remaining` считает только запросы текущего ключа. Если несколько ключей одного аккаунта вместе превысят 600 запросов в минуту, придёт `429`, хотя у отдельного ключа запас ещё есть.
</Callout>

## Ответ 429

```http
HTTP/1.1 429 Too Many Requests
RateLimit-Limit: 120
RateLimit-Remaining: 0
RateLimit-Reset: 1760011260
Retry-After: 37
```

```json
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "API rate limit exceeded. Slow down and retry after the reset window."
  }
}
```

Подождите столько секунд, сколько указано в `Retry-After`, и повторите запрос. Это надёжнее фиксированной задержки. Если `Retry-After` нет, посчитайте паузу как `RateLimit-Reset` минус текущее unix-время.

## Параллельные генерации

По умолчанию число одновременных генераций не ограничено. Если для ключа или аккаунта задан лимит, отправка сверх него вернёт `429` с заголовком `Retry-After: 5`:

```json
{
  "error": {
    "type": "rate_limit_error",
    "code": "concurrency_limit_exceeded",
    "message": "Too many concurrent generations in flight for this API key (limit 5). Wait for one to finish, then retry.",
    "retry_after_seconds": 5
  }
}
```

Дождитесь завершения одной из задач и повторите. Слот освобождается, когда задача завершается; если задача зависла, слот снимается автоматически через 30 минут. Когда лимит задан и система контроля параллельности временно недоступна, отправка вернёт `503 service_unavailable` — повторите через несколько секунд.

Лимит параллельности действует на отправку генераций и на LLM-чат. Опрос статуса и результата в него не входит.

## Токены и бюджет ключа

На ключ можно задать дополнительные ограничения:

| Лимит | Кто задаёт | Ответ при превышении |
|-------|------------|----------------------|
| Токенов LLM в минуту, для [AI Gateway](/ru/docs/llm-gateway) | команда Clipia | `429 rate_limit_exceeded`, заголовки `x-ratelimit-remaining-tokens` и `x-ratelimit-limit-tokens` |
| Бюджет кредитов, см. [«Управление ключами»](/ru/docs/api-reference/keys) | владелец ключа в консоли | `402 insufficient_quota` |

По умолчанию эти лимиты не заданы.
