Aller au contenu
Rate Limit Story

Le 429 expliqué simplement

Votre API a répondu 429. Voici ce qu'elle voulait vraiment dire.

Collez les entêtes de la réponse. Rate Limit Story lit la limite, ce qui reste, l'heure de remise à zéro et le temps d'attente, puis écrit une histoire en quatre cases et une réponse prête pour le client qui s'est heurté au mur.

Voir les API prises en charge
  1. Client

    J'envoie le lot 501 sur 600…

  2. API

    Trop de requêtes ! Le seau de jetons est vide.

  3. Rate Limit Story

    Attends 20 s, puis réessaie avec un petit délai aléatoire.

Planche de démo. Les chiffres viennent de l'exemple au format OpenAI.

Ce que c'est

Un lecteur gratuit d'entêtes de limite de débit. Il comprend Retry After, la famille X RateLimit, les champs IETF RateLimit et les formats de GitHub, OpenAI, Anthropic, Shopify et Discord.

Pour qui

Les éditeurs d'API, le support aux développeurs, les responsables partenaires et toute personne qui vient de recevoir d'un client une capture d'un 429 sans aucun contexte.

Le problème résolu

Les entêtes de limite sont obscurs, mélangent temps Unix et secondes et changent d'un fournisseur à l'autre. On devine, on réessaie trop vite et on se fait bloquer plus longtemps.

Racontez l'histoire d'une réponse

Tout est lu dans cet onglet. Rien de ce que vous collez n'est envoyé ni conservé.

Charger un exemple
Collez les entêtes bruts, la sortie de curl -i ou un objet JSON d'entêtes. La ligne de statut est facultative.

Pas encore d'histoire

Collez les entêtes d'un appel en échec ou chargez un des exemples.

Les entêtes ne quittent jamais cette page. Retirez quand même les entêtes d'authentification et de cookies avant de partager une capture.

Les entêtes compris

Vous pouvez mélanger plusieurs styles dans un même collage. La casse des noms n'a pas d'importance.

Retry After

Retry-After: 20

Des secondes ou une date HTTP. Quand il est présent, il l'emporte sur tout autre indice de remise à zéro.

Famille X RateLimit

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

Utilisée par GitHub, les API dans le style de Twitter et bien d'autres. La remise à zéro peut être en secondes Unix, en millisecondes ou en secondes à partir de maintenant, et l'outil indique ce qu'il a retenu.

IETF RateLimit

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

Les champs standard avec quota, fenêtre, reste et délai avant remise à zéro.

OpenAI et Anthropic

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

Des seaux séparés pour les requêtes et les jetons, avec des durées comme 6m0s. Le seau vide est signalé comme celui qui vous bloque.

Shopify et Discord

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

Compteurs consommé sur total, remise à zéro en secondes, seaux, portées et limites globales.

Mode d'emploi

  1. Copiez les entêtes

    Depuis l'onglet réseau du navigateur, curl -i, vos journaux ou la capture envoyée par un client. Seules les lignes d'entête comptent.

  2. Collez et lancez

    Chaque seau est lu à part, et celui qui est vide ou presque devient le personnage principal.

  3. Lisez les quatre cases

    Ce qui s'est passé, où vous en êtes, quand ça repart et que faire, avec les heures en UTC et dans votre fuseau.

  4. Envoyez la réponse

    Copiez la réponse prête dans le ticket, ou toute l'histoire pour vos propres notes.

Bon à savoir

  • L'outil explique les entêtes que vous collez. Il n'appelle pas l'API et ne voit pas les limites qu'elle garde pour elle.
  • Quand une valeur de remise à zéro est ambiguë, les nombres supérieurs à un milliard sont lus comme un temps Unix et les plus petits comme des secondes.
  • Le rythme sûr demande à la fois la limite et la durée de la fenêtre. Beaucoup d'API n'envoient que la limite.
  • Les heures de votre fuseau suivent l'horloge de cet appareil.

Questions

Pourquoi GitHub renvoie 403 au lieu de 429 ?

GitHub répond 403 à certains appels limités. L'histoire les compte quand même comme limités dès que le reste vaut zéro.

Qui l'emporte, Retry After ou l'heure de remise à zéro ?

Retry After. C'est le serveur qui vous dit exactement combien attendre, alors que la remise à zéro décrit toute la fenêtre.

À quoi sert le délai aléatoire ?

C'est une petite attente en plus, tirée au hasard. Sans elle, tous les clients bloqués réessaient à la même seconde et retombent sur la limite.

Coller de vrais entêtes, c'est sans risque ?

La page n'envoie rien nulle part. Retirez tout de même Authorization et les cookies avant de partager quoi que ce soit.

Contacter le créateur

Une question, une idée ou une offre d’emploi ? Écrivez sur X ou Telegram.

Soutenir le créateur

Si cet outil vous a fait gagner du temps, vous pouvez envoyer un pourboire à cette adresse EVM depuis votre portefeuille.

0xd28Fd90eD69092bd01598f237aad33a0cc9c3EeA