Quotas
| Surface | Limite | Portée |
|---|---|---|
API (/api/v1/...) | 120 requêtes / heure | par clé d’API (SHA256 de X-Api-Key) |
API (/api/v1/...) | 500 requêtes / heure | par adresse IP (anti-flood) |
Redirections (/r/...) | 500 requêtes / heure | par adresse IP |
Dépassement : 429
Lorsqu’un quota de requêtes est dépassé, l’API renvoie un 429 Too Many Requests :
429 Rate limit exceeded
Aucun en-tête de quota (
X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After…) n’est aujourd’hui renvoyé par l’API. Ne vous appuyez pas dessus : basez votre logique sur la réception d’un 429. L’exposition de ces en-têtes figure dans la roadmap, mais aucune garantie n’est donnée à ce jour.Bonnes pratiques
Mettre en cache avec content_revision
La meilleure façon de rester sous les quotas est de ne pas refaire d’appel inutile. Chaque ressource expose un entier content_revision, commun à tout l’établissement. Stockez la dernière valeur connue et ne re-téléchargez le contenu que lorsqu’elle augmente.
content_revision
Comment utiliser
content_revision pour mettre en cache et invalider proprement.Préférer les webhooks au polling
Interroger l’API en boucle (« polling ») pour détecter un changement épuise vos quotas. Abonnez-vous plutôt aux webhooks : Le Commis vous notifie d’un changement (establishment.content_updated), et vous ne re-lisez l’API qu’à ce moment-là.
Webhooks
Recevez un signal de changement au lieu d’interroger l’API en continu.
Appliquer un backoff sur 429
Si vous recevez un 429, attendez avant de réessayer, avec un délai croissant (backoff exponentiel) et un peu de hasard (jitter) pour éviter les rafales synchronisées.
Backoff exponentiel (JavaScript)
Éviter le polling agressif
- Ne déclenchez pas un appel par chargement de page côté visiteur : passez par votre propre cache.
- Espacez vos tâches planifiées ; un rafraîchissement à la minute n’a de sens que si le contenu change à la minute (ce qui n’est presque jamais le cas pour des menus).
- Regroupez vos lectures : sur un changement notifié, re-lisez seulement les ressources listées dans
changed_resourcesdu webhook.