Limites de requêtes
Combien de requêtes vous pouvez faire, comment savoir où vous en êtes et comment ralentir proprement.
Limites
| Limite | Nombre | Description | Fenêtre (secondes) |
|---|---|---|---|
key_minute | 120 | requêtes par minute pour cette clé | 60 |
company_minute | 300 | requêtes par minute pour cette entreprise | 60 |
company_writes | 60 | actions d'écriture par minute pour cette entreprise | 60 |
company_heavy | 10 | actions lourdes par minute pour cette entreprise | 60 |
company_day | 50.000 | requêtes par jour pour cette entreprise | 86400 |
auth_failures | 20 | échecs de connexion par minute depuis cette adresse IP | 60 |
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 forme403 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.
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