Klantly Developers

Limites de requêtes

Combien de requêtes vous pouvez faire, comment savoir où vous en êtes et comment ralentir proprement.

Limites

LimiteNombreDescriptionFenêtre (secondes)
key_minute120requêtes par minute pour cette clé60
company_minute300requêtes par minute pour cette entreprise60
company_writes60actions d'écriture par minute pour cette entreprise60
company_heavy10actions lourdes par minute pour cette entreprise60
company_day50.000requêtes par jour pour cette entreprise86400
auth_failures20échecs de connexion par minute depuis cette adresse IP60

La limite par entreprise s'applique à toutes les clés de votre entreprise ensemble. Les actions d'écriture (POST, PATCH, DELETE) comptent en plus pour la limite d'écriture. Les fenêtres sont fixes : une limite par minute repart à chaque minute pleine, la limite journalière à minuit UTC. Une requête refusée compte aussi. Vous avez durablement besoin de plus ? Contactez le support.

Les actions lourdes ont leur propre limite, plus stricte : envoyer un devis ou une facture par e-mail, récupérer un PDF, envoyer un message dans la boîte de réception, envoyer une demande d'avis, envoyer à un client un message au sujet d'un rendez-vous et envoyer un message de test vers un endpoint de webhook.

Par ailleurs, quelques limites n'ont rien à voir avec le rythme de vos requêtes, mais vous les voyez tout de même revenir sous la forme 429 rate_limited :

  • au maximum 200 uploads (pièces jointes et photos de bon d'intervention) par entreprise et par jour, sous la forme 429 rate_limited ;
  • au maximum 20 messages par heure dans la même conversation, sous la forme 429 rate_limited ;
  • au maximum 250 messages et e-mails sortants vers des clients par entreprise et par heure (boîte de réception, e-mails de devis et de facture ensemble) et au plus 20 envois du même document par 24 heures. Dans la boîte de réception, cela revient sous la forme 429 rate_limited ; lors de l'envoi par e-mail d'un devis ou d'une facture, sous la forme 403 forbidden.

En-têtes

Chaque réponse vous indique où vous en êtes :

En-tête Signification
RateLimit-Policy Toutes les limites qui s'appliquent à cette requête
RateLimit Requêtes restantes et secondes avant la réinitialisation, pour la limite la plus stricte
X-RateLimit-Limit Taille de la limite la plus stricte
X-RateLimit-Remaining Encore disponible dans la fenêtre actuelle
X-RateLimit-Reset Heure Unix à laquelle la fenêtre recommence

En cas de 429

Un 429 rate_limited contient un en-tête Retry-After indiquant le nombre de secondes à attendre. Le champ limit de la réponse indique la limite atteinte.

JavaScript
async function request(url, options, attempt = 0) {
  const response = await fetch(url, options);

  if (response.status === 429 && attempt < 5) {
    const seconds = Number(response.headers.get('Retry-After') ?? 1);
    await new Promise((resolve) => setTimeout(resolve, seconds * 1000));

    return request(url, options, attempt + 1);
  }

  return response;
}

Astuce

Répartissez les grandes synchronisations dans le temps et utilisez limit=100 : vous récupérez davantage avec moins de requêtes.

Dernière mise à jour le 21 septembre 2026