Fehler#

Die API verwendet Standard-HTTP-Statuscodes und gibt einen JSON-Body zurück, der das Problem beschreibt.

Statuscodes#

CodeBedeutungTypische Ursache
200OKErfolgreiche Anfrage.
400Ungültige AnfrageEin schlechter Parameter, z.B. ein fehlendes q, ein nicht-ganzzahliges page oder ein unbekanntes engine.
401Nicht autorisiertKein API-Schlüssel gesendet (oder kein erkannter Auth-Header).
403VerbotenSchlüssel gehört zu einem deaktivierten Konto.
429Zu viele AnfragenEin Ratenlimit wurde überschritten.
503Dienst nicht verfügbarEin abhängiger Dienst ist nicht konfiguriert, z.B. Übersetzung, wenn LibreTranslate nicht gesetzt ist.

Fehlerbodies#

Validierungsfehler (400)#

Feldgebundene Nachrichten:

{ "q": ["This query parameter is required."] }
{
  "engine": ["Unknown engine(s): foo. Valid: brave, mojeek, marginalia (or \"all\")."]
}

Authentifizierungsfehler (401 / 403)#

{ "detail": "Invalid or revoked API key." }

Eine Anfrage ohne Schlüssel erhält ein sauberes 401 mit einem WWW-Authenticate: Api-Key-Header; eine Anfrage mit einem schlechten Schlüssel erhält 401 mit der obigen Nachricht; ein Schlüssel auf einem deaktivierten Konto erhält 403 ("User account is disabled.").

Drosselung (429)#

{ "detail": "Request was throttled. Expected available in 12 seconds." }

Dienst nicht konfiguriert (503)#

{ "detail": "Translation is unavailable or not configured on this deployment." }

Fehler gut behandeln#

  • Behandeln Sie 401/403 als terminal; beheben Sie den Schlüssel, nicht wiederholen.
  • Zurückziehen bei 429 unter Verwendung der Zeit in der Nachricht (exponentielles Backoff ist ideal).
  • Für 400 lesen Sie die feldgebundene Nachricht; sie benennt den fehlerhaften Parameter.
  • Ein fehlendes optionales Feld in einer erfolgreichen Antwort wird als leerer Wert ("", [] oder null) zurückgegeben, kein Fehler; Sie können also Felder lesen, ohne jeden einzelnen zu prüfen.