Zum Hauptinhalt springen

Rate Limits

Rate Limits gelten pro Endpunkt über ein rollierendes Fenster von 60 Sekunden. Jeder Endpunkt hat einen eigenen Zähler — das Limit auf einer Route beeinflusst keine andere. Bei Überschreitung liefert die API 429 Too Many Requests.

So funktioniert es

  • Das Fenster beträgt 1 Minute für jeden Endpunkt.
  • Limits sind pro Endpunkt isoliert — list-boards und send-message zählen getrennt.
  • Jede Antwort trägt Rate-Limit-Header, damit Sie sich drosseln können, bevor das Limit greift.

Response-Header

HeaderBeschreibung
X-RateLimit-LimitMaximale Anfragen für diesen Endpunkt pro Fenster.
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Fenster.
X-RateLimit-ResetWann das aktuelle Fenster zurückgesetzt wird.
Retry-AfterSekunden bis zum erneuten Versuch (nur bei 429).

Limits nach Kategorie

Limits clustern in wenige Stufen. Die genaue Obergrenze hängt davon ab, wie schwer die Operation ist.

KategorieTypisches Limit (pro Minute)Beispiele
Reads50Boards listen, Zeile lesen, Channels listen, Benachrichtigungen listen, Bookings listen
Schwerere Reads30Docs-Baum, Drive-Baum, alle /workspace/*-Reads
Writes30Zeilen, Docs, Kommentare, Ordner anlegen/aktualisieren/löschen; Upload-Presigned-URLs
Schwere Writes20Markdown-Writes (Zeile, Spalte, Doc), Multipart-Upload start/finalize
Suche60Cross-Entity-Endpunkt /search (Docs-/Drive-Suche: 50)
Notification-Mutationen60Als gelesen/ungelesen markieren, löschen
Messaging100Channel-Nachricht senden, Direktnachricht senden
Export10Asynchroner Tabellenexport (am stärksten eingeschränkt)

Repräsentative Endpunkt-Limits

EndpunktMethodeLimit / Min.
/board/list-boardsGET50
/board/{boardId}/table/{tableId}/rowsGET50
/board/{boardId}/table/{tableId}/rowPOST30
/board/{boardId}/table/{tableId}/row/{rowId}/mdPOST20
/board/{boardId}/table/{tableId}/exportPOST10
/docs/treeGET30
/docs/{docId}/mdPOST20
/drive/files/upload/multipart/startPOST20
/searchGET60
/notificationsGET50
/notifications/{notificationId}PATCH / DELETE60
/workspace/infoGET30
/chat/channelsGET50
/chat/channel/{channelId}/send-messagePOST100
hinweis

Diese Zahlen sind zum Zeitpunkt der Erstellung korrekt, können sich aber ändern. Lesen Sie die Header X-RateLimit-* zur Laufzeit statt Limits zu hardcoden — und prüfen Sie die API-Referenz für den aktuellen Wert eines bestimmten Endpunkts.

Die 429-Antwort

Wenn Sie ein Limit überschreiten, liefert der Endpunkt:

{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Too many requests, please try again later",
"retryAfter": 27
}

Der Header Retry-After trägt denselben Wert (in Sekunden) wie das Body-Feld retryAfter — die Zeit bis zum Reset des Fensters.

Backoff-Hinweise

  • Retry-After einhalten. Bei 429 die angegebene Sekundenzahl warten, bevor Sie erneut versuchen.
  • Exponentielles Backoff als Fallback. Fehlt Retry-After (z. B. bei 5xx), exponentiell warten: 1s, 2s, 4s, …
  • X-RateLimit-Remaining beobachten. Rechtzeitig drosseln, wenn der Wert gegen null geht, statt auf 429 zu warten.
  • Bulk-Arbeit verteilen. Beim Iterieren großer Listen oder Batch-Anlegen von Zeilen kleine Pausen zwischen Aufrufen einbauen.
  • Retries begrenzen. Nach wenigen Versuchen abbrechen und den Fehler melden statt endlos zu retryen.

Siehe Fehlerbehandlung für ein vollständiges Retry-Beispiel.