Home → Assistenza

Claude Code e Codex hanno bisogno di base URL diverse sullo stesso gateway

I client in stile Anthropic (Claude Code, l'SDK di Anthropic) aggiungono da soli /v1/messages, quindi la loro base URL deve fermarsi all'host. I client in stile OpenAI (Codex, l'SDK di OpenAI, Cursor, Cline) non aggiungono nulla, quindi la loro deve terminare con /v1.

Cosa vedi

Perché succede

Due famiglie di SDK, due convenzioni, un solo nome host del gateway. Nessuno dei due client sbaglia; semplicemente non sono d'accordo su chi sia il proprietario del segmento /v1. Invertirli produce /v1/v1/… oppure un percorso senza versione.

Il 404 che ne risulta è particolarmente difficile da diagnosticare perché spesso non raggiunge mai l'API. Un gateway che serve il proprio sito sullo stesso dominio risponde ai percorsi sconosciuti con la pagina commerciale: HTTP 200, Content-Type: text/html. Il client prova allora a interpretare l'HTML come JSON e segnala un errore di sintassi che non indica nemmeno lontanamente la vera causa.

Significa anche che l'errore non lascia tracce dal lato del provider. L'assistenza dirà di non vedere richieste dalla tua chiave, e dirà la verità: alla richiesta ha risposto un server web prima ancora che diventasse una chiamata API.

Verifica se la causa è questa

Chiedi il tipo di contenuto invece di leggere il corpo: un comando basta a chiarire:

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 significa che l'URL è corretto: anche una chiave sbagliata risponde in JSON. text/html significa che stai parlando con un sito web e che il problema è la base URL.

Come risolvere

  1. Decidi in base alla famiglia di SDK, non al nome del prodottoTutto ciò che è costruito sull'SDK di Anthropic vuole solo l'host; tutto ciò che è compatibile con OpenAI vuole /v1. I nuovi strumenti rientrano in una delle due categorie senza bisogno di istruzioni proprie.
  2. Togli la barra finaleAlcuni client uniscono i percorsi in modo ingenuo, e una base URL che termina con / può produrre una doppia barra che porta al sito invece che all'API.
  3. Controlla il tipo di contenuto prima della chiaveUna risposta in HTML significa che la richiesta non ha mai raggiunto l'API. Cambiare chiave a quel punto non cambia nulla e ti costa un pomeriggio.
  4. Usa prima gli esempi del provider così come sonoFai funzionare una configurazione nota, poi cambia una cosa alla volta. La maggior parte degli errori di configurazione sono due errori insieme.
ClientLa base URL deve
Claude Codeessere solo l'host, senza /v1
Anthropic SDKessere solo l'host: l'SDK aggiunge /v1/messages
Codexterminare con /v1
OpenAI SDK (Python, Node, Go)terminare con /v1
Cursor, Cline, Roo Codeterminare con /v1
Cherry Studio, Chatbox, LobeChatterminare con /v1
Su APICLAN: https://apiclan.us per Claude Code e l'SDK di Anthropic, https://apiclan.us/v1 per Codex e tutto ciò che è compatibile con OpenAI. Le configurazioni pronte da copiare per ogni client sono nella guida rapida.

Articoli correlati

Unexpected token '<' quando chiami un'API compatibile con OpenAI401 invalid API key: quando la chiave sembra giusta ma continua a fallire

Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.