Start → Hilfe

Claude Code und Codex brauchen beim selben Gateway unterschiedliche Base URLs

Clients im Anthropic-Stil (Claude Code, das Anthropic SDK) hängen /v1/messages selbst an, also muss ihre Base URL beim Host enden. Clients im OpenAI-Stil (Codex, das OpenAI SDK, Cursor, Cline) hängen nichts an, also muss ihre auf /v1 enden.

Was Sie sehen

Warum das passiert

Zwei SDK-Linien, zwei Konventionen, ein Gateway-Hostname. Keiner der Clients liegt falsch; sie sind sich nur uneins, wem das Segment /v1 gehört. Wer es verdreht, bekommt entweder /v1/v1/… oder einen Pfad ganz ohne Version.

Das resultierende 404 ist ungewöhnlich schwer zu debuggen, weil es oft nie die API erreicht. Ein Gateway, das seine Website auf derselben Domain ausliefert, beantwortet unbekannte Pfade mit der Marketingseite – HTTP 200, Content-Type: text/html. Der Client versucht dann, HTML als JSON zu parsen, und meldet einen Syntaxfehler, der nirgendwo in die Nähe der wahren Ursache zeigt.

Das heißt auch: Der Fehler hinterlässt beim Anbieter keine Spur. Der Support wird sagen, dass er keine Anfragen von Ihrem Schlüssel sieht – und das stimmt: Die Anfrage wurde von einem Webserver beantwortet, bevor sie je ein API-Aufruf wurde.

Prüfen, ob es daran liegt

Fragen Sie nach dem Content-Type, statt den Body zu lesen – ein Befehl klärt es:

curl -s -o /dev/null -w '%{http_code} %{content_type}\n' \
  -X POST 'YOUR_BASE_URL/chat/completions' \
  -H 'Authorization: Bearer YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"model":"YOUR_MODEL","messages":[{"role":"user","content":"hi"}]}'

application/json heißt, die URL stimmt – selbst ein falscher Schlüssel antwortet in JSON. text/html heißt, Sie sprechen mit einer Website, und die Base URL ist das Problem.

So beheben Sie es

  1. Nach der SDK-Linie entscheiden, nicht nach dem ProduktnamenAlles, was auf dem Anthropic SDK aufbaut, will den nackten Host; alles OpenAI-Kompatible will /v1. Neue Tools passen in eine der beiden Gruppen, ohne eigene Anleitung.
  2. Den abschließenden Schrägstrich weglassenManche Clients setzen Pfade naiv zusammen, und eine Base URL, die auf / endet, kann einen doppelten Schrägstrich erzeugen, der zur Website statt zur API führt.
  3. Erst den Content-Type prüfen, dann den SchlüsselEine HTML-Antwort bedeutet, dass die Anfrage die API nie erreicht hat. Schlüssel zu rotieren ändert dann nichts und kostet einen Nachmittag.
  4. Zuerst die Beispiele des Anbieters wörtlich übernehmenBringen Sie eine bekannt funktionierende Konfiguration zum Laufen und ändern Sie dann eins nach dem anderen. Die meisten Einrichtungsfehler sind zwei Fehler auf einmal.
ClientBase URL sollte
Claude Codenur der Host – kein /v1
Anthropic SDKnur der Host – es hängt /v1/messages an
Codexauf /v1 enden
OpenAI SDK (Python, Node, Go)auf /v1 enden
Cursor, Cline, Roo Codeauf /v1 enden
Cherry Studio, Chatbox, LobeChatauf /v1 enden
Bei APICLAN: https://apiclan.us für Claude Code und das Anthropic SDK, https://apiclan.us/v1 für Codex und alles OpenAI-Kompatible. Konfigurationen zum Kopieren für jeden Client stehen im Schnellstart.

Verwandte Themen

Unexpected token '<' beim Aufruf einer OpenAI-kompatiblen API401 invalid API key – wenn der Schlüssel richtig aussieht und trotzdem scheitert

Zuletzt geprüft am 2026-10-01. Geschrieben aus Problemen, die auf einem laufenden OpenAI-kompatiblen Gateway diagnostiziert wurden – nicht von anderen Seiten zusammengetragen.