Fehler

Jeder Fehlercode, den diese API antworten kann, der HTTP-Status, der ihn trägt, und was zu tun ist. Der Umschlag entspricht OpenAI, mit einer zusätzlichen Namensraum-Erweiterung.

Der Umschlag

error.message ist für Menschen im Log geschrieben, error.type benennt die Fehlerklasse, und error.code ist die stabile Kennung, auf die Sie verzweigen sollten — der Nachrichtentext ist kein Vertrag. Wo die API strukturierte Angaben hat (welche Richtlinie, welcher Endpunkt, welches Modell), stehen sie in error.llmeu und ersetzen nie die drei Standardfelder.

{
  "error": {
    "message": "No endpoint satisfies residency eu-owned. Residency is never relaxed silently.",
    "type": "conflict_error",
    "code": "no_endpoint_for_policy",
    "llmeu": { "requested": "llmeu-auto" }
  }
}

type folgt dem Status

Die Zuordnung unten ist die, die die API anwendet — gerendert aus derselben Tabelle, aus der ihre Antworten entstehen.

HTTP type
400invalid_request_error
401authentication_error
402insufficient_quota
403permission_error
404not_found_error
409conflict_error
413invalid_request_error
422invalid_request_error
429rate_limit_error
500api_error
501api_error
502api_error
503api_error

Codes

Jeder Code, der einen Client erreichen kann. Ein Test durchsucht den API-Quelltext und schlägt fehl, wenn diese Tabelle und der Code in eine der beiden Richtungen auseinanderlaufen; ein Code kann hier also nicht erfunden oder dort hinzugefügt werden, ohne dokumentiert zu sein.

HTTP code Bedeutung und Vorgehen
400 invalid_request Der Anfrage-Body hat die Validierung nicht bestanden.
400 invalid_json Der Body war kein gültiges JSON.
400 invalid_llmeu Das llmeu-Objekt war kein Objekt oder enthielt ein unbekanntes Feld.
400 invalid_residency Die angeforderte Datenhaltung ist keine der vier Hosting-Klassen.
400 invalid_data_class Die angeforderte data_class ist keine der vier Klassen.
400 invalid_retention Die angeforderte Aufbewahrung ist nicht zero, 24h, 7d oder 30d.
400 invalid_max_tokens max_tokens war keine positive ganze Zahl.
400 invalid_stream stream war kein Wahrheitswert.
400 invalid_stop stop war weder eine Zeichenkette noch eine Liste von Zeichenketten.
400 invalid_role Eine Nachricht trug eine Rolle außerhalb von system, user, assistant und tool.
400 invalid_tools tools oder tool_choice war fehlerhaft.
400 missing_model Das Feld model ist erforderlich.
400 missing_messages messages ist erforderlich und darf nicht leer sein.
400 missing_input input ist für Embeddings erforderlich.
400 missing_name name ist erforderlich.
401 invalid_api_key Der Schlüssel fehlt, ist unbekannt, widerrufen oder abgelaufen.
402 budget_exceeded Das Tagesbudget der Organisation ist verbraucht. Erhöhen Sie max_usd_per_day oder warten Sie auf das neue Fenster.
403 api_key_required Die Anfrage nutzte eine Konsolensitzung. Legen Sie einen API-Schlüssel an und senden Sie diesen.
403 insufficient_scope Der Schlüssel ist gültig, ihm fehlt aber der Scope, den dieser Endpunkt verlangt.
403 no_organization Die Zugangsdaten gehören zu keiner Organisation.
403 model_denied Die Richtlinie der Organisation verbietet dieses Modell oder seinen Anbieter.
403 policy_violation Die Anfrage verletzt eine Regel der Organisationsrichtlinie.
403 retention_exceeds_policy Die angeforderte Aufbewahrung ist länger, als die Richtlinie erlaubt. Diese Prüfung läuft vor allen anderen.
403 data_class_not_allowed Die data_class der Anfrage ist von der Richtlinie nicht erlaubt.
404 model_not_found Für diese Organisation gibt es kein solches Modell.
404 hosted_unavailable Das Modell steht im Katalog, wird aber nicht auf LLM EU gehostet und kann daher nicht aufgerufen werden.
404 not_found Die Route existiert, das Objekt nicht.
404 unknown_route Unter diesem Pfad ist keine Route eingehängt. Jeder OpenAI-Endpunkt, der nicht unter Endpunkte steht, antwortet so.
404 policy_not_found Die policy_id in llmeu gehört nicht zu dieser Organisation.
409 no_endpoint_for_policy Nichts erfüllt Richtlinie und Datenhaltung zugleich, und keine der beiden wird still gelockert.
409 not_a_text_model Das genannte Modell kann keinen Text erzeugen: Es ist ein Spracherkennungs-, Embedding- oder Reranker-Modell.
409 conflict Die Anfrage steht im Konflikt mit dem aktuellen Zustand des Objekts.
413 request_too_large Der Body hat die Größengrenze des Endpunkts überschritten.
429 rate_limit_exceeded Ein Limit aus der Rate-Limit-Tabelle wurde erreicht. Die Meldung nennt den Zeitpunkt, zu dem das Fenster zurückgesetzt wird.
500 internal_error Ein unerwarteter Fehler auf unserer Seite.
501 not_implemented Der Endpunkt wird bewusst nicht angeboten, oder die angeforderte Fähigkeit existiert in dieser Installation nicht.
501 retention_not_implemented Die Richtlinie erlaubt eine Aufbewahrung ungleich zero, implementiert ist nur zero; die Anfrage wird abgelehnt statt still gespeichert.
501 unsupported_n n größer als 1 wird nicht unterstützt.
502 upstream_error Nach dem Failover konnte kein Endpunkt die Anfrage bedienen. Der Trace hält jeden Versuch fest.
502 stream_failed Der Stream ist gescheitert, nachdem er begonnen hatte.

no_endpoint_for_policy heißt: das Produkt funktioniert

Ein 409 mit diesem Code bedeutet, dass Richtlinie und Anfrage zusammen keinen Endpunkt zulassen und der Router es abgelehnt hat, eine der beiden Seiten still zu lockern. Es ist kein vorübergehender Fehler: Ein neuer Versuch ohne Änderung an Anfrage, Richtlinie oder Datenhaltung scheitert genauso. Die Antwort nennt die angeforderte Datenhaltung, der Trace hält fest, warum jeder Endpunkt abgelehnt wurde.

Fehler innerhalb eines Streams

Scheitert eine Streaming-Anfrage, nachdem die Header gesendet wurden, schreibt die API den Fehler als letzten SSE-Frame und danach den Abschluss, damit ein Client, der das Format befolgt, einen Fehler sieht statt einer abgeschnittenen Erfolgsantwort.

data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}

data: [DONE]