Перейти к содержимому
Rate Limit Story

Ответ 429 простыми словами

Ваш API ответил 429. Вот что он на самом деле имел в виду.

Вставьте заголовки ответа. Rate Limit Story прочитает лимит, остаток, время сброса и нужную паузу, а затем напишет историю из четырёх кадров и готовый ответ для клиента, который упёрся в стену.

Поддерживаемые API
  1. Клиент

    Отправляю пакет 501 из 600…

  2. API

    Слишком много запросов! Корзина токенов пуста.

  3. Rate Limit Story

    Подожди 20 с и повтори со случайной добавкой.

Пример комикса. Числа взяты из образца в стиле OpenAI.

Что это

Бесплатный читатель заголовков для лимитов запросов. Понимает Retry After, семейство X RateLimit, поля IETF RateLimit и форматы GitHub, OpenAI, Anthropic, Shopify и Discord.

Для кого

Для владельцев API, поддержки разработчиков, менеджеров по партнёрам и всех, кому клиент только что прислал скриншот с 429 без пояснений.

Какую проблему решает

Заголовки лимитов непонятны, смешивают время Unix с секундами и у каждого поставщика свои. Люди гадают, повторяют слишком рано и попадают в блокировку ещё дольше.

История одного ответа

Всё читается в этой вкладке. Ничего из вставленного не загружается и не сохраняется.

Загрузить образец
Вставьте сырые заголовки, вывод curl -i или JSON объект с заголовками. Строка статуса необязательна.

Истории пока нет

Вставьте заголовки неудачного запроса или загрузите один из образцов.

Заголовки не покидают эту страницу. И всё же удалите заголовки авторизации и cookie, прежде чем делиться скриншотом.

Какие заголовки понимает

Можно смешивать заголовки разных стилей в одной вставке. Регистр букв не важен.

Retry After

Retry-After: 20

Секунды или дата HTTP. Если он есть, он важнее любых других подсказок о сбросе.

Семейство X RateLimit

X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1792661820

Используется в GitHub, API в стиле Twitter и многих других. Сброс бывает в секундах Unix, миллисекундах или секундах от текущего момента, и инструмент говорит, что выбрал.

IETF RateLimit

RateLimit-Policy: "default";q=100;w=60
RateLimit: "default";r=7;t=42

Стандартные поля с квотой, окном, остатком и временем до сброса.

OpenAI и Anthropic

x-ratelimit-remaining-tokens: 0
x-ratelimit-reset-tokens: 18.4s

Отдельные корзины запросов и токенов с длительностями вроде 6m0s. Пустая корзина отмечается как та, что вас сдерживает.

Shopify и Discord

X-Shopify-Shop-Api-Call-Limit: 38/40
X-RateLimit-Reset-After: 2.75

Счётчики вида использовано из общего, сброс через секунды, корзины, области действия и глобальные лимиты.

Как пользоваться

  1. Скопируйте заголовки

    Из вкладки сети в браузере, вывода curl -i, логов или скриншота от клиента. Важны только строки заголовков.

  2. Вставьте и запустите

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

  3. Прочитайте четыре кадра

    Что случилось, где вы сейчас, когда сброс и что делать. Время показано в UTC и в вашем часовом поясе.

  4. Отправьте ответ

    Скопируйте готовый ответ в тикет или всю историю для своих заметок.

Полезно знать

  • Инструмент объясняет вставленные заголовки. Он не обращается к API и не видит лимиты, которые API держит при себе.
  • Если значение сброса неоднозначно, числа больше миллиарда считаются временем Unix, а меньшие секундами.
  • Для безопасного темпа нужны и лимит, и длина окна. Многие API присылают только лимит.
  • Время в вашем поясе берётся из часов этого устройства.

Вопросы

Почему GitHub присылает 403 вместо 429?

На часть запросов сверх лимита GitHub отвечает 403. Если остаток равен нулю, история всё равно считает запрос ограниченным.

Что важнее, Retry After или время сброса?

Retry After. Это сервер прямо говорит, сколько ждать, а время сброса описывает всё окно целиком.

Что такое случайная добавка и зачем она?

Небольшая случайная лишняя пауза. Без неё все заблокированные клиенты повторят запрос в одну секунду и снова упрутся в лимит.

Безопасно ли вставлять настоящие заголовки?

Страница ничего никуда не отправляет. И всё же удалите Authorization и cookie, прежде чем делиться данными.

Связаться с автором

Есть вопрос, идея или предложение о работе? Напишите в X или Telegram.

Поддержать автора

Если инструмент сэкономил вам время, можно отправить чаевые на этот EVM адрес из своего кошелька.

0xd28Fd90eD69092bd01598f237aad33a0cc9c3EeA