Zum Inhalt springen

Rate Limits

Rate Limits

Welche Grenze dich trifft, was jede Operation kostet und wie dein Client nach einer 429 wartet. Deinen eigenen Stand liefert GET /v1/rate_limit.

Kosten je Operation

Jeder Aufruf zieht Punkte vom Eimer ab. In der Referenz steht der Wert an jeder Operation als x-bodo-cost; kein Endpunkt ist kostenlos.
  • get · 1
  • list · 2
  • count · 2
  • Suche q · +5
  • create · 5
  • update · 5
  • delete · 10
  • Geld-Aktion · 10
  • Langer Lauf (202) · 10
  • Batch · Summe der Teile
  • me · 1
  • rate_limit · 1
  • openapi.json · 1
  • operations · events · 1

Ebenen

Die Antwort meldet immer die engste Grenze.
EbeneGilt fürGrenze
Schlüsseleinen Schlüssel300 Punkte/min, Kapazität 600
Schreibeneinen Schlüssel60 Schreibungen/min
Paralleleinen Schlüssel6 gleichzeitige Aufrufe
Prinzipalalle Schlüssel einer Person bzw. eines Dienstkontos1.200 Punkte/min
Organisationalle Schlüssel der Organisation3.000 Punkte/min, ein Schlüssel höchstens 50 %
Löscheneinen Schlüssel10/min und 300 je Tag, danach wird das Löschen pausiert
Datenabflusseinen Schlüssel10.000 gelesene Datensätze/h

Header

Nach dem IETF-Entwurf RateLimit-Header (Draft 11). Jede Antwort trägt beide Zeilen.
Normale Antwort, dann die Absage
RateLimit-Policy: "key";q=300;w=60, "org";q=3000;w=60
RateLimit: "key";r=12;t=41

HTTP/1.1 429 Too Many Requests
Retry-After: 41
RateLimit: "key";r=0;t=41
Beispielantwort
GET /v1/contacts?limit=100

HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Content-Language: de

{
  "type": "https://developers.bodo-app.com/problems/RATE_LIMITED",
  "title": "Zu viele Anfragen",
  "status": 429,
  "detail": "Die Grenze dieses Schlüssels ist erreicht.",
  "instance": "/v1/contacts",
  "code": "RATE_LIMITED",
  "requestId": "req_01JBD8Y3K5M7Q2W9X4Z6T1V0NP"
}

Drei Arten von 429

CodeBedeutungReaktion
RATE_LIMITEDdeine Grenze ist erreichtRetry-After abwarten
OVERLOADEDdie Instanz ist ausgelastetRetry-After abwarten, dann mit Zufallsabstand
QUOTA_EXHAUSTEDein Kontingent ist verbrauchtnicht wiederholen, bis es zurückgesetzt ist

Für eine Drosselung kommt nie 403. Quota-Alarm: Wird ein Kontingent knapp oder der Abfluss ungewöhnlich hoch, bekommen der Besitzer des Schlüssels und die Org-Admins eine Mail und einen Eintrag in der Glocke.

Backoff

Wer nach einer 429 weiterfeuert (mehr als 50 Absagen in 60 s), wird für den Schlüssel 5 Minuten gesperrt.
  1. Lies Retry-After (ganze Sekunden) oder genauer retryAfterMs aus dem Problem.
  2. Warte so lange und lege einen kleinen Zufallsabstand darauf, damit nicht alle Clients gleichzeitig wiederkommen.
  3. Fehlt der Header, verdopple die Wartezeit je Versuch (1, 2, 4, 8 s) und gib nach fünf Versuchen auf.
  4. QUOTA_EXHAUSTED wiederholst du nicht: bis zum Zurücksetzen bleibt die Antwort gleich.
Die SDKs warten für dich@bodo/api und bodo-api wiederholen eine Antwort 429 oder 503 nach Retry-After, standardmäßig bis zu zweimal (maxRetries bzw. max_retries), mit demselben Idempotency-Key.