Rate limit
Pour garantir la stabilité et les performances de l’API DiscordTop, chaque intégration est soumise à des limites de requêtes (Rate Limits).
Lorsque ces limites sont atteintes, l’API renvoie une erreur dédiée.
Les rate limits permettent d’éviter :
le spam involontaire,
les boucles infinies dans les bots,
les attaques ou abus de l’API,
et d’assurer une expérience fiable pour tous les serveurs.
Comment fonctionne le Rate Limit ?
L’API utilise un système de limitation basé sur :
le token API (
api_tokendu serveur Discord),et, en absence de token, l’adresse IP de l’appelant.
Chaque token dispose d’un quota indépendant.
Par défaut :
30 requêtes / minute / api_tokenLorsque la limite est atteinte, l’API renvoie automatiquement une erreur RATE_LIMITED.
Erreur RATE_LIMITED
RATE_LIMITEDEn cas de dépassement, l’API renvoie une réponse JSON standardisée :
{
"ok": false,
"error": "RATE_LIMITED",
"message": "Rate limit exceeded for this API token."
}Code HTTP renvoyé :
429 Too Many RequestsChamps renvoyés :
status
Code HTTP 429
error
Message clair, adapté à la locale (fr, en, etc.)
retry_after
Temps recommandé (en secondes) avant de réessayer
Reset de la limite
Le compteur se réinitialise automatiquement au bout d’une minute.
Pendant ce temps, il est recommandé de :
mettre en cache les résultats,
réduire la fréquence des appels,
éviter les appels simultanés,
centraliser vos appels API dans un seul module.
Locale et messages d’erreur
L’API DiscordTop adapte automatiquement les messages selon la langue de l’utilisateur :
L’ordre de priorité est :
locale=xx(query ou body)Accept-Languagex-localeFallback →
en
Exemples :
fr
"Trop de requêtes. Veuillez réessayer plus tard."
en
"Rate limit exceeded. Please try again later."
Bonnes pratiques
Voici quelques recommandations pour éviter d’être limité :
- Cachez la réponse si possible
Exemples :
mémoriser la réponse pendant 2–5 secondes dans votre bot
éviter de multiplier les appels identiques
- Ne faites pas d’appel via le front-end
Les navigateurs peuvent spam / reload plus facilement → utilisez uniquement votre backend.
- Centralisez vos appels
Évitez d’appeler l’API dans plusieurs endroits simultanément (ex. inside command + middleware + cron).
- Vérifiez toujours que l’utilisateur peut déclencher une action avant d’appeler l’API
(ex : s’il spam un bouton Discord)
- En cas d'échec à cause d’un 429, appliquez un retry after progressif
1ère tentative : attendre 1 seconde 2ème tentative : attendre 3 secondes 3ème tentative : annuler
Exemple de gestion simple
const res = await fetch(url);
if (res.status === 429) {
const body = await res.json();
console.log(body.error, "Réessayez dans", body.retry_after, "s");
return;
}
const data = await res.json();Notes
Le système de rate limit peut évoluer (Redis distribué, quotas Premium, etc.).
Des headers d’observation (
X-RateLimit-Remaining, etc.) pourront être ajoutés dans une prochaine version.
Last updated