Fehlerbehebung

Fehlertabelle: häufige Fehler von Claude Code und Codex an einer Gateway-API

Dieselbe Fehlerzeile hat beim direkten Zugriff und über ein Gateway oft völlig andere Ursachen. Diese Tabelle ist in fünf Schichten gegliedert – Netzwerk → Authentifizierung → Protokoll → Modell → Kontext – und gibt pro Schicht einen kopierbaren Testbefehl und ein Beurteilungskriterium.

Geprüft am 2026-10-26Gilt für
Claude Code 2.xCodex CLI 0.154.0

Wie Sie diese Tabelle nutzen

Suchen Sie nicht zuerst im Fehlertext nach der Antwort, sondern bestimmen Sie, welche Schicht betroffen ist. Fehler von KI-Clients kommen fast immer aus diesen fünf Schichten:

  1. Netzwerkschicht: Die Anfrage hat den Server gar nicht erreicht
  2. Authentifizierungsschicht: Sie kam an, aber der Key wird nicht akzeptiert
  3. Protokollschicht: Key akzeptiert, aber Pfad oder Format stimmen nicht
  4. Modellschicht: Das Protokoll läuft, aber das Modell existiert nicht
  5. Kontextschicht: Das Modell läuft, aber die Eingabe ist zu lang

Der Wert dieser Gliederung: Jede Schicht hat eine völlig andere Behebung, und am Fehlertext ist oft nicht zu erkennen, um welche Schicht es geht.

Diagnose nach HTTP-Status

Diese Befehle prüfen die Modellliste und drei Protokolle und zeigen für jede Anfrage den HTTP-Status an:

Den eigenen KimiSeek-API-Key im selben Terminal setzen, in dem curl ausgeführt wird, und den Platzhalter ersetzen. Im Client gespeicherte Zugangsdaten setzen diese Shell-Variable nicht automatisch:

Shell · API key
# Replace the placeholder with your own key from the dashboard.
export KIMISEEK_API_KEY="ks-your-key"
Shell · API diagnostics
# Inspect each HTTP status and error body; a model list does not prove sufficient balance.
# 1. Is the key valid at all? (lists models)
curl -sS --max-time 30 -w '\nHTTP %{http_code} /v1/models\n' https://api.kimiseek.app/v1/models \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}"

# 2. OpenAI Chat Completions
curl -sS --max-time 30 -w '\nHTTP %{http_code} /v1/chat/completions\n' https://api.kimiseek.app/v1/chat/completions \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-pro-0813","messages":[{"role":"user","content":"ping"}],"max_tokens":8}'

# 3. Anthropic Messages (the protocol Claude Code speaks)
curl -sS --max-time 30 -w '\nHTTP %{http_code} /v1/messages\n' https://api.kimiseek.app/v1/messages \
  -H "x-api-key: ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-pro-0813","max_tokens":8,"messages":[{"role":"user","content":"ping"}]}'

# 4. OpenAI Responses (the protocol Codex speaks)
curl -sS --max-time 30 -w '\nHTTP %{http_code} /v1/responses\n' https://api.kimiseek.app/v1/responses \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-pro-0813","input":"ping","max_output_tokens":16}'

Den HTTP-Status nach jeder Antwort sowie error.code, error.type und message im Antworttext prüfen. Der fehlgeschlagene Schritt allein belegt keine fehlende Protokollunterstützung. Eine Modellliste mit 200 bestätigt den Schlüssel, nicht das Guthaben: Ohne Guthaben kann Schritt 1 mit 200 und Schritt 2 mit 402 antworten.

Status oder FehlerBedeutungNächster Schritt
200 mit erwarteter AntwortstrukturDiese Anfrage war erfolgreich; nicht alle Werkzeugfunktionen sind geprüftClient-Konfiguration und echte Tool-Aufrufe testen
401 / 403Zugangsdaten, Schlüssellimits oder ModellberechtigungAktivierung, Ablauf, Limits und Berechtigung beim Anbieter prüfen
402 / insufficient_balanceKontoguthaben reicht nicht ausAufladen und erneut versuchen; Protokoll nicht ändern
400 / 404 mit model_not_found, not_found_error oder einer Meldung über ein fehlendes ModellFalsche oder deaktivierte ID oder fehlender ModellzugriffVollständige ID aus der Liste verwenden und Kanal sowie Berechtigungen prüfen
400 mit ungültigem ParameterAnfragefelder oder Modelllimits passen nichtNachrichten, Tools und Tokenlimits anhand des Fehlertexts prüfen
404 mit ausdrücklich fehlender Route oder fehlendem EndpointFalscher Pfad oder nicht angebotenes APIBase URL und /v1, danach Protokollunterstützung prüfen; 404 allein unterscheidet nicht zwischen fehlendem Modell und fehlender Route
429Ratenlimit, Kontingent oder Überlastung des AnbietersFehler lesen, vor erneutem Versuch warten oder Nutzung anpassen
5xxVorübergehender Gateway- oder AnbieterfehlerFehler und Anfrage-ID aufbewahren und später erneut versuchen
HTTP 000 / Verbindungsfehler oder curl-TimeoutKeine HTTP-Antwort; jede Prüfung wartet höchstens 30 SekundenDNS, Proxy und Netzwerk prüfen; ein Timeout belegt kein fehlendes Protokoll

Claude-Code-Seite

Keine Zugangsdaten

Claude Code · no credentials
Invalid API key · Please run /login

Diese Meldung heißt, dass Claude Code keine Zugangsdaten bekommen hat. Prüfen Sie, ob ANTHROPIC_AUTH_TOKEN in der Shell gilt, aus der Claude Code gestartet wurde – ein häufiger Fehler ist, in Terminal A zu exportieren und in Terminal B zu starten.

401 Authentifizierung fehlgeschlagen

Claude Code · 401
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"invalid api key"}}

Ursachen nach Wahrscheinlichkeit:

  1. Beim Kopieren des Keys sind Leerzeichen oder Zeilenumbrüche mitgekommen
  2. Der Key wurde gesperrt oder das Kontingent ist erschöpft
  3. ANTHROPIC_API_KEY ist gesetzt, aber leer, und der Client fällt auf den Anmeldestatus zurück

403 forbidden

Claude Code · 403
API Error: 403 {"type":"error","error":{"type":"forbidden","message":"invalid x-api-key"}}

Direkt bedeutet diese Meldung meist, dass der Key ungültig ist; über ein Gateway ist die häufigere Ursache eine falsche Schreibweise des Headers: Manche Gateways akzeptieren nur Authorization: Bearer, andere nur x-api-key. KimiSeek akzeptiert beides, aber wenn Sie dazwischen noch einen Proxy gelegt haben, kann der Header umgeschrieben werden.

model not found

Claude Code · model not found
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"model: deepseek-v4-flash-0731 not found"}}

Zwei Möglichkeiten: Der Modellname ist falsch geschrieben, oder Sie haben ein abgeschaltetes Modell verwendet. Eine abgeschaltete Modell-id meldet dauerhaft not found, statt auf die Abschaltung hinzuweisen – das ist die Falle, die am meisten Zeit kostet: Sie prüfen lange die Konfiguration, dabei wurde das Modell einfach abgelöst.

Ersetzen Sie sie auf der Modellseite durch eine echte id.

Streaming-Antwort bricht mittendrin ab

Claude Code · stream cut
API Error: stream disconnected before completion: stream closed before completion

Die Streaming-Verbindung wurde unterwegs abgeschnitten. Prüfen Sie in dieser Reihenfolge:

  1. ob ein lokaler HTTP-Proxy (HTTPS_PROXY) dazwischenfunkt
  2. ob das Firmennetz bei Antworten in eine Zeitüberschreitung läuft
  3. ob serverseitig ein Zeitlimit pro Anfrage gegriffen hat

Das Zeitlimit für die Anfrage an den Upstream beträgt 600 Sekunden bei /v1/messages (Claude Code) und 175 Sekunden bei /v1/responses (Codex). Clients oder zwischengeschaltete Proxys können die Verbindung früher trennen; prüfen Sie den verwendeten Endpoint und die Fehlerdetails.

Kontext überschritten

Claude Code · context overflow
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 210000 tokens > 200000 maximum"}}

Beachten Sie, dass die 200000 hier die Obergrenze des Clients oder des Modells ist, nicht die Zahl, die Sie im Kopf haben. Mit DeepSeek V4 Pro liegt die tatsächliche Grenze bei 1M; sehen Sie 200000, dann ist die Anfrage nicht beim Zielmodell angekommen, oder der Client hat nach der Spezifikation von Claude selbst abgeschnitten.

Codex-Seite

401 Missing bearer

Codex · 401
■ unexpected status 401 Unauthorized: Missing bearer

env_key in config.toml ist nur der Variablenname, der echte Wert muss in der Umgebung stehen. Diese Meldung heißt genau: „Der Variablenname ist da, die Umgebungsvariable ist leer.“

404 Not Found

Codex · 404
■ unexpected status 404 Not Found

In acht von zehn Fällen fehlt /v1 in der base_url. Codex baut base_url + "/responses"; ohne /v1 landet die Anfrage auf einem Pfad der Website.

Nach base_url auch im Antworttext prüfen, ob das Modell fehlt. Bietet das Gateway tatsächlich kein /v1/responses, ein kompatibles Gateway oder eine Übersetzungsschicht verwenden; aktuelles Codex lehnt wire_api = "chat" ab. Siehe Codex-Anleitung.

Stream-Abbruch

Codex · stream cut
■ stream disconnected before completion

Dasselbe Streaming-Problem wie bei Claude Code, aber Codex reagiert empfindlicher darauf – seine Ausführungsschleife hängt an einem vollständigen Event-Stream. Bei instabilem Netz wechseln Sie lieber das Netz, statt auf Wiederholungen zu setzen.

Zwei typische Fälle der Netzwerkschicht

Shell · network layer
fetch failed
ECONNREFUSED 127.0.0.1:7890

fetch failed ist der allgemeine Netzwerkfehler von Node und sagt von sich aus nichts aus. Die konkrete Ursache steht in der Zeile mit ECONNREFUSED – zeigt sie auf einen lokalen Port wie 127.0.0.1:7890, dann hat ein lokaler Proxy die Anfrage übernommen, und der Proxy läuft nicht oder seine Regeln stimmen nicht.

Dieser Fall wird am häufigsten als „das Gateway ist down“ fehldiagnostiziert. Der Test: Wenn curl funktioniert und der Client nicht, unterscheiden sich die Umgebungsvariablen der Shell, in der der Client läuft, von denen der Shell, in der curl läuft.

Dieselbe Meldung, andere Ursache

Das ist das Denkmodell, das Sie beim Arbeiten über ein Gateway am meisten brauchen:

Fehlerdirekt beim offiziellen Dienstüber ein Gateway
invalid x-api-keyder Key selbst ist ungültigder Header-Name wird vom Gateway nicht erkannt oder von einem Zwischenproxy umgeschrieben
model not foundModellname falsch geschriebendie Modell-Zuordnungstabelle des Gateways enthält diese id nicht, oder ein abgeschaltetes Modell wurde verwendet
stream disconnectedSchwankung im offiziellen Dienstlokaler Proxy, Firmennetz oder Timeout des Gateways – eines von drei
prompt is too longüber 200Kdas Gateway hat die Anfrage an ein Upstream-Modell mit kleinerem Kontext weitergeleitet
401Key falschKey stimmt, aber die Umgebungsvariable hat den Client-Prozess nicht erreicht

Was Sie bei einer Meldung mitgeben sollten

Wenn Sie jemanden fragen (oder ein Ticket anlegen), sind die folgenden vier Dinge unverzichtbar, sonst kann niemand die Ursache eingrenzen:

  1. der vollständige Fehlertext (eine ganze Zeile, kein halber Screenshot)
  2. das Ergebnis des schichtweisen curl-Tests – welcher der vier Schritte fehlgeschlagen ist
  3. die Client-Version (claude --version / codex --version)
  4. die verwendete Modell-id und Base URL (Key unkenntlich gemacht)

Prüfdatum

  • Prüfdatum: 2026-10-26
  • Die Beispiele helfen bei der Fehlersuche; der genaue Wortlaut kann je nach Client-Version abweichen. Bei einer Meldung die installierte Version angeben. Die Codex-Konfiguration wurde mit 0.154.0 geprüft.

Häufige Fragen

Warum funktioniert curl, der Client aber nicht?

Am häufigsten liegt die Umgebungsvariable nicht in derselben Shell. Der Client liest die Umgebung seines eigenen Prozesses; ein export in einem anderen Terminal nützt nichts. Prüfen Sie zuerst, ob echo $ANTHROPIC_AUTH_TOKEN in der Shell, die den Client startet, einen Wert liefert.

Wie unterscheidet man 403 und 401 genau?

401 heißt „ich weiß nicht, wer Sie sind“, 403 heißt „ich weiß es, aber ich lasse Sie das nicht tun“. Über ein Gateway ist 403 häufiger ein Problem der Header-Schreibweise oder der Routing-Regeln, 401 häufiger der Key selbst oder eine Umgebungsvariable.

Der Kontextüberlauf meldet 200000, das Modell nennt aber 1M – warum?

Dann hat die Anfrage nicht das Modell erreicht, das Sie erwarten. Entweder ist die Modell-id falsch und die Anfrage fiel auf ein Standardmodell, oder der Client hat nach der Spezifikation von Claude selbst abgeschnitten. Prüfen Sie die id über /v1/models und dann den context window in den Einstellungen des Clients.

Löst ein erneuter Versuch einen Stream-Abbruch?

Meist nicht. Ein Stream-Abbruch ist ein Problem der Verbindungsschicht; eine Wiederholung wiederholt nur denselben Fehler. Prüfen Sie zuerst Proxy und Netzwerk, dann teilen Sie lange Aufgaben auf.