Start → Hilfe

Unexpected token '<' beim Aufruf einer OpenAI-kompatiblen API

Ihre Base URL ist falsch, und der Server liefert eine Webseite statt der API. Der Client versucht dann, HTML als JSON zu parsen, und scheitert gleich am ersten Zeichen.

Was Sie sehen

Warum das passiert

Die meisten OpenAI-kompatiblen Gateways liefern Website und API über dieselbe Domain aus. Fragen Sie einen Pfad an, den die API nicht kennt, bekommen Sie kein sauberes 404 – sondern das Frontend der Website, mit HTTP 200 und Content-Type: text/html.

Aus Sicht des Clients war alles erfolgreich, also parst er den Body. Der Fehler, den Sie sehen, ist ein JSON-Parser, der sich über das erste Zeichen eines HTML-Dokuments beschwert – und das deutet nirgendwo in die Nähe des eigentlichen Problems.

Das heißt auch: Der fehlgeschlagene Aufruf hinterlässt in den Fehlerlogs des Anbieters meist keine Spur – ein 200 ist kein Fehler. Der Support wird Ihnen sagen, dass er nichts Auffälliges sieht, und das stimmt.

Prüfen, ob es daran liegt

Mit einem Befehl bestätigen: Senden Sie eine Anfrage und schauen Sie auf den Content-Type statt auf den Body:

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":"MODEL","messages":[{"role":"user","content":"hi"}]}'

Ein funktionierender Endpunkt antwortet mit application/json – selbst bei falschem Schlüssel bekommen Sie JSON, das genau das sagt. Sehen Sie text/html, liegt es an der URL, nicht am Schlüssel.

So beheben Sie es

  1. Prüfen Sie, ob Ihr Client /v1 selbst anhängtDas ist die ganze Falle. Die OpenAI-SDKs fügen /v1 nicht hinzu – Sie müssen es in die Base URL schreiben. Das Anthropic SDK und Claude Code fügen es dagegen selbst an; eine Base URL, die schon auf /v1 endet, ergibt dort /v1/v1/messages und scheitert genauso.
  2. Achten Sie auf einen abschließenden SchrägstrichManche Clients setzen Pfade naiv zusammen. Eine Base URL mit Schrägstrich am Ende kann im fertigen Pfad einen doppelten Schrägstrich erzeugen, den manche Gateways an das Frontend statt an die API leiten.
  3. Stellen Sie sicher, dass Sie den API-Host verwendenBietet ein Anbieter eine eigene API-Subdomain an, kann die Hauptdomain unter denselben Pfaden die Marketing-Website ausliefern. Gleiche URL-Form, völlig anderer Handler.
ClientBase URL sollte
OpenAI SDK (Python, Node, Go)auf /v1 enden
Codex, Cherry Studio, Chatbox, LobeChatauf /v1 enden
Anthropic SDKkein /v1 – es hängt /v1/messages selbst an
Claude Codekein /v1 – aus demselben Grund
Bei APICLAN lautet die Base URL https://apiclan.us/v1 für Clients im OpenAI-Stil und https://apiclan.us für Claude Code. Die vollständige Einrichtung für jeden Client steht im Schnellstart.

Verwandte Themen

401 invalid API key – wenn der Schlüssel richtig aussieht und trotzdem scheitert404 auf /v1/chat/completions, obwohl der Endpunkt eindeutig existiert

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