---
title: Лимиты
description: Потолки, по которым меряется вызов, что получает упёршийся в потолок вызов и как просят о более высоком.
keywords: лимиты, пропускная способность, запросы в секунду, токены в минуту, одновременные стримы, 429, квота
group: gateway
---

## С чем выпускается ключ {#defaults keywords="умолчание, запросы в секунду, токены в минуту, одновременные стримы, квота"}

Ключ выпускается с тремя потолками, и вызов обязан быть ниже каждого. Чтобы их получить, ничего не включают, в запросе о них не просят, и у только что выпущенного ключа они уже есть. Два потолка темпа есть и у организации, и они выше; третий — сколько стримов ключ держит открытыми одновременно — принадлежит только ключу:

:::matrix
| | Запросы | Токены | Одновременные стримы |
| --- | --- | --- | --- |
| Ключ | 20 в секунду | 500 000 в минуту | 16 |
| Организация | 200 в секунду | 5 000 000 в минуту | своего потолка нет |
:::

Вызов меряется сначала по потолкам организации, потом по потолкам ключа. Значение по умолчанию для организации — **десять ключей**, отсюда и её потолки темпа; выпуск одиннадцатого ключа их не поднимает.

Организационный бюджет общий, а не сумма того, что разрешено ключам: вызов может уверенно укладываться в оба потолка своего ключа и всё равно получить отказ по любому из организационных из-за трафика других ключей — тихий ключ упирается в секунду организации так же легко, как в её минуту.

Считаются потолки порознь и по разным часам — один по секунде, другой по минуте, — поэтому нагрузка может свободно укладываться в потолок запросов и всё равно выходить за потолок токенов. Именно так ведут себя несколько очень крупных вызовов в секунду, и именно это застаёт врасплох: со стороны счётчика запросов всё в порядке.

## Сколько стримов открыто одновременно {#concurrent-streams keywords="одновременные стримы, параллельно, агент, субагенты, 16"}

Потолки темпа считают, как часто вызовы приходят. Потолок стримов считает, сколько их открыто прямо сейчас: стрим занимает место с момента, когда его приняли, и до момента, когда он закончился, был прерван клиентом или истёк. Семнадцатый одновременный стрим одного ключа получает `429`, шестнадцать уже открытых при этом продолжают идти.

Занимают место только стримы. Обычный нестримовый вызов не берёт его и не освобождает, сколько бы времени он ни занял, а подсчёт токенов не берёт вообще ничего.

Шестнадцать выбраны под клиента, который держит несколько вызовов в полёте сам: агент с субагентами или с параллельными вызовами инструментов доходит примерно до десяти запросов на один ключ, и потолок стоит выше этого, а не вплотную. Ниже потолка запросов он стоит затем, чтобы всю ёмкость можно было занять разом: шестнадцать стримов открываются шестнадцатью запросами, и клиент без другого трафика набирает их в одну секунду. Набрать больше не запрещено арифметикой — одновременность копится через секунды, — но потолок стримов выше потолка запросов набирался бы не всплеском, а по частям, и по дороге отказывал бы потолок темпа.

Потолок стримов, с которым ключ выпускается, принадлежит ключу, а не организации: два ключа одной организации держат по шестнадцать стримов каждый и друг другу не мешают. Умолчания на стримы у организации нет — в отличие от обоих потолков темпа, которые у организации свои.

Настроенный организационный потолок стримов при этом бывает: если вам его ставили, он общий для всех ключей и проверяется раньше ключевого. Он не появляется сам и в справке по умолчанию не подразумевается — но если он есть, второй ключ его не обходит, и поднимают его отдельно.

Поэтому же один ключ на несколько параллельных агентов — не то же самое, что ключ на агента: шестнадцать мест делятся между всеми, кто этим ключом пользуется. Клиенту, которому места не хватает, второй ключ обходится дешевле повышения — если только его организации не ставили собственный потолок стримов, который ключи делят.

## Что происходит на потолке {#what-happens keywords="429, лимит, оценка, usage, повтор"}

Вызов, который вышел бы за любой из потолков, отклоняется, а не встаёт в очередь: статус — `429`, а `type` в конверте — `rate_limit_error`. Отказ решается до того, как вызов доходит до провайдера, поэтому наверху его не видят. Отказ называет потолок, в который упёрся вызов, само значение потолка, остаток под ним и момент, раньше которого повторять бессмысленно.

Потолок запросов можно считать по мере их прихода. Потолок токенов — нет: сколько будет стоить вызов, неизвестно, пока на него не ответили.

Поэтому платформа оценивает токены вызова до отправки наверх и относит на минуту оценку, а затем сверяет её с фактическим потреблением, о котором сообщает ответ.

Когда сверка доходит, в минуте лежит настоящая величина, а не догадка, и серия вызовов, оказавшихся заметно дешевле своих оценок, оставляет место за собой.

Два случая заканчиваются иначе, и оба сделаны намеренно:

- **Минута уже сменилась** — Коррекция наводится ровно на ту минуту, на которую вызов был отнесён, поэтому, когда последующий вызов уже увёл счётчик в новую минуту, исправлять нечего. Та минута больше не то, на чём стоит счётчик. Уводит его не истечение времени, а именно следующий вызов. И два счётчика уходят вперёд независимо, так что коррекция может дойти до одного и не найти ничего на другом.
- **Изображения** — Оценка действительно остаётся: операция, которая не сообщает токенов вовсе, остаётся с тем, что на неё отнесли. Генерация изображений считается в изображениях, а не в токенах, и коррекция к нулю вернула бы всю оценку обратно — эта поверхность перестала бы стоить хоть что-то против потолка.

Стриминг арифметику не меняет: начавшийся поток — это уже посчитанный вызов. Подсчёт токенов в неё не входит вовсе: эта операция не обращается к провайдеру и не тратит квоту — тем она и удобна перед крупным запросом.

Перед повтором на `429` отступайте, удлиняйте паузу с каждой попыткой и ограничивайте их число.

> [Как выглядит отказ →](/ru/errors)

## Как считать токены заранее {#count-tokens keywords="подсчёт, count_tokens, оценка, заранее"}

Потолок токенов упирается в то, что стоимость вызова неизвестна, пока на него не ответили. Одну половину этого можно узнать до отправки: подсчёт токенов на диалекте Messages принимает подмножество членов обычного вызова — `model`, `messages`, `system`, `tools`, `tool_choice`, `thinking`, `metadata` и `context_management` — и отвечает детерминированной локальной оценкой **входных** токенов. Члены, которые описывают генерацию, а не вход, эта операция отвергает: `max_tokens`, `stream`, `output_config`, `stop_sequences`, `temperature` и `top_p`.

Он не обращается к провайдеру, не создаёт ни запроса, ни резерва, не трогает баланса и не тратит квоту темпа. Поэтому его можно ставить перед крупным запросом, не платя за это ни деньгами, ни местом под потолком.

Выходную половину он не считает и посчитать не может: её ограничиваете вы сами — тем потолком вывода, который называет запрос.

> [Как это вызвать →](/ru/messages)

## Как просить о большем {#raising keywords="повышение, поддержка, потолок"}

Повышение — это разговор, а не настройка. Ни один из трёх потолков не правится в консоли, и ни один член запроса не просит о более высоком. Напишите в поддержку, описав трафик, который нужно пропускать, — его форму, а не только пик, — и потолки на вашем ключе поднимут.
