Лимиты и кредиты
Как устроены баланс, списания и ограничения запросов - и как задать лимиты отдельным ключам.
Кредиты
Баланс аккаунта хранится в кредитах, 1 кредит = $1. Каждый запрос сначала резервирует верхнюю оценку стоимости (hold), затем списывает фактический расход. Текущий баланс - GET /v1/credits.
Пополнение - в разделе Кредиты кабинета (карты, СБП, крипта). При нулевом балансе запросы получают 402 insufficient_quota.
Rate limit
Ограничение считается по числу запросов в минуту на каждый ключ, в фиксированном минутном окне. По умолчанию - 600 запросов в минуту; для отдельного ключа значение можно поднять или опустить в кабинете.
Лимит применяется к генерирующим эндпоинтам - /chat/completions и /images/generations. Справочные /models и /credits не лимитируются.
Каждый ответ генерирующего эндпоинта несёт заголовки x-ratelimit-limit и x-ratelimit-remaining. При превышении возвращается 429 с retry-after: 60 - столько секунд остаётся до конца окна в худшем случае.
Лимиты ключа
Для каждого ключа в кабинете можно задать собственный лимит запросов в минуту и потолок трат за период - day · week · month · total. Это ограничивает ущерб от утёкшего ключа и позволяет раздавать ключи командам с предсказуемым расходом.
Запрос по ключу, исчерпавшему свой потолок трат, получает 402 insufficient_quota с code: "spend_limit_exceeded" - то есть тот же статус, что и при нулевом балансе аккаунта, но с другим кодом.