HTTP · HTTP 429 · Too Many Requests

Ошибка 429 Too Many Requests в API

HTTP 429 Too Many Requests значит, что вы отправили слишком много запросов или токенов за короткое время и сервер временно их ограничивает. Подождите столько секунд, сколько указано в заголовке Retry-After, или повторите запрос с растущей паузой. Если 429 приходит из-за исчерпанного баланса или квоты, повторы не помогут — нужно пополнить счёт.

Обновлено: · по официальной документации IETF, OpenAI, Anthropic, Google

Два разных случая с одним кодом

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

Исчерпанная квота или баланс: у OpenAI это insufficient_quota и credit_balance_exhausted, у Anthropic — достигнутый месячный лимит расходов (без заголовка retry-after). Такой 429 не пройдёт, пока вы не пополните баланс или не поднимете лимит.

Как отличить по ответу

Смотрите тип и код ошибки в теле ответа, а не только статус. Заголовок Retry-After (RFC 9110) задаётся в секундах или датой — клиент должен понимать оба формата. У Anthropic есть заголовки anthropic-ratelimit-*, у OpenAI — x-ratelimit-remaining-requests и x-ratelimit-reset-tokens: по ним видно, какой лимит закончился.

Что делать в коде

Повторяйте только временные ошибки: 429 с Retry-After, 500, 503, 529. Ограничьте число попыток, добавляйте случайную задержку, не вкладывайте повторы SDK внутрь своих повторов — иначе нагрузка растёт лавиной. Неудачные запросы тоже засчитываются в минутный лимит.

Снижайте частоту: очередь с ограничением параллельности, батчи, разумный max_tokens. Если трафик резко вырос, наращивайте его постепенно — у Anthropic и OpenAI есть отдельные лимиты на ускорение.

Если 429 приходит через API429

API429 — тоже API, и он тоже может вернуть 429, если запросов слишком много для выбранной модели. Обрабатывайте его так же: Retry-After и повтор с паузой. Тем же ключом можно сразу отправить запрос в другую модель — поменяйте только поле model. Баланс у всех моделей общий, пополняется картой РФ, по счёту или в USDT/TON.

Повтор запроса с Retry-After: пример на Python

import email.utils, os, random, time, requests

URL = "https://gateway.api429.com/v1/chat/completions"
HEADERS = {"Authorization": "Bearer " + os.environ["API429_API_KEY"]}
TRANSIENT = {429, 500, 503, 529}

def retry_after(value):
    if not value:
        return None
    if value.isdigit():
        return int(value)
    return max(0, email.utils.parsedate_to_datetime(value).timestamp() - time.time())

def chat(payload, attempts=5):
    for attempt in range(attempts):
        r = requests.post(URL, headers=HEADERS, json=payload, timeout=120)
        if r.status_code not in TRANSIENT:
            r.raise_for_status()
            return r.json()
        wait = retry_after(r.headers.get("Retry-After"))
        time.sleep(wait if wait is not None else min(60, 2 ** attempt) + random.random())
    r.raise_for_status()

Частые вопросы

Что означает ошибка 429 в API?

Сервер ограничивает частоту запросов: за единицу времени вы отправили больше запросов или токенов, чем позволяет лимит. Дождитесь времени из Retry-After или повторите запрос с растущей паузой.

Почему 429 не проходит после паузы?

Скорее всего, это не лимит частоты, а исчерпанная квота или баланс: insufficient_quota у OpenAI, месячный лимит расходов у Anthropic, 402 Insufficient Balance у DeepSeek. Здесь нужно пополнить счёт.

Поможет ли новый API-ключ?

Обычно нет: у Gemini, OpenAI и Anthropic лимиты считаются на проект или организацию, а не на ключ.

Как правильно повторять запрос?

Только для временных ошибок, с ограничением попыток, экспоненциальной паузой и случайной добавкой. Если есть Retry-After — ждите не меньше указанного.

Источники

Что дальше

Другие ошибки API

Telegram