Limites de débit
Pour garantir la performance et la fiabilité de l'API PayerScan pour tous les marchands, nous appliquons des limites de débit avec une structure de contrôle double (Burst et Sustained).
Portée des limites
Les limites de débit sont appliquées par API Key. Si l'API Key n'est pas fournie, la limite est appliquée par adresse IP. Cela signifie :
- Plusieurs serveurs utilisant la même API Key partagent la même limite.
- Différentes boutiques avec des API Keys différentes ont des limites indépendantes.
API de création de facture (POST /payment/crypto)
| Type de limite | Seuil |
|---|---|
| Burst (maximum instantané) | 5 requêtes / seconde |
| Sustained | 60 requêtes / minute |
API de consultation de facture (GET /invoice/:trans_id)
| Type de limite | Seuil |
|---|---|
| Burst (maximum instantané) | 20 requêtes / seconde |
| Sustained | 200 requêtes / minute |
Lorsque les limites sont dépassées
Si votre système dépasse le seuil configuré, l'API retournera :
- Code de statut HTTP :
429 Too Many Requests
Dépassement de la limite burst (POST /payment/crypto) :
{
"status": "error",
"message": "Too many requests per second. Please slow down.",
"error_code": "RATE_LIMIT_EXCEEDED",
"limit_type": "burst",
"retry_after_seconds": 1
}
Dépassement de la limite sustained (POST /payment/crypto) :
{
"status": "error",
"message": "Rate limit exceeded. Maximum 60 requests per minute.",
"error_code": "RATE_LIMIT_EXCEEDED",
"limit_type": "sustained",
"retry_after_seconds": 60
}
Les valeurs de message et retry_after_seconds varient selon l'endpoint. Par exemple, l'endpoint GET retourne "Maximum 200 requests per minute." avec "retry_after_seconds": 60.
Headers de limite de débit
L'API retourne des headers de limite de débit standard avec chaque réponse :
| Header | Description |
|---|---|
RateLimit-Limit | Nombre maximum de requêtes autorisées dans la fenêtre actuelle. |
RateLimit-Remaining | Nombre de requêtes restantes dans la fenêtre actuelle. |
RateLimit-Reset | Temps (en secondes) avant la réinitialisation de la fenêtre. |
Utilisez ces headers pour surveiller votre utilisation et éviter d'atteindre les limites.
Configurez un mécanisme de recul exponentiel (Exponential Backoff) dans votre bibliothèque de requêtes (par ex. Axios-retry) pour retenter automatiquement après la valeur retry_after_seconds lors d'une erreur HTTP 429.