HTTP 429 Too Many Requests

Помедленнее: клиент отправил больше запросов, чем сервер допускает за определённый промежуток времени.

Что означает HTTP 429

HTTP 429 Too Many Requests означает, что клиент превысил лимит запросов — по IP, по API-ключу, по пользователю или по эндпоинту. Корректно настроенные серверы включают заголовок Retry-After (секунды или дата) и часто заголовки X-RateLimit-*, описывающие квоту.

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

Частые причины ошибок 429

  • Клиент API опрашивает слишком часто или превышает свою квоту всплесками запросов.
  • Веб-скрапинг без задержек между запросами.
  • Баг: цикл повторов без задержки, бомбардирующий один и тот же эндпоинт.
  • Общий IP (офисный NAT, VPN, исходящий трафик serverless), где суммарный трафик превышает лимит.
  • Эндпоинты входа ограничивают повторяющиеся попытки в качестве защиты от перебора.

Как исправить со стороны клиента/разработчика

  • Точно соблюдайте Retry-After; если его нет, используйте экспоненциальную задержку с джиттером (например, 1с, 2с, 4с, 8с…).
  • Читайте заголовки API X-RateLimit-Remaining/Сбросить и заранее распределяйте запросы по времени.
  • Группируйте запросы и кэшируйте ответы вместо повторного получения одних и тех же данных.
  • Распределяйте нагрузку по времени, а не по одноразовым IP-адресам — обход лимитов обычно нарушает условия использования API.

Как исправить со стороны владельца API

  • Всегда отправляйте Retry-After и заголовки квоты, чтобы клиенты могли вести себя корректно.
  • По возможности ограничивайте по ключу/пользователю, а не по голому IP, чтобы не наказывать общие сети.

Пример ответа

HTTP/1.1 429 Too Many Requests
Retry-After: 30
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0

{"error":"rate_limited","retry_after":30}

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

Сколько нужно ждать после 429?

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

Означает ли 429, что меня забанили?

Нет — это временное ограничение. Однако если его постоянно игнорировать, это может привести к настоящему бану по IP или ключу.

Почему я получаю 429 на первом же запросе?

Лимит, вероятно, общий: ваш IP (VPN, офисная сеть) или API-ключ уже израсходовали квоту в другом месте.