Aller au contenu
P
Retour aux guides

Limites de débit

Limites par forfait et en-têtes de réponse X-RateLimit-* / Retry-After.

Comment fonctionne la limitation

Les requêtes sont limitées sur une fenêtre glissante d'une minute. Les intégrations — clés d'API et jetons issus de POST /api/v1/auth/login — sont limitées par organisation : votre quota par minute dépend de votre forfait, et toutes les clés d'une organisation partagent la même fenêtre. Le trafic de bac à sable est compté dans un compartiment séparé, de sorte qu'explorer l'API n'entame jamais votre quota de production.

Les personnes qui travaillent dans les applications de PIE sont limitées autrement, car une seule page déclenche de nombreuses requêtes : chaque utilisateur connecté dispose de son propre quota de 600 requêtes par minute, et l'ensemble des utilisateurs connectés d'une organisation peut utiliser jusqu'à cinq fois le quota du forfait. Les sessions de navigateur n'épuisent donc jamais le quota dont dépendent vos intégrations.

Les tentatives de connexion sont limitées à part et ne comptent que les échecs : dix tentatives échouées pour un compte depuis une adresse IP, ou cinquante depuis une adresse IP sur plusieurs comptes, en 15 minutes. Les connexions réussies ne comptent jamais.

En-têtes de réponse

Chaque réponse indique votre situation actuelle :

  • X-RateLimit-Limit — le maximum de requêtes autorisées dans la fenêtre.
  • X-RateLimit-Remaining — les requêtes encore disponibles dans la fenêtre courante.
  • Retry-After — envoyé uniquement sur un 429 ; le nombre de secondes à attendre avant de réessayer.

Gérer 429 Too Many Requests

Lorsque vous dépassez la limite, PIE répond 429 avec l'enveloppe d'erreur standard et un en-tête Retry-After :

HTTP/1.1 429 Too Many Requests
Retry-After: 12

{ "error": { "code": "RATE_LIMITED", "message": "Too many requests" } }

Patientez au moins Retry-After secondes avant de réessayer. Un client robuste respecte l'en-tête et ajoute du jitter pour éviter une tempête de tentatives synchronisées :

async function call(url, key) {
  for (let attempt = 0; ; attempt++) {
    const res = await fetch(url, { headers: { "X-API-Key": key } });
    if (res.status !== 429) return res;

    const wait = Number(res.headers.get("Retry-After") ?? 1);
    await sleep((wait + Math.random()) * 1000);
  }
}

Surveillez X-RateLimit-Remaining et ralentissez de manière proactive plutôt que d'attendre un 429. Des 429 répétés sur une clé d'API déclenchent une notification d'avertissement de limite de débit auprès des administrateurs de votre organisation.