Прочитайте тело ответа
В JSON есть поле type или code. rate_limit_exceeded — частота, insufficient_quota — деньги. От этого зависит всё остальное.
Запрос не отклонён навсегда: вы просто послали их больше, чем разрешено за минуту. Разбираем, где лежит лимит и как под него подстроиться.
Коротко: Rate limit exceeded — это ответ с кодом 429: за последнюю минуту от вашего ключа пришло больше запросов или токенов, чем разрешает тариф. Сам запрос корректный, его просто не приняли в этот момент. Через несколько секунд тот же запрос обычно проходит.
У OpenAI лимит считается отдельно по запросам в минуту (RPM), токенам в минуту (TPM) и запросам в день (RPD) и растёт с уровнем аккаунта: новый аккаунт получает самый низкий. У Anthropic и Google логика та же, цифры свои. Отдельный случай — 429 с текстом insufficient_quota: это не частота, а закончившиеся деньги, и ждать здесь бесполезно.
Лечится тремя вещами: повтор с паузой, которая растёт после каждой неудачи, укорачивание запросов и поднятие лимита у поставщика. Первое надо сделать в любом случае: без повторов с задержкой любой продакшен на API рано или поздно упрётся в 429.
Под каждый сервис можно выпустить свой ключ и видеть расход по нему. Ошибка 429 приходит в обычном формате, повторы в SDK работают как обычно.
https://api.kosareva.cloud/v1, ключ из кабинетаfrom openai import OpenAI client = OpenAI( api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1", ) response = client.chat.completions.create( model="gpt-5-6", messages=[{"role": "user", "content": "Привет!"}], stream=True, )
import OpenAI from "openai"; const client = new OpenAI({ apiKey: "ВАШ_API_КЛЮЧ", baseURL: "https://api.kosareva.cloud/v1", }); const response = await client.chat.completions.create({ model: "gpt-5-6", messages: [{ role: "user", content: "Привет!" }], stream: true, });
curl https://api.kosareva.cloud/v1/chat/completions \ -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5-6","messages":[{"role":"user","content":"Привет!"}],"stream":true}'
Параллельные воркеры, цикл без задержки, несколько сервисов на одном ключе.
Несколько длинных контекстов подряд выбирают TPM быстрее, чем RPM.
У поставщика лимиты растут по мере оплаченной суммы и возраста аккаунта.
Баланс или предоплата исчерпаны, лимит частоты ни при чём.
У новых и дорогих моделей квоты ниже, чем у старых.
В JSON есть поле type или code. rate_limit_exceeded — частота, insufficient_quota — деньги. От этого зависит всё остальное.
Первая пауза 1–2 секунды, каждая следующая вдвое длиннее, не больше пяти попыток. В официальных SDK это есть: параметр max_retries.
Если он есть в ответе, ждите ровно столько секунд, сколько в нём написано, а не свою паузу.
Меньше параллельных потоков, короче контекст, очередь вместо залпа. Для пакетных задач подойдёт batch-режим или ночной прогон.
У поставщика лимит растёт с оплаченной суммой, иногда его можно запросить вручную. Через агрегатор лимит общий на ключ и обычно выше стартового.
Ошибку показывает сам редактор в чате. Подождите минуту и повторите; если повторяется на каждом запросе, проблема в ключе или балансе, а не в частоте.
Ловите исключение RateLimitError и не пишите свой цикл повторов, пока не выставили max_retries.
Включите в ноде Retry On Fail с паузой 5–10 секунд и ограничьте параллельность сценария.
Оберните вызов в with_retry() или задайте max_retries у модели.
Скорее всего это не частота, а квота: в тексте будет insufficient_quota или «exceeded your current quota». Нужно пополнить баланс у поставщика.
Нет: лимит у OpenAI считается на организацию или проект, а не на ключ. Второй ключ делит тот же лимит.
Если в ответе есть Retry-After, столько секунд, сколько там написано. Если нет, начните с одной секунды и удваивайте.
Смотрите заголовки ответа: у OpenAI это x-ratelimit-remaining-requests и x-ratelimit-remaining-tokens, у Anthropic заголовки с префиксом anthropic-ratelimit. В них видно, сколько осталось до сброса окна и когда он наступит, а сами лимиты вашего уровня показаны в разделе Limits в консоли поставщика.
Да, особенно через агрегаторы и шлюзы: если перегружена сама модель у поставщика, часть запросов отбивается с 429, даже когда ваш счётчик далёк от предела. У kosareva.cloud 429 обычно значит именно это, а не лимит ключа, и помогает повтор через несколько секунд или соседняя модель.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.