Rate-Limits
Damit eine Integration nicht alle anderen ausbremst, begrenzt DebtFlow die Anfragen pro Minute. Jede Antwort zeigt, wie viel Spielraum bleibt.
| Aufrufer | Grenze | gezählt je |
|---|---|---|
| API-Schlüssel | 120 Anfragen pro Minute | Schlüssel |
| OAuth-App | 120 Anfragen pro Minute | Verbindung (App und Nutzer) |
| Ohne Anmeldung (z. B. Token-Endpunkt) | je Endpunkt festgelegt | IP-Adresse |
| Alle Pfade unter /api/v1 zusammen | 1.000 Anfragen pro Minute | IP-Adresse |
Die Grenze je IP-Adresse gilt zusätzlich und fängt nur Lastspitzen ab: Laufen mehrere Schlüssel vom selben Server, teilen sie sich diese 1.000 Anfragen. Einzelne aufwendige Endpunkte können eine eigene, niedrigere Grenze haben; maßgeblich sind die Header der jeweiligen Antwort. Auch die IP-Grenze antwortet mit 429, error: "rate_limited" und Retry-After.
Header
| Header | Bedeutung |
|---|---|
X-RateLimit-Limit | Anfragen im aktuellen Zeitfenster |
X-RateLimit-Remaining | davon noch übrig |
Retry-After | nur bei 429: Sekunden bis zum nächsten Versuch |
Antwort 429
HTTP/1.1 429 Too Many Requests
Retry-After: 17
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
{ "error": "rate_limited", "message": "Zu viele Anfragen. Bitte kurz warten.", "details": { "retryAfter": 17 } }Richtig reagieren
Warten Sie bei 429 mindestens so lange wie Retry-After angibt und wiederholen Sie dann. Für POST-Anfragen denselben Idempotency-Key verwenden.
async function debtflow(path, init = {}, attempt = 0) {
const res = await fetch('https://www.debt-flow.io/api/v1' + path, {
...init,
headers: { ...init.headers, Authorization: `Bearer ${process.env.DEBTFLOW_API_KEY}` },
});
if (res.status === 429 && attempt < 5) {
const wait = Number(res.headers.get('Retry-After') ?? 1) * 1000;
await new Promise((r) => setTimeout(r, wait));
return debtflow(path, init, attempt + 1);
}
return res;
}Weniger Anfragen statt mehr Tempo
Statt regelmäßig Listen abzufragen, lassen Sie sich per Webhook benachrichtigen. Für Massenimporte die Seitengröße
limit=100 nutzen und Anfragen nacheinander statt parallel senden.