Limites de débit
L'API est limitée en débit par clé d'API (en se rabattant sur l'IP du client pour une requête non authentifiée). Suede fixe la limite et la fenêtre et peut les modifier, alors lisez-les dans les en-têtes de la réponse plutôt que de coder un nombre en dur.
En-têtes
Chaque réponse /v1 inclut :
| En-tête | Signification |
|---|---|
X-RateLimit-Limit |
Nombre maximal de requêtes autorisées dans la fenêtre actuelle. |
X-RateLimit-Remaining |
Requêtes restantes dans la fenêtre actuelle. |
X-RateLimit-Reset |
Seconde d'époque Unix à laquelle la fenêtre est réinitialisée. |
Lorsque vous dépassez la limite, l'API répond avec le code HTTP 429 et un en-tête Retry-After (secondes à
attendre) :
{ "error": { "type": "rate_limited", "message": "Rate limit exceeded. Slow down and retry after the reset.", "request_id": "…" } }
Gérer le 429
Patientez et réessayez après Retry-After secondes. Un schéma simple et fiable :
# Inspectez votre budget actuel à partir des en-têtes de n'importe quelle réponse. curl -sD - -o /dev/null "https://api.suede.io/v1/search?q=test" \ -H "Authorization: Bearer $SUEDE_API_KEY" | grep -i '^x-ratelimit'
async Task<HttpResponseMessage> GetWithRetryAsync(HttpClient http, string url) { while (true) { var res = await http.GetAsync(url); if (res.StatusCode != System.Net.HttpStatusCode.TooManyRequests) return res; var wait = res.Headers.RetryAfter?.Delta ?? TimeSpan.FromSeconds(1); await Task.Delay(wait); } }
async function getWithRetry(url, init) { for (;;) { const res = await fetch(url, init); if (res.status !== 429) return res; const wait = Number(res.headers.get("retry-after") ?? "1") * 1000; await new Promise((r) => setTimeout(r, wait)); } }
La limitation de débit est indépendante de la facturation. Consultez Erreurs pour les
réponses 402 renvoyées lorsque votre abonnement est inactif ou que votre solde de crédit est vide.