Limites de débit

Requêtes par minute, réponse 429, en-tête Retry-After et gardes d'appel.

Limite par clé

Chaque clé d'API peut envoyer 120 requêtes par fenêtre de 60 secondes. Au-delà, l'API répond 429 avec le code rate_limited et un en-tête Retry-After qui indique le nombre de secondes à attendre.

async function call(url, init, attempts = 5) {
  for (let i = 0; i < attempts; i++) {
    const res = await fetch(url, init);
    if (res.status !== 429) return res;
    const wait = Number(res.headers.get("Retry-After") ?? 1);
    await new Promise((r) => setTimeout(r, wait * 1000));
  }
  throw new Error("rate_limited");
}

Gardes d'appel

Le lancement d'appels a ses propres gardes, partagées avec le dashboard : appels simultanés, appels par heure et appels planifiés en attente. Elles répondent aussi 429, avec les codes concurrent_limit, hourly_limit et pending_limit. Les autres refus ne sont pas des limites de débit : outside_hours (422), do_not_call et country_not_allowed (403).

Bonnes pratiques

  • Respectez Retry-After au lieu de réessayer immédiatement.
  • Ajoutez de l'aléa à votre délai croissant quand plusieurs travailleurs partagent une clé.
  • Étalez les traitements en masse dans le temps, ou utilisez des clés distinctes pour des systèmes distincts afin que l'un n'affame pas l'autre.
  • Les livraisons de webhooks ne comptent pas dans la limite.