Zum Inhalt springen
Endless-Dokumentation
Referenz

API-Fehler und Rate Limits

Das JSON-Format, in dem jeder Fehler der Endless-REST-API zurückkommt, das Feld data.code zum Verzweigen und die RateLimit-Header für 1.000 Anfragen pro Minute.

Jeder Fehler der Endless-REST-API unter https://api.endless.app liefert JSON in einem einzigen Format, und jede Antwort meldet dein verbleibendes Anfragebudget. Versionierung hat eine eigene Seite.

Das Fehlerformat

{
  "code": "FORBIDDEN",
  "status": 403,
  "message": "Your role does not have permission to do this",
  "data": { "code": "permission_denied" }
}
FeldWas es ist
codeDer HTTP-Status als Wort: BAD_REQUEST, UNAUTHORIZED, NOT_FOUND, …
statusDer HTTP-Status als Zahl
messageEin Satz für Menschen. Er kann umformuliert werden, vergleiche also nicht damit
data.codeDer maschinenlesbare Grund in snake_case. Das ist das Feld, nach dem du verzweigst
data.hintFalls vorhanden, der Schritt, der das Problem löst
data.documentationFalls vorhanden, ein Link zur API-Referenz

Das Schema Error im OpenAPI-Dokument listet jeden data.code, und jede Operation in der API-Referenz listet ihre Status.

Häufige Codes

Statusdata.codeWas zu tun ist
400(Validierung)message nennt das Feld und die verletzte Regel
400unsupported_api_versionSiehe API-Versionierung
401missing_tokenSende Authorization: Bearer <token>
401invalid_tokenDer Token wurde nicht verifiziert oder ist abgelaufen. Hole einen neuen
402insufficient_credits, exceeds_spending_limitDer Workspace oder der Aufrufer kann diesen Aufruf nicht bezahlen
403permission_denied, forbiddenDie Rolle oder der Zugriff des Aufrufers erlaubt es nicht
404not_found, organization_not_found, …Die Ressource existiert nicht, oder der Aufrufer kann sie nicht öffnen
404route_not_foundKeine Operation passt zum Pfad (nie eine HTML-Seite)
404invalid_path_parameterEine ID im Pfad kann keine Ressource bezeichnen
429rate_limitedWarte die Sekunden aus retry_after ab und versuche es dann erneut

Rate Limits

  • Limit: 1.000 Anfragen pro 60 Sekunden und Aufrufer, in einer Policy namens default. Ein Zähler pro Aufrufer über alle Server hinweg.
  • Festes Zeitfenster: Es wird auf einmal zurückgesetzt, richte dein Tempo also nach RateLimit-Remaining und nicht nach einer angenommenen gleichmäßigen Rate.
  • Credits sind getrennt: Ist das Guthaben oder das Ausgabenlimit aufgebraucht, kommt 402, nicht 429.

Jede API-Antwort, ob Erfolg oder Fehler, trägt den Zähler in zwei Schreibweisen (Browser können sie ebenfalls lesen):

RateLimit-Policy: "default";q=1000;w=60
RateLimit: "default";r=997;t=42
RateLimit-Limit: 1000
RateLimit-Remaining: 997
RateLimit-Reset: 42

r / RateLimit-Remaining sind die verbleibenden Anfragen; t / RateLimit-Reset sind die Sekunden bis zum Zurücksetzen. Über dem Limit antwortet die API mit 429, einem Retry-After-Header und denselben Sekunden im Body:

{
  "code": "TOO_MANY_REQUESTS",
  "status": 429,
  "message": "Too many requests.",
  "data": {
    "code": "rate_limited",
    "hint": "Wait 42s, then retry. Every response carries RateLimit headers — read them to pace yourself before you are refused.",
    "documentation": "https://endless.app/docs/api"
  },
  "retry_after": 42
}

Maschinenlesbare Quellen

  • API-Index: Seine Objekte rate_limit und errors beschreiben diese Policy.
  • OpenAPI-Dokument: das Schema Error in jeder Fehlerantwort.
  • Der MCP-Server hat ein eigenes Limit: 60 Tool-Aufrufe pro Minute und Konto.

Auf dieser Seite