Servor. docs
en

Limites de débit

Limites de débit de l'API Servor — 3 requêtes par seconde et 5000 par heure par jeton, et comment gérer un 429 avec l'en-tête retry-after.

L'API Servor applique une limite de débit par jeton afin qu'une intégration ne puisse pas priver les autres de ressources. Cette page détaille les limites exactes, la forme d'une réponse 429, et comment la gérer proprement avec l'en-tête retry-after.

Les limites

Les limites s'appliquent par jeton API, et non par équipe ou par IP. Chaque jeton dispose de son propre budget :

FenêtreLimite
Par seconde3 requêtes
Par heure5000 requêtes

Si vous faites tourner plusieurs intégrations, donnez à chacune son propre jeton : des jetons distincts ont des budgets distincts, et vous pouvez en révoquer un sans toucher aux autres. Gérez vos jetons dans Servor.

Quand vous atteignez la limite

Dépasser l'une ou l'autre fenêtre renvoie un HTTP 429 Too Many Requests avec un en-tête retry-after indiquant combien de secondes attendre avant de réessayer :

HTTP/1.1 429 Too Many Requests
retry-after: 2
{ "error": "Rate limit exceeded", "code": "rate_limited" }

Lisez toujours retry-after

Ne devinez pas le délai — lisez la valeur de retry-after et patientez exactement ce nombre de secondes avant de réessayer. C'est le moyen fiable de repasser sous la limite.

Gérer le 429 dans votre code

Le principe est simple : sur un 429, attendez retry-after secondes, puis réessayez. Plafonnez le nombre de tentatives pour qu'une limite persistante ne boucle pas indéfiniment.

async function apiGet(path: string, token: string, tries = 5): Promise<Response> {
  const res = await fetch(`https://api.servor.app/v1${path}`, {
    headers: { Authorization: `Bearer ${token}` },
  });
 
  if (res.status === 429 && tries > 0) {
    const wait = Number(res.headers.get("retry-after") ?? "1");
    await new Promise((r) => setTimeout(r, wait * 1000));
    return apiGet(path, token, tries - 1);
  }
 
  return res;
}
# curl : réessaie automatiquement en respectant retry-after
curl --retry 5 --retry-delay 0 \
  https://api.servor.app/v1/monitors \
  -H "Authorization: Bearer sv_live_xxxxxxxxxxxx"

Rester sous la limite

  • Régulez vos requêtes. Maintenez le trafic en régime permanent sous 3 requêtes/seconde par jeton plutôt que d'envoyer des rafales.
  • Sondez à un intervalle raisonnable. Pour les miroirs de statut et les tableaux de bord, sondez toutes les 30 à 60 secondes, pas chaque seconde — vous resterez très en dessous de 5000/heure.
  • Mettez en cache ce qui change rarement. Les métadonnées des serveurs et des pages de statut n'ont pas besoin d'être rechargées à chaque boucle.
  • Répartissez la charge sur plusieurs jetons. Des charges indépendantes méritent des jetons et des budgets indépendants.
  • Faites du back-off sur 429. Traitez-le comme un contrôle de flux normal, pas comme une erreur à journaliser et ignorer.

Limites de débit et limites du plan

Il s'agit de limites de débit par requête. Elles sont distinctes des limites de ressources (serveurs, moniteurs, pages de statut) de votre plan — voir plans et limites. L'accès à l'API publique elle-même nécessite le plan AI.

Voir aussi