Base URL エラー:プロトコル、パス、endpoint の確認方法

Base URL を切り分ける実践的な手順。プロトコル、ドメイン、API バージョン、endpoint、クライアント設定を確認し、変更ごとに短いテストを行います。

API Key を作成済みなのに client が 401404405model not found を返す、あるいはログイン画面を開く場合は、key、model、address を同時に変更しないでください。まず client が OpenAI-compatible contract と Anthropic-compatible contract のどちらを期待するかを確認します。次に https → domain → base path → endpoint の順で address を確認し、変更のたびに同じ短い request を送ります。これなら設定がどの層で contract とずれたかを特定できます。

BetterToken ではこの違いが重要です。OpenAI-compatible client の Base URL は https://www.bettertoken.ai/v1%60%E3%80%81Claude?utm_source=blog&utm_medium=organic_content&utm_campaign=SEO-022&utm_content=base-url-oshibka-kak-proverit-put-i-protokol Code の Anthropic-compatible Base URL は https://bettertoken.ai` で、必要な path は Claude Code 自身が追加します。これは同じ文字列の別表記ではなく、入れ替えられません。使用する tool の最新値は BetterToken Docs で確認してください。

Base URL と完全な request URL を分けて考える

Base URL は provider field や client config に設定する address です。完全な request URL は、library や CLI が resource path を追加して作られます。

設定するものpath を追加する側よくある誤り
OpenAI-compatible Base URLclient が /chat/completions/responses を追加するendpoint を二重にして /v1/v1/... になる
Claude Code 用 Anthropic-compatible Base URLClaude Code が protocol path を追加するBase URL field に /v1/messages を入れる
完全な HTTP requestcode または curl で自分が endpoint を指定するMessages request を OpenAI endpoint に送る

raw Anthropic Messages request を自分で書くなら、完全な path は https://www.bettertoken.ai/v1/messages%60?utm_source=blog&utm_medium=organic_content&utm_campaign=SEO-022&utm_content=base-url-oshibka-kak-proverit-put-i-protokol です。ただし、これは Claude Code の Base URL field に入れる値ではありません。OpenAI-compatible client では base address は通常 /v1` で終わり、endpoint は client が追加します。この区別は Claude Code guideCodex guide にあります。

正しい順番で行う 5 つの確認

各項目の後に同じ短い request を繰り返してください。1 つの response に複数の原因を混ぜないためです。

  1. client が期待する protocol を決める。
  2. endpoint を含めず、適切な Base URL だけを設定する。
  3. request URL 内の /v1 が 1 回だけか確認する。
  4. streaming と tools なしで minimal request を送る。
  5. client を完全に再起動して同じ test を行う。

1. model 名ではなく protocol を確認する

tool の integration type を見てください。Codex、Cursor、Cline、OpenCode などは OpenAI-compatible setting を使います。Claude Code は Anthropic-compatible contract を使います。異なる contract を送っている場合、model を変えても直りません。client と server が必要とする fields と paths が違うためです。model 名で推測せず、該当 tool の Docs で provider、API Key、Base URL の項目を確認してください。

2. Base URL から余分な path を除く

OpenAI-compatible setup では次を使います。

https://www.bettertoken.ai/v1?utm_source=blog&utm_medium=organic_content&utm_campaign=SEO-022&utm_content=base-url-oshibka-kak-proverit-put-i-protokol

Claude Code では /v1/messages を付けずに次を使います。

https://bettertoken.ai/?utm_source=blog&utm_medium=organic_content&utm_campaign=SEO-022&utm_content=base-url-oshibka-kak-proverit-put-i-protokol

よくある失敗は、curl example の完全な URL を GUI の Base URL field に貼り付けることです。client がさらに endpoint を追加するため、存在しない route になります。field が base_urlendpoint baseAPI base なら、通常 resource name は入れません。

3. /v1 をどちらが持つか確認する

API version は 1 回だけ現れる必要があります。BetterToken の OpenAI-compatible setting では /v1 はすでに Base URL に含まれます。SDK が version prefix を別に指定できても、SDK Docs の明示的な指示なしに 2 つ目の /v1 を足さないでください。log の .../v1/v1/... はほぼ必ず join error です。反対に OpenAI-compatible request で /v1 がないと、404 や JSON ではなく HTML が返ることがあります。

4. minimal request で endpoint を確認する

streaming、tools、長い context を有効にする前に、同じ client から短い request を 1 回送ります。raw OpenAI-compatible request の endpoint は Base URL の後の resource、Anthropic Messages は /v1/messages です。Setup panel または model plaza の current Model ID と、自分の API Key を使ってください。key を issue、screenshot、共有する command に含めてはいけません。success JSON、model、usage が返れば address layer は通過しています。その後に limits、model、task parameters を確認します。

5. 変更後は client を完全に再起動する

多くの CLI や desktop app は environment variables と config を起動時にしか読みません。file を保存するだけでは不十分です。process を終了し、新しい terminal を開くか app を再起動して、同じ短い test を繰り返してください。そうしないと editor には新しい Base URL が見えても、test は古い値で実行されます。

よくある response の読み方

症状最初に確認すること次の操作
404 Not Found または JSON ではなく HTML/v1、重複 endpoint、余分な slash実際の request URL を client Docs と照合する
401 または公式ログイン画面API Key と client の authentication modeclient が environment から BetterToken key を読んでいるか確認する
405 Method Not AllowedHTTP method と endpointAPI が期待する method を送る
model not foundBase URL と protocol、次に Model IDroute を正してから current model ID を選ぶ
timeout または stream の切断streaming なしの短い request成功したら stream と timeout を別々に調べる

401 が常に address の誤りとは限らず、404 が常に model 不在とも限りません。URL、authentication、model、advanced features の順で確認するのが効率的です。

Codex と Claude Code の短い確認手順

Codex では OpenAI-compatible provider と current Codex instructions を使います。Base URL は `https://www.bettertoken.ai/v1%60%E3%80%81%E8%87%AA%E5%88%86%E3%81%AE?utm_source=blog&utm_medium=organic_content&utm_campaign=SEO-022&utm_content=base-url-oshibka-kak-proverit-put-i-protokol BetterToken API Key、current Model ID を設定します。Codex を再起動し、test directory で小さな read-only request を実行してください。Dashboard では request time、status、model、token usage を確認できます。

Claude Code では Claude Code instructions を使います。Anthropic-compatible Base URL は https://bettertoken.ai、自分の key、guide にある model を設定します。この field に OpenAI の /v1 を入れず、/messages も手動で追加しません。再起動後に短い request を送り、tools や MCP はその後に追加します。

避けるべきこと

  • Base URL、API Key、Model ID を一度に変えない。
  • すべての tool に同じ address を入れない。protocol は client が決めます。
  • 日付と tool page を確認せず古い guide の path を使わない。
  • 最初の test を write access のある実作業 repository で行わない。空の test folder と read-only task を使う。
  • API Key 全体を support に送らない。status、time、tool name、sanitized request URL で十分です。

次の一歩

使用する tool の BetterToken Docs を開き、BetterToken account で自分の API Key を作成し、選んだ protocol の current Base URL をコピーして短い test を実行してください。成功後に Dashboard の status、model、token usage を照合すると、settings が保存されたことだけを確認するより信頼できます。

LLM ワークフローを最適化しませんか?

単一 API でモデルを接続し、キーと AI コストを管理できます。