Прочитайте тело ответа
В JSON есть поле type или code. rate_limit_exceeded — частота, insufficient_quota — деньги. От этого зависит всё остальное.
Запрос не отклонён навсегда: вы просто послали их больше, чем разрешено за минуту. Разбираем, где лежит лимит и как под него подстроиться.
Rate limit exceeded — это ответ с кодом 429: за последнюю минуту от вашего ключа пришло больше запросов или токенов, чем разрешает тариф. Сам запрос корректный, его просто не приняли в этот момент. Через несколько секунд тот же запрос обычно проходит.
У OpenAI лимит считается отдельно по запросам в минуту (RPM), токенам в минуту (TPM) и запросам в день (RPD) и растёт с уровнем аккаунта: новый аккаунт получает самый низкий. У Anthropic и Google логика та же, цифры свои. Отдельный случай — 429 с текстом insufficient_quota: это не частота, а закончившиеся деньги, и ждать здесь бесполезно.
Лечится тремя вещами: повтор с паузой, которая растёт после каждой неудачи, укорачивание запросов и поднятие лимита у поставщика. Первое надо сделать в любом случае: без повторов с задержкой любой продакшен на API рано или поздно упрётся в 429.
В JSON есть поле type или code. rate_limit_exceeded — частота, insufficient_quota — деньги. От этого зависит всё остальное.
Первая пауза 1–2 секунды, каждая следующая вдвое длиннее, не больше пяти попыток. В официальных SDK это есть: параметр max_retries.
from openai import OpenAI client = OpenAI(max_retries=5) # экспоненциальные повторы встроены
Если он есть в ответе, ждите ровно столько секунд, сколько в нём написано, а не свою паузу.
Меньше параллельных потоков, короче контекст, очередь вместо залпа. Для пакетных задач подойдёт batch-режим или ночной прогон.
У поставщика лимит растёт с оплаченной суммой, иногда его можно запросить вручную. Через агрегатор лимит общий на ключ и обычно выше стартового.
Скорее всего это не частота, а квота: в тексте будет insufficient_quota или «exceeded your current quota». Нужно пополнить баланс у поставщика.
Нет: лимит у OpenAI считается на организацию или проект, а не на ключ. Второй ключ делит тот же лимит.
Если в ответе есть Retry-After, столько секунд, сколько там написано. Если нет, начните с одной секунды и удваивайте.
Через наш шлюз лимит частоты один на ваш ключ и заметно выше стартового у поставщика, потому что квота общая на весь сервис. Если 429 всё же пришёл, тело ответа проброшено без изменений, повторы в SDK работают как обычно. Баланс в рублях виден в кабинете, и 429 из-за пустого счёта вы увидите заранее по уведомлению о низком балансе.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.