招待して報酬

招待報酬の仕組み

招待リンクを共有します。友だちがリンクから登録してチャージすると、その後のチャージごとに表示された報酬を受け取れます。

Base URLとは?APIのURL構造と401・404エラーの切り分け方

Base URLは、APIサーバーまたはAPIゲートウェイの基点となるアドレスです。クライアントはそこへ特定のendpointを追加し、最終的なリクエストURLを作ります。本記事ではBase URL、endpoint、完全なURLの違いを整理し、OpenAI-compatibleクライアントとClaude Codeで使うBetterTokenのアドレスを示したうえで、401、404、405、model not found、HTML応答、timeout、古い設定が残る問題を順番に切り分けます。

目次

API Keyを作成済みなのに、クライアントが401、404、405、model not foundを返す、ログインページが開く、またはJSONではなくHTMLが返る場合、Key・モデル・アドレスを一度に変更しないでください。まずBase URLとは何かを明確にし、プロトコル → 基点アドレス → APIバージョン → endpoint → 認証 → モデルの順で確認します。

Base URLは、APIサーバーまたはAPIゲートウェイの基点となるアドレスです。 クライアントライブラリ、SDK、CLIが特定のリソースを示すパス、つまりendpointを追加し、完全なリクエストURLを作ります。

以下ではBetterTokenを例にしますが、同じ考え方は他のAPIゲートウェイ、自前のプロキシ、OpenAI-compatibleまたはAnthropic-compatibleなサービスにも使えます。

APIにおけるBase URLとは

最も簡単な式は次のとおりです。

完全なリクエストURL = Base URL + Endpoint Path

OpenAI-compatibleなリクエストの例です。

Base URL:  https://www.bettertoken.ai/v1
Endpoint:  /responses
完全なURL: https://www.bettertoken.ai/v1/responses

もう一つの代表的なendpointが/chat/completionsです。

Base URL:  https://www.bettertoken.ai/v1
Endpoint:  /chat/completions
完全なURL: https://www.bettertoken.ai/v1/chat/completions

実際のアプリでは、クライアントが二つの部分の間にあるスラッシュを調整することが一般的です。重要なのは文字列を手作業でどう結合するかではなく、クライアントが後から追加するパスをBase URL欄へ先に書いていないかです。

API URLを構成する要素

https://www.bettertoken.ai/v1/responsesを分解します。

要素例役割
スキームhttps://接続方法を指定する
ホストbettertoken.aiAPIサービスのドメインを示す
ベースパス/v1APIバージョンや共通入口を示す
endpoint/responses特定のリソースや処理を指定する

Base URLがスキームとドメインだけのサービスもあれば、/v1のようなベースパスを含むサービスもあります。「常に/v1を付ける」という共通ルールはありません。利用中のサービスとクライアントの最新ドキュメントを確認してください。

Base URLではないもの

混同しやすいものBase URLとの違い
WebサイトのトップページHTMLを返すことがある。API Base URLはプログラムからのリクエスト用
完全なリクエストURL/responses、/chat/completions、/v1/messagesなどのendpointを含む
API KeyKeyは認証用。Base URLは送信先を決める
Model ID呼び出すモデルを選ぶが、プロトコルや経路は選ばない
MCPサーバーのアドレスMCPはツールやデータを接続するもので、モデルAPIのBase URLではない

ブラウザーで開けることは、正しいBase URLである証明にはなりません。有効なAPIルートでも読みやすいページを表示しないことがあります。逆に、正常に表示されるログインページはAPIではなくWebサイト側のルートかもしれません。

モデル名ではなく、クライアントのプロトコルで選ぶ

同じモデルゲートウェイがOpenAI-compatibleとAnthropic-compatibleの両方の入口を提供する場合があります。GPT、Claude、Kimi、GLMのどれを使うかより、クライアントがどのプロトコルを期待しているかが重要です。

現在のBetterTokenドキュメントでは、次のように使い分けます。

クライアントまたは用途一般的なプロトコル入力するBase URLクライアントが追加するパス
CodexOpenAI Responseshttps://www.bettertoken.ai/v1/responses
Cursor、Cline、OpenCodeなどOpenAI-compatiblehttps://www.bettertoken.ai/v1/chat/completionsなど、クライアントが選ぶendpoint
Claude CodeAnthropic-compatiblehttps://bettertoken.ai/v1/messages
自分で書くHTTPリクエストリクエスト形式による使用するプロトコルのアドレスコード内でendpointを明示する

詳しくはOpenAI-compatible APIとAnthropic-compatible APIの違いを参照してください。Claudeモデルを使うからという理由だけで、すべてのツールにAnthropic用アドレスを設定してはいけません。GPTモデルを使う場合も、クライアントが要求するプロトコルを無視できません。

Base URLを確認する5つの手順

一度に一つの設定だけを変更し、変更のたびに同じ短いリクエストを送ります。これで原因となったレイヤーを特定できます。

1. クライアントが要求するプロトコルを確認する

ツール内のproviderまたはAPI typeを確認します。

  • CodexはOpenAI Responsesを使います。
  • Cursor、Cline、OpenCodeなどは通常OpenAI-compatible providerを使います。
  • Claude CodeはAnthropic-compatibleなMessagesプロトコルを使います。
  • 自作スクリプトでは、コードに実装したリクエスト形式がプロトコルを決めます。

プロトコルが合っていない場合、モデルを変えても直りません。リクエストフィールド、認証方式、endpointが異なるためです。

2. 完全なendpointではなく、基点アドレスだけを入力する

base_url、Base URL、API base、endpoint baseという欄は、通常、共通のルートアドレスを求めています。

正しい例:

https://www.bettertoken.ai/v1

よくある誤り:

https://www.bettertoken.ai/v1/responses
https://www.bettertoken.ai/v1/chat/completions

クライアントが/responsesを自動追加する場合、最初の誤りは次のURLになります。

https://www.bettertoken.ai/v1/responses/responses

Claude CodeのANTHROPIC_BASE_URLにもhttps://www.bettertoken.ai/v1/messagesを入れないでください。Claude Code自身が/v1/messagesを追加します。

3. /v1が一度だけ現れることを確認する

OpenAI-compatibleクライアント向けのBetterToken Base URLには、すでに/v1が含まれています。SDKにapi_version、path_prefixなどの別設定があっても、ドキュメントに明記されていない限り、二つ目の/v1を追加しないでください。

ログに次のURLがあれば、ほぼ確実に結合ミスです。

https://www.bettertoken.ai/v1/v1/responses

反対に、OpenAI-compatibleなリクエストに/v1がまったくない場合、404、JSONではなくHTML、ログインページへのリダイレクトが起こることがあります。

4. 最小のリクエストでendpointを試す

streaming、tools、MCP、長いコンテキストを無効にし、同じクライアントから短い一文だけを送ります。最初から実際のリポジトリで書き込み可能なタスクを実行しないでください。

Codexを起動します。

codex

次のように入力します。

短い一文だけで答えてください:接続は成功しています。

Claude Codeを起動します。

claude

次のように入力します。

短い一文だけで答えてください:接続は成功しています。

生のHTTPリクエストを使う場合は、SetupまたはModel Plazaで現在利用可能なModel IDを指定します。現行のCodexガイドではgpt-6-astraが例として使われていますが、実際にKeyから利用できるモデルはDashboardで確認してください。最小テストが成功してからstreaming、tools、長いタスクを戻します。

5. クライアントを完全に再起動する

多くのCLI、デスクトップアプリ、エディター拡張は、起動時にだけ環境変数や設定ファイルを読み込みます。ファイルを保存しても、実行中のプロセスが新しい値を読み込んだとは限りません。

変更後は次の手順を実行します。

  1. CLI、デスクトップアプリ、エディターウィンドウを閉じる。
  2. 関連するバックグラウンドプロセスも終了したことを確認する。
  3. 新しいターミナルを開くか、アプリを再起動する。
  4. 同じ短いテストを繰り返す。

そうしないと、画面上では新しい設定を見ながら、実際には古いBase URLを試すことになります。

よくあるエラーの読み方

症状最初に確認すること次の対応
404 Not Found/v1の重複、endpointの重複、プロトコル不一致ログの実リクエストURLとドキュメントを比較する
HTMLやログインページAPIではなくWebルートへ送っていないかホスト、/v1、endpointを確認する
401API Key、認証変数、実際に使われている設定Key前後の空白を除き、再起動する
403Keyに対象モデルや経路の権限があるかSetupまたはDashboardで利用可否を確認する
405 Method Not AllowedHTTP methodとendpointPOSTなど、要求されるmethodを確認する
model not foundModel IDより先にBase URLとプロトコル経路ミスをモデル変更で隠さない
timeout、stream切断streamingなしの短いリクエスト成功するならstreamingとtimeoutを別々に確認する
編集しても変化しない設定ファイルの場所、環境変数の上書き、プロセス完全終了して再起動する

401だからURLが正しいとは限らず、404だからモデルが存在しないとも限りません。ステータスコードは、届いたリクエストにサーバーがどう応答したかを示すだけです。

CodexとClaude Codeの簡易設定確認

Codex

Codex設定のうちアドレスに関係する部分は次のようになります。

model_provider = "bettertoken"
model = "gpt-6-astra"
cli_auth_credentials_store = "file"

[model_providers.bettertoken]
name = "BetterToken"
base_url = "https://www.bettertoken.ai/v1"
wire_api = "responses"
requires_openai_auth = true

API Keyは同じCodex設定ディレクトリのauth.jsonに保存します。全項目と認証ルールはCodex設定ガイドを参照してください。Codexが/responsesを追加するため、base_urlには含めません。

Claude Code

アドレスと認証に関する変数は次のとおりです。

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://bettertoken.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
  }
}

この断片はアドレスと認証変数だけを示しています。推奨される完全な設定はClaude Codeガイドを確認してください。ANTHROPIC_BASE_URLに/v1や/messagesを追加しないでください。

よくある4つのURL結合ミス

誤り: https://www.bettertoken.ai/v1/v1/responses
原因: Base URLとクライアントの両方が/v1を追加した

誤り: https://www.bettertoken.ai/v1/responses/responses
原因: 完全なendpointをBase URLとして入力した

誤り: Claude Code Base URL = https://www.bettertoken.ai/v1/messages
原因: Claude Codeが/v1/messagesを再度追加する

誤り: OpenAI-compatibleクライアントでhttps://bettertoken.aiを使う
原因: この入口に必要な/v1ベースパスがない

Key、モデル、高度なパラメーターを変える前に、まず結合を直してください。

避けるべき切り分け方

  • Base URL、API Key、Model IDを同時に変えない。
  • 同じBase URLをすべてのツールへコピーしない。
  • モデル名だけでプロトコルを判断しない。
  • 古いスクリーンショットや記事のアドレスを、最新ドキュメントの確認なしに使わない。
  • 初回接続テストに書き込み権限のある実プロジェクトを使わない。
  • 完全なAPI Keyをissue、チャット、スクリーンショットへ載せない。
  • 基本リクエストが成功する前にstreaming、tools、MCP、timeoutを調整しない。

よくある質問

Base URLとは何ですか?

APIサーバーまたはゲートウェイの基点アドレスです。クライアントが/responses、/chat/completions、/v1/messagesなどのendpointを追加します。

Base URLとendpointの違いは何ですか?

Base URLは複数のリクエストが共有するルートです。endpointは特定のリソースや処理へのパスです。組み合わせると完全なリクエストURLになります。

Base URLが間違っていると404になるのはなぜですか?

/v1の重複、endpointの重複、必要なベースパスの欠落、OpenAI-compatibleクライアントとAnthropic-compatibleアドレスの不一致が主な原因です。

BetterTokenのBase URLにはすべて/v1が必要ですか?

いいえ。Codex、Cursor、ClineなどのOpenAI-compatibleクライアントは通常https://www.bettertoken.ai/v1を使います。Claude Codeはhttps://bettertoken.aiを使い、/v1/messagesを自動追加します。

Base URLを変更しても反映されないのはなぜですか?

実行中のプロセスが古い環境変数や設定を保持している可能性があります。クライアントとバックグラウンドプロセスを完全終了し、新しいターミナルまたは再起動したアプリで試してください。

Base URLとMCPは同じですか?

いいえ。Base URLとAPI Keyはモデルリクエストの経路と認証を設定します。MCPは外部ツール、ファイル、データベース、その他のコンテキストを接続します。詳しくはMCPとAPI Key/Base URLの違いを参照してください。

次のステップ

BetterTokenドキュメントを開き、実際に使うツールのページから現在のBase URLだけをコピーします。自分のAPI Keyでstreamingとtoolsを無効にした短いリクエストを送り、Dashboardで時刻、ステータス、モデル、token使用量を確認してください。

基本リクエストが成功した後、モデル切り替え、長いコンテキスト、tools、MCP、streamingを一つずつ戻します。「アドレスは正しいか」と「高度な機能は動くか」を分けて検証すると、原因を早く特定できます。

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

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

無料で始める