405 Method Not AllowedRequest failed with status code 405openai.APIStatusError: Error code: 405The POST works in the provider's playground but not from your codeSDK z linii OpenAI nie dodają za ciebie prefiksu ścieżki. Cokolwiek wpiszesz w base_url, jest używane dosłownie, z dopisanym /chat/completions. Podaj https://example.com, a żądanie pójdzie na https://example.com/chat/completions; podaj samą domenę z końcowym ukośnikiem, a niektóre klienty sprowadzą to do https://example.com/ – zwykłego POST na stronę główną.
Strona główna jest statyczna. Odpowiada na GET i HEAD i odrzuca wszystko inne – to jest właśnie 405. Żądanie nie dotarło do żadnego kodu API, więc nic nie pojawia się w twoim logu użycia – a pusty log sam w sobie jest wskazówką.
To lustrzane odbicie przypadku Anthropic. Claude Code i Anthropic SDK same dopisują /v1/messages, więc potrzebują base URL BEZ /v1. Skopiowanie działającego ustawienia z Claude Code do klienta OpenAI za każdym razem odtwarza ten błąd.
Zapytaj serwer, jakie metody akceptuje dokładnie ta ścieżka:
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/'
Jeśli sama domena odpowiada 405 z nagłówkiem Allow: GET, HEAD, znalazłeś przyczynę. Poprawna ścieżka API zwraca 401, gdy brakuje klucza – błąd uwierzytelnienia oznacza, że rozmawiasz z API.
| Klient | Base URL powinien |
|---|---|
| OpenAI SDK (Python, Node, Go) | kończyć się na /v1 |
| Codex, Cherry Studio, Chatbox, LobeChat, LM Studio | kończyć się na /v1 |
| Cursor, Cline, Roo Code | kończyć się na /v1 |
| Anthropic SDK | być bez /v1 – SDK dopisuje /v1/messages |
| Claude Code | być bez /v1 – z tego samego powodu |
https://apiclan.us/v1 dla klientów w stylu OpenAI i https://apiclan.us dla Claude Code i Anthropic SDK. Ustawienia każdego klienta są w szybkim starcie.Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej bramce zgodnej z OpenAI, a nie zebrane z innych stron.