Developer Portal Rate Limits

Rate Limits

Des limites de taux sont appliquées par clé API pour garantir la stabilité de la plateforme pour tous les marchands.

Limites par défaut

EndpointLimiteFenêtre
POST /payin60 requêtesPar minute
POST /payout30 requêtesPar minute
GET /status/{id}120 requêtesPar minute
Tous les endpoints1 000 requêtesPar heure

Limites personnalisées

Pour des volumes supérieurs, contactez-nous. Des limites personnalisées peuvent être configurées pour les comptes Enterprise.

Headers de réponse

Chaque réponse inclut des headers pour suivre votre consommation :

HeaderDescription
X-RateLimit-LimitNombre de requêtes autorisées sur la fenêtre
X-RateLimit-RemainingRequêtes restantes sur la fenêtre courante
X-RateLimit-ResetTimestamp Unix de réinitialisation du compteur
Retry-AfterPrésent uniquement sur les réponses 429 — secondes à attendre

Gestion du code 429

json Réponse 429 Too Many Requests
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please wait before retrying.",
    "retry_after": 42
  }
}

Bonnes pratiques

  • Lisez les headers X-RateLimit-Remaining à chaque réponse
  • Implémentez un backoff exponentiel sur les erreurs 429
  • Utilisez l'idempotency pour éviter les doublons lors des retries
  • Évitez les boucles de polling serrées — utilisez les webhooks à la place
  • En cas de pics prévisibles (promos, salaires), contactez-nous à l'avance
php Respect du Retry-After
$response = Http::withHeaders([...])->post('/api/v1/merchant/payin', $payload);

if ($response->status() === 429) {
    $retryAfter = $response->json('error.retry_after', 60);
    Log::warning("Rate limited. Retrying in {$retryAfter}s");
    sleep($retryAfter);
    // Retentons...
}