Limites en vigueur
Engine gateway
C’est la route la plus chargée — elle déclenche un appel LLM. Deux limites cumulatives :
Un dépassement renvoie
429 Too Many Requests :
Quota mensuel (plan-based)
Indépendamment du rate limit court-terme, chaque plan a un quota mensuel de tickets traités :
Au-delà du quota :
- Tous les plans : bloqué (
429) jusqu’à achat d’un pack de crédits ou upgrade. Aucun dépassement n’est facturé à l’insu du marchand. - Si le compte dispose de crédits, ils sont consommés automatiquement (1 crédit = 1 ticket) et le service continue sans interruption.
Routes auth & lectures
Le rate limiter par IP / user vit en mémoire process (Vercel Functions). En cas de scale horizontal, la limite effective est multipliée par le nombre d’instances chaudes — c’est volontaire et tolérable pour ces volumes.
Réponse 429
Toutes les routes répondent en JSON :
Le header
Retry-After est exposé sur les routes auth/IP-based. Sur l’engine gateway, on ne l’envoie pas systématiquement — calcule ton retry sur la fenêtre de la limite (10 min ou 60 min selon le cas).Stratégie de retry recommandée
Headers de rate limit
Les routes engine n’exposent pas de headersX-RateLimit-Remaining ni X-RateLimit-Reset aujourd’hui. Pour estimer ta consommation en temps réel, utilise GET /api/billing/usage qui retourne tickets_used / tickets_limit / overage_tickets du mois en cours.
Augmenter tes limites
Pour des volumes Enterprise (>50 000 tickets/mois ou >1 000 messages/heure), on peut basculer sur Upstash Redis pour un rate limit cluster-wide. Demande au support.
Idempotence et anti-rejeu
Voir l’introduction → Idempotence. En court : les webhooks entrants sont dédupliqués par(provider, event_id) pendant 30 jours. Ton code peut donc rejouer en toute sécurité un webhook reçu deux fois — l’effet sera identique.