Strona główna → Pomoc

Claude Code i Codex potrzebują różnych base URL w tej samej bramce

Klienci w stylu Anthropic (Claude Code, Anthropic SDK) sami dopisują /v1/messages, więc ich base URL musi kończyć się na hoście. Klienci w stylu OpenAI (Codex, OpenAI SDK, Cursor, Cline) niczego nie dopisują, więc ich base URL musi kończyć się na /v1.

Co widzisz

Dlaczego tak się dzieje

Dwie linie SDK, dwie konwencje, jedna nazwa hosta bramki. Żaden klient nie jest w błędzie; po prostu nie zgadzają się, kto odpowiada za segment /v1. Pomylenie ich daje albo /v1/v1/…, albo ścieżkę bez wersji.

Powstały 404 jest wyjątkowo trudny do debugowania, bo często w ogóle nie dociera do API. Bramka, która serwuje stronę WWW z tej samej domeny, odpowiada na nieznane ścieżki stroną marketingową – HTTP 200, Content-Type: text/html. Klient próbuje wtedy sparsować HTML jako JSON i zgłasza błąd składni, który nie wskazuje nawet w pobliżu prawdziwej przyczyny.

Oznacza to też, że błąd nie zostawia śladu po stronie dostawcy. Wsparcie powie, że nie widzi żadnych żądań z twojego klucza, i będzie mówić prawdę: na żądanie odpowiedział serwer WWW, zanim w ogóle stało się wywołaniem API.

Sprawdź, czy to ta przyczyna

Zamiast czytać treść, zapytaj o typ treści – jedno polecenie to rozstrzyga:

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 oznacza, że URL jest poprawny – nawet zły klucz odpowiada w JSON. text/html oznacza, że rozmawiasz ze stroną WWW, a problemem jest base URL.

Jak to naprawić

  1. Decyduj według linii SDK, nie nazwy produktuWszystko zbudowane na Anthropic SDK chce samego hosta; wszystko zgodne z OpenAI chce /v1. Nowe narzędzia pasują do jednej z tych dwóch grup bez osobnych instrukcji.
  2. Usuń końcowy ukośnikNiektóre klienty łączą ścieżki naiwnie, a base URL zakończony na / może dać podwójny ukośnik, który trafia do strony WWW zamiast do API.
  3. Sprawdź typ treści, zanim sprawdzisz kluczOdpowiedź w HTML oznacza, że żądanie nigdy nie dotarło do API. Zmiana kluczy w tym momencie niczego nie zmienia i kosztuje całe popołudnie.
  4. Najpierw użyj przykładów dostawcy dosłownieUruchom jedną znaną, działającą konfigurację, a potem zmieniaj po jednej rzeczy naraz. Większość błędów konfiguracji to dwie pomyłki jednocześnie.
KlientBase URL powinien
Claude Codezawierać tylko host – bez /v1
Anthropic SDKzawierać tylko host – SDK dopisuje /v1/messages
Codexkończyć się na /v1
OpenAI SDK (Python, Node, Go)kończyć się na /v1
Cursor, Cline, Roo Codekończyć się na /v1
Cherry Studio, Chatbox, LobeChatkończyć się na /v1
W APICLAN: https://apiclan.us dla Claude Code i Anthropic SDK, https://apiclan.us/v1 dla Codex i wszystkiego zgodnego z OpenAI. Gotowe do skopiowania konfiguracje dla każdego klienta są w szybkim starcie.

Powiązane

Unexpected token '<' przy wywołaniu API zgodnego z OpenAI401 invalid API key – gdy klucz wygląda dobrze, a i tak nie działa

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.