SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSONjson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)invalid character '<' looking for beginning of valueError: Invalid JSON response bodyLa plupart des passerelles compatibles OpenAI servent leur site et leur API depuis le même domaine. Quand vous demandez un chemin que l'API ne reconnaît pas, vous n'obtenez pas un 404 propre : vous obtenez le front-end du site, avec HTTP 200 et Content-Type: text/html.
Du point de vue du client, tout a réussi, donc il analyse le corps. L'erreur que vous voyez est un parseur JSON qui se plaint du premier caractère d'un document HTML, ce qui ne pointe nulle part près du vrai problème.
Cela signifie aussi que l'appel raté ne laisse généralement aucune trace dans les journaux d'erreurs du fournisseur : un 200 n'est pas une erreur. Le support vous dira qu'il ne voit rien d'anormal, et il dira vrai.
Confirmez-le en une commande. Envoyez une requête et regardez le type de contenu plutôt que le corps :
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"}]}'
Un endpoint fonctionnel renvoie application/json : même avec une mauvaise clé, vous recevez un JSON qui le dit. Si vous voyez text/html, le problème vient de l'URL, pas de la clé.
| Client | La base URL doit |
|---|---|
| OpenAI SDK (Python, Node, Go) | se terminer par /v1 |
| Codex, Cherry Studio, Chatbox, LobeChat | se terminer par /v1 |
| Anthropic SDK | ne pas contenir /v1 : le SDK ajoute /v1/messages |
| Claude Code | ne pas contenir /v1 : pour la même raison |
https://apiclan.us/v1 pour les clients de style OpenAI et https://apiclan.us pour Claude Code. La configuration complète de chaque client est dans le démarrage rapide.Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.