ドキュメント

ドキュメント

ANTHROPIC_BASE_URL

Claude Code と Anthropic SDK の接続先を api.anthropic.com 以外に設定する環境変数です。変数の完全なリファレンス、クライアントごとの設定方法、ほとんどのエラーの原因となる2つの注意点を解説します。

ANTHROPIC_BASE_URL は、デフォルトの https://api.anthropic.com の代わりに、Anthropic SDK と Claude Code が API リクエストを送信するホストを指定します。パスを含めずにオリジンを設定してください。クライアントが /v1/messages を自動的に付加します。Authorization: Bearer ヘッダーに設定される ANTHROPIC_AUTH_TOKEN と組み合わせて使用します。

これが「キーの持ち込み(bring your own key)」や「カスタム base URL」と呼ばれる設定のすべてです。ANTHROPIC_BASE_URL を Kunavo のエンドポイントに、Kunavo のキーを ANTHROPIC_AUTH_TOKEN に設定すれば、リクエストは Anthropic Messages 形式で Kunavo を経由して Claude に届きます。モデル変数も四つすべて固定してください。sonnet と haiku のエイリアスは Kunavo が提供していないモデルを要求するため、固定しないと 404 が返ります。

~/.zshrc
# The origin only — no trailing /v1, no trailing slash.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...

# Claude Code: pin all four model variables to models the endpoint serves.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

設定後、新しいターミナルを開いてください。Claude Code と SDK はプロセスの起動時にこれらの変数を読み込むため、すでに実行中のセッションでは以前のエンドポイントが使われ続けます。

ANTHROPIC_BASE_URL に /v1 を含めないでください。 Anthropicクライアントはパスを自動的に付加するため、https://api.kunavo.com/v1 を指定するとリクエスト先が /v1/v1/messages となり、すべての呼び出しで404が返されます。OpenAI SDK は逆の方式を採用しており、base_url の /v1 に 含める必要があります。この違いが、ここで最もよくある設定ミスの原因です。

各変数の役割

Claude Code が読み込む変数の完全な一覧は、Anthropicの環境変数リファレンスを参照してください。ここでは、エンドポイントの接続先を切り替える際に重要な変数を紹介します。

変数値制御する内容
ANTHROPIC_BASE_URLhttps://api.kunavo.comすべてのリクエストの送信先となるオリジンです。パスや末尾のスラッシュは含めません。
ANTHROPIC_AUTH_TOKENsk-kn-…Authorization: Bearer で送信する認証情報です。ゲートウェイが必要とするのはこちらです。
ANTHROPIC_API_KEYsk-ant-…api.anthropic.com が想定する形式である x-api-key ヘッダーで送信する認証情報です。これか上記のトークンのどちらか一方を設定してください。
ANTHROPIC_MODELclaude-sonnet-5Claude Codeが会話で使用するメインモデルです。
ANTHROPIC_DEFAULT_OPUS_MODELclaude-opus-5-5opusエイリアス(/model opus)が参照するモデル。Claude Code自体のデフォルトは最新のOpusであるため、エンドポイントが提供するモデルのいずれかに固定してください。Opus 5.5にはClaude Code v2.1.280以降が必要です。
ANTHROPIC_DEFAULT_SONNET_MODELclaude-sonnet-5sonnetエイリアス(/model sonnet)が参照するモデル。エイリアスはデフォルトでSonnet 5.5を要求するため、エンドポイントが提供するSonnetに固定してください。
ANTHROPIC_DEFAULT_HAIKU_MODELclaude-haiku-4-5haikuエイリアス(/model haiku、haikuに設定したサブエージェント)の背後で使われるモデルであり、Claude Codeがバックグラウンド呼び出しにも使用します。v2.1.293以降、エイリアスはHaiku 5.5を要求するため、エンドポイントが提供するHaikuモデルに固定してください。
モデル名には、実際にエンドポイントで提供されているものを指定してください。ゲートウェイに接続した際に、そこで扱われていないモデルIDを設定したままにすることが、2つ目のよくある失敗です。この場合、認証エラーではなく 404 model_not_found が返されます。KunavoのモデルIDはモデル一覧ページに掲載されており、GET /v1/modelsからリアルタイムで取得できます。

クライアントごとの設定方法

Claude Code

Claude Codeの起動元となるシェルプロファイルに環境変数をエクスポートし、新しいターミナルを開きます。インストール方法やワークフローは変わりません。

~/.zshrc
# ~/.zshrc (or ~/.bashrc) — applies to every Claude Code session.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...

# Pin models this endpoint serves. Claude Code's default and its opus/sonnet
# aliases follow Anthropic's newest models, which may not be served here —
# unpinned, those calls 404.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

現在のセッションが使用しているエンドポイントを確認するには、Claude Code内で /status を実行してください。キーの生成方法も含む手順については、Claude CodeでAPIキーを設定するを参照してください。

Anthropic SDK(Python / TypeScript)

SDKは同じ環境変数を読み込みます。また、両方の設定値をコンストラクターに渡すこともできます。1つのプロセスから複数のエンドポイントに接続する場合に便利です。

anthropic_sdk.py
from anthropic import Anthropic

# The Anthropic SDK appends /v1/messages, so pass the origin — not .../v1.
client = Anthropic(
    base_url="https://api.kunavo.com",
    auth_token="sk-kn-...",          # sets the Authorization: Bearer header
)

msg = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Say hi"}],
)
print(msg.content[0].text)

OpenAI SDK — 異なる方式

コードがすでにOpenAI形式に対応している場合、ANTHROPIC_BASE_URLは不要です。base_urlをOpenAI互換パスに設定します。今回は /v1を含めて、同じClaudeモデルを /v1/chat/completions 経由で呼び出します。

openai_sdk.py
from openai import OpenAI

# The OpenAI SDK is the other convention: it wants the /v1 in the base_url.
client = OpenAI(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com/v1",
)

r = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Say hi"}],
)
print(r.choices[0].message.content)

Cline、Roo Code、Kilo Code、Cursor

エディターエージェントでは、ほとんどの場合、環境変数ではなく各ツールのUIに同じ2つの設定項目があります。「base URL」または「custom endpoint」欄と、APIキー欄です。ルールは変わりません。Anthropic形式のプロバイダーには /v1 を含めないオリジンを指定し、APIキー欄にキーを設定します。クライアントごとの手順は、Cline、Roo Code、Kilo Codeを参照してください。

設定を確認する

curlを1回実行するだけで、ベースURLと認証情報を同時に検証できます。JSON本文とともに200が返れば、両方とも正しく設定されています。

# 200 and a JSON body means the base URL and the token are both right.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

# In Claude Code, /status shows the endpoint the session is actually using.

動作しない場合

症状原因修正方法
すべてのリクエストで404が返るANTHROPIC_BASE_URL の末尾に /v1 が付いているオリジンのみを設定してください。クライアントが /v1/messages を付加します。
401 / invalid x-api-keyエンドポイントがBearerトークンで認証するのに、認証情報を ANTHROPIC_API_KEY として設定している代わりに ANTHROPIC_AUTH_TOKEN を使用してください。詳しい違いを参照してください。
api.anthropic.com に接続し続けるセッションの開始後に環境変数をエクスポートしたか、シェルが読み込まないプロファイルに設定している新しいターミナルを開き、クライアントを起動する同じシェルで echo $ANTHROPIC_BASE_URL を実行して確認してください。
404 model_not_foundエンドポイントで提供されていないモデルIDGET /v1/models にあるIDを ANTHROPIC_MODEL に設定してください。
/model sonnet、/model haiku、サブエージェントで 404エイリアスがエンドポイントの提供していないモデルを要求しているANTHROPIC_DEFAULT_SONNET_MODEL と ANTHROPIC_DEFAULT_HAIKU_MODEL を、残りの二つのモデル変数とあわせて固定する
Claude Code の更新後にすべてのリクエストが失敗するバージョン 2.1.304 でカスタム base URL の背後でツール検索がオンになり、400 や 422 はツール検索なしで再試行されたが、ToolSearch を禁止したり --tools から外したりしているとすべてのリクエストが失敗した2.1.305 以降に更新する。このバージョンはツール検索なしで再試行する
Claude Codeにクレジット残高不足と表示されるリクエストはエンドポイントに到達しており、サブスクリプションではなくキーに対して請求されています。想定どおりの動作です。残高を追加するか、プランに戻るにはトークンの設定を解除してください。クレジット不足を参照してください。

バージョンに関する注記

Anthropic API SDK、2026-10-21。Python SDK 2.0.0 と TypeScript SDK 1.0.0 は anthropic-version: 2026-10-21 を送信し、API キーを X-Api-Key ではなく Authorization: Bearer に入れます。Kunavo はどちらのヘッダーからでもキーを読み取るため、このアップグレードで Kunavo 側の変更は不要です。この API バージョンでは、temperature、top_p、top_k を含むリクエストは 400 で拒否され(Anthropic のAPI バージョン 2026-10-21 への移行ガイド、2026-10-22 に確認)、新しい SDK はこれらを引数として受け付けなくなりました。Python SDK 2.1.0 では TypeError が発生します。Kunavo はクライアントが指定するバージョンにかかわらず API バージョン 2023-06-01 でモデルを呼び出すため、temperature を(たとえば extra_body で)送り続けるリクエストも拒否されません。対応するモデルにはそのまま渡され、対応しないモデルでは Kunavo がそれを取り除き、X-Kunavo-Dropped-Params レスポンスヘッダーにその名前を示します。2026-10-22 に Python SDK 2.1.0 と TypeScript SDK 1.1.0 を使い、ローカルの Kunavo ビルドで確認しました。

カスタムの ANTHROPIC_BASE_URL の背後での動作を変える Claude Code のリリースです。CHANGELOG から抜粋し、日付はそれぞれの npm でのリリース日です。

  • 2.1.285(npm、2026-09-29):カスタム base URL の背後のセッションは、1M のコンテキストウィンドウを持つモデル(Opus 4.7 以降、Sonnet 5 以降、Fable)でそのウィンドウを使うようになりました。ゲートウェイが 200K トークンで止まる場合は、/autocompact 200k で上限を元に戻します。
  • 2.1.299(npm、2026-10-14):Claude Code が Anthropic 自体に送るリクエスト(機能フラグ、起動、fast mode、プロフィール、フィードバック)に、サードパーティのゲートウェイ用に設定したキーが含まれなくなりました。また、カスタム base URL を通るストリームは、データを 180 秒ではなく 300 秒待つようになりました。
  • 2.1.304(npm、2026-10-19):カスタム base URL の背後ではツール検索がデフォルトでオンになり、ゲートウェイから 400 または 422 が返るとツール検索なしで再試行します。
  • 2.1.305(npm、2026-10-20):Vertex、Bedrock などのプロバイダーでエンドポイントやゲートウェイがツール検索を拒否したとき、また ToolSearch を禁止したり --tools から外したりしたゲートウェイの背後で、すべてのリクエストが失敗するという 2.1.304 の回帰を修正しました。現在の Claude Code はツール検索なしで再試行します。

2.1.305 以降を使ってください。2.1.299 はゲートウェイのキーを Anthropic 自身のエンドポイントに送らなくなった最初のリリースで、2.1.305 は ToolSearch を禁止したり --tools から外したりしていても回復できる最初のリリースです。

ProまたはMaxのサブスクリプションへの影響

認証情報を格納する変数が設定されている間、Claude Codeの料金はログイン中のサブスクリプションではなくキーに対して請求されます。プラン上限は適用されず、利用料金はキーの所有者に請求されます。サブスクリプション自体には影響しません。変数を解除して新しいターミナルを開くと、Claude Codeはプランの利用に戻ります。この2つの請求方法が併用されることはありません。それぞれの費用の計算方法については、Claude Codeの料金を参照してください。

次へ

よくある質問

ANTHROPIC_BASE_URLとは何ですか?

ANTHROPIC_BASE_URL は、デフォルトの https://api.anthropic.com の代わりに、Anthropic SDK と Claude Code が API リクエストを送信するホストを指定する環境変数です。パスを含めずにオリジンを設定してください。クライアントが /v1/messages を自動的に付加します。Authorization: Bearer ヘッダーに設定される ANTHROPIC_AUTH_TOKEN と組み合わせて使用します。Anthropic互換のエンドポイントならどれでも利用できます。Kunavoの場合、値は https://api.kunavo.com です。

ANTHROPIC_BASE_URL に /v1 を含める必要がありますか?

いいえ。ANTHROPIC_BASE_URL にはオリジンのみを指定します。https://api.kunavo.com を指定し、https://api.kunavo.com/v1 は指定しないでください。Anthropic SDK と Claude Code が /v1/messages パスを自動的に付加するためです。/v1 を含めると、リクエスト先が /v1/v1/messages となり、404 が返されます。OpenAI SDK は逆の方式を採用しており、base_url に /v1 を含める必要があります。そのため、同じゲートウェイでも呼び出し元のクライアントによって表記が異なります。

ANTHROPIC_AUTH_TOKEN と ANTHROPIC_API_KEY の違いは何ですか?

ANTHROPIC_AUTH_TOKEN は認証情報を Authorization: Bearer ヘッダーで送信し、ANTHROPIC_API_KEY は api.anthropic.com が想定する x-api-key ヘッダーで送信します。Bearerトークンで認証するゲートウェイには ANTHROPIC_AUTH_TOKEN が必要です。ANTHROPIC_BASE_URL の変更後に 401 が発生する最も一般的な原因は、代わりに ANTHROPIC_API_KEY を設定していることです。片方だけを設定してください。両方を設定した場合の動作は、クライアントのバージョンによって異なります。

Claude CodeでカスタムベースURLを設定するにはどうすればよいですか?

Claude Codeの起動元となるシェルプロファイル(~/.zshrc または ~/.bashrc)で ANTHROPIC_BASE_URL と ANTHROPIC_AUTH_TOKEN をエクスポートし、新しいターミナルを開いて環境変数を引き継がせます。Claude Codeは起動時にこれらの変数を読み込むため、すでに実行中のセッションでは以前のエンドポイントが使われ続けます。Claude Code内で /status を実行すると、現在のセッションが使用しているエンドポイントを確認できます。

ANTHROPIC_BASE_URL を設定すると、Claude Pro または Max のサブスクリプションは無効になりますか?

ANTHROPIC_AUTH_TOKEN などの認証情報を格納する変数が設定されている間、Claude Codeの料金はログイン中のサブスクリプションではなくキーに対して請求されます。そのため、ProとMaxのプラン上限は適用されず、キーの所有者に利用料金が請求されます。サブスクリプション自体には影響しません。変数を解除して新しいターミナルを開くと、Claude Codeはプランの利用に戻ります。