Anthropic Claude · HTTP 429 · rate_limit_error

Claude API: ошибка 429 rate_limit_error

429 rate_limit_error в Claude API значит, что организация превысила один из лимитов Anthropic: запросы в минуту, входные или выходные токены в минуту либо месячный лимит расходов. Если в ответе есть retry-after — подождите указанное число секунд. Если retry-after нет и в деталях ошибки стоит enforced_spend_limit_reached, повторы не помогут до начала следующего месяца или повышения лимита.

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

Какие лимиты считает Anthropic

RPM — запросы в минуту, ITPM — входные токены в минуту, OTPM — выходные токены в минуту, отдельно для каждого класса моделей. Лимит работает как «ведро токенов»: ёмкость восполняется непрерывно, а не сбрасывается раз в минуту. Поэтому 60 RPM могут проявиться как один запрос в секунду.

Есть лимит ускорения при резком росте трафика и месячный лимит расходов по уровню аккаунта. Когда он достигнут, запросы останавливаются до 00:00 UTC первого числа следующего месяца.

Заголовки ответа

retry-after — сколько секунд ждать; приходит не на каждый 429 и никогда не приходит на 429 из-за лимита расходов. anthropic-ratelimit-requests-remaining, anthropic-ratelimit-tokens-remaining и …-reset показывают остаток и время восстановления.

Что делать

Ждать retry-after, повторять с паузой и ограничением попыток, наращивать трафик постепенно. Кэшировать промпты: у большинства моделей прочитанные из кэша токены не учитываются в ITPM. Повысить уровень аккаунта в консоли Anthropic.

Если прямой аккаунт Anthropic недоступен или неудобен — подключите Claude через API429: OpenAI-совместимый формат, один ключ для Claude, GPT и Gemini, оплата картой РФ, по счёту или в USDT/TON. Обрабатывать 429 и Retry-After нужно и здесь.

Повтор запроса с 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 у Claude приходит при небольшой нагрузке?

Лимит считается непрерывно: короткий всплеск запросов может превысить его, даже если в среднем за минуту запросов мало.

Что такое enforced_spend_limit_reached?

Достигнут месячный лимит расходов уровня аккаунта. Такой 429 приходит без retry-after и не проходит до начала следующего месяца или повышения уровня.

Поможет ли кэширование промптов?

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

Можно ли пользоваться Claude API из России?

Напрямую Anthropic Россию не поддерживает. Через API429 Claude доступен с оплатой картой РФ, по счёту или в USDT/TON.

Источники

Что дальше

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

Telegram