Лимиты
Ограничения на размер и структуру проверяются до вызова модели. Превышение возвращает `413`.
## Размер запроса
| Ограничение | Значение | Код при превышении |
|---|---|---|
| Общий размер тела запроса | 100 МБ | `payload_too_large` |
| Отдельный inline-файл (изображение, PDF) | 50 МБ | `file_too_large` |
| Суммарный объём текста во всех сообщениях | 15 МБ | `text_content_too_large` |
## Структура запроса
| Ограничение | Значение |
|---|---|
| Длина идентификатора модели | 200 символов |
| Сообщений в запросе | от 1 до 1000 |
| Инструментов (`tools`) в запросе | до 256 |
Размер контекста ограничен ещё и самой моделью: смотрите `context_length` и `max_completion_tokens` в [каталоге](/router/models/).
## Частота запросов
Фиксированного лимита запросов в секунду на ключ нет. Ограничения приходят из двух источников, и различать их важно, потому что реакция разная.
| HTTP | Код | Что произошло | Что делать |
|---|---|---|---|
| `429` | `provider_rate_limited` | Модель ограничила частоту обращений | Повторить с задержкой, лучше на другой модели, если нагрузка постоянная |
| `429` | `api_key_limit_exceeded` | Достигнут лимит расходов по этому API-ключу за период. В `extra.reset_at` лежит время сброса счётчика (UTC, ISO-8601) | Ждать сброса, повысить лимит ключа или использовать другой ключ |
| `503` | `service_unavailable`, `circuit_breaker_open` | Пиковая нагрузка на роутер | Повторить через интервал из заголовка `Retry-After`, если он есть |
| `502` | `provider_unavailable` | Модель временно недоступна | Повторить или переключиться на другую модель |
| `402` | `insufficient_funds` | Не хватает средств на запрос | Пополнить баланс, повторы не помогут |
## Повторные попытки
- **Повторяйте только то, что имеет смысл повторять:** `429`, `502`, `503`. Остальные `4xx` это ошибки запроса, повтор вернёт тот же ответ.
- **Экспоненциальная задержка с джиттером.** Одновременный повтор всех клиентов создаёт вторую волну нагрузки, случайная добавка к паузе её разносит.
- **Уважайте `Retry-After`.** Если заголовок есть, он точнее любой собственной эвристики.
- **Ограничьте число попыток.** Три попытки покрывают почти все временные сбои, дальше правильнее отдать ошибку своему клиенту.
- **Обрыв соединения не отменяет генерацию.** Прерванный стриминг всё равно тарифицируется: провайдер выполнил запрос. Повтор после обрыва оплачивается дважды.
Полный список кодов и форматы ошибок: [Ошибки](/router/errors/).
Ограничения на размер и структуру проверяются до вызова модели. Превышение возвращает 413.
Размер запроса
Заголовок раздела «Размер запроса»| Ограничение | Значение | Код при превышении |
|---|---|---|
| Общий размер тела запроса | 100 МБ | payload_too_large |
| Отдельный inline-файл (изображение, PDF) | 50 МБ | file_too_large |
| Суммарный объём текста во всех сообщениях | 15 МБ | text_content_too_large |
Структура запроса
Заголовок раздела «Структура запроса»| Ограничение | Значение |
|---|---|
| Длина идентификатора модели | 200 символов |
| Сообщений в запросе | от 1 до 1000 |
Инструментов (tools) в запросе |
до 256 |
Размер контекста ограничен ещё и самой моделью: смотрите context_length и max_completion_tokens в каталоге.
Частота запросов
Заголовок раздела «Частота запросов»Фиксированного лимита запросов в секунду на ключ нет. Ограничения приходят из двух источников, и различать их важно, потому что реакция разная.
| HTTP | Код | Что произошло | Что делать |
|---|---|---|---|
429 |
provider_rate_limited |
Модель ограничила частоту обращений | Повторить с задержкой, лучше на другой модели, если нагрузка постоянная |
429 |
api_key_limit_exceeded |
Достигнут лимит расходов по этому API-ключу за период. В extra.reset_at лежит время сброса счётчика (UTC, ISO-8601) |
Ждать сброса, повысить лимит ключа или использовать другой ключ |
503 |
service_unavailable, circuit_breaker_open |
Пиковая нагрузка на роутер | Повторить через интервал из заголовка Retry-After, если он есть |
502 |
provider_unavailable |
Модель временно недоступна | Повторить или переключиться на другую модель |
402 |
insufficient_funds |
Не хватает средств на запрос | Пополнить баланс, повторы не помогут |
Повторные попытки
Заголовок раздела «Повторные попытки»- Повторяйте только то, что имеет смысл повторять:
429,502,503. Остальные4xxэто ошибки запроса, повтор вернёт тот же ответ. - Экспоненциальная задержка с джиттером. Одновременный повтор всех клиентов создаёт вторую волну нагрузки, случайная добавка к паузе её разносит.
- Уважайте
Retry-After. Если заголовок есть, он точнее любой собственной эвристики. - Ограничьте число попыток. Три попытки покрывают почти все временные сбои, дальше правильнее отдать ошибку своему клиенту.
- Обрыв соединения не отменяет генерацию. Прерванный стриминг всё равно тарифицируется: провайдер выполнил запрос. Повтор после обрыва оплачивается дважды.
Полный список кодов и форматы ошибок: Ошибки.