Accueil → Aide

405 Method Not Allowed lors d'un appel à une API IA

Votre POST a atteint le serveur web, mais pas l'API. Le chemin auquel vous l'avez envoyé ne répond qu'à GET, donc le serveur refuse la méthode plutôt que la requête. Sur presque toutes les passerelles, cela signifie que la base URL s'arrête un segment trop tôt : elle pointe vers la racine du site au lieu du préfixe de l'API.

Ce que vous voyez

Pourquoi cela arrive

Les SDK de la lignée OpenAI n'ajoutent pas de préfixe de chemin pour vous. Ce que vous mettez dans base_url est utilisé tel quel, suivi de /chat/completions. Donnez-leur https://example.com et la requête part vers https://example.com/chat/completions ; donnez-leur le domaine nu avec une barre finale et certains clients le réduisent à https://example.com/, un simple POST vers la page d'accueil.

Une page d'accueil est statique. Elle répond à GET et HEAD et refuse tout le reste, ce qui donne exactement un 405. La requête n'a jamais atteint le code de l'API, donc rien n'apparaît dans votre journal d'utilisation, et un journal vide est en soi l'indice.

C'est l'image inversée du cas Anthropic. Claude Code et le SDK Anthropic ajoutent eux-mêmes /v1/messages, ils ont donc besoin de la base URL SANS /v1. Copier un réglage Claude Code fonctionnel dans un client OpenAI reproduit cette erreur à chaque fois.

Vérifiez si c'est bien la cause

Demandez au serveur quelles méthodes ce chemin précis accepte :

curl -s -o /dev/null -w '%{http_code}\n' -X POST 'YOUR_BASE_URL/chat/completions'
# and compare with the bare domain:
curl -s -D- -o /dev/null -X POST 'https://YOUR_DOMAIN/' | grep -i '^allow\|HTTP/'

Si le domaine nu répond 405 avec un en-tête Allow: GET, HEAD, vous avez trouvé. Un chemin d'API correct renvoie 401 quand la clé manque : une erreur d'authentification signifie que vous parlez bien à l'API.

Comment le corriger

  1. Remettez le préfixe de l'API dans la base URLPour les clients de style OpenAI, la base URL doit se terminer par le préfixe de l'API, normalement /v1. Le SDK ajoute /chat/completions après, et rien d'autre.
  2. Ne réutilisez pas la valeur de Claude CodeLes clients de la lignée Anthropic prennent l'hôte seul parce qu'ils ajoutent /v1/messages en interne. Les deux réglages semblent interchangeables et ne le sont pas.
  3. Retirez la barre oblique finaleUne base URL terminée par / peut produire une double barre, et certains routeurs l'envoient au front-end plutôt qu'à l'API : même 405, même absence dans le journal.
ClientLa base URL doit
OpenAI SDK (Python, Node, Go)se terminer par /v1
Codex, Cherry Studio, Chatbox, LobeChat, LM Studiose terminer par /v1
Cursor, Cline, Roo Codese terminer par /v1
Anthropic SDKne pas contenir /v1 : le SDK ajoute /v1/messages
Claude Codene pas contenir /v1 : pour la même raison
Sur APICLAN, la base URL est https://apiclan.us/v1 pour les clients de style OpenAI et https://apiclan.us pour Claude Code et le SDK Anthropic. Les réglages de chaque client sont dans le démarrage rapide.

Voir aussi

Unexpected token '<' lors d'un appel à une API compatible OpenAI401 invalid API key : quand la clé semble correcte mais échoue quand même

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.