Claude Code と OpenRouter のつなぎ方。個人開発者がモデル費用を下げる順番

 ·  約23分で読めます  ·  AI 開発

100万入と100万出のカタログ価格。Fable が最も高く、Haiku が最も低い

一行で:Claude Code を OpenRouter に繋げるかどうかはよく聞かれる。繋がったあと、請求がどのクラスのモデルで進むかは、ほとんど先に計算されていない。 先にリクエストの経路と公式が求める環境変数を書き、そのあと四つのクラス、同じ仮定トークン、サブスクリプションと従量を並べ、最後に個人開発者が実際に回せるつまみを置く。

リクエストがマシンを出たあと、どこへ行くか

Claude Code が上流に話すのは Anthropic Messages API だ。OpenRouter はその互換の入口を出していて、公式ドキュメントはこれを Anthropic skin と呼ぶ。思考ブロックとツール呼び出しはそのまま通り、料金は OpenRouter のクレジットに付く。ローカルにもう一つ転送プロセスを立てる必要はない。

ベース URL は https://openrouter.ai/api で、末尾に /v1 は付けない。残りは Claude Code が自分で足す。/v1 付きの URL は、変数は全部書いたのに別のホストへ当たる、いちばんよくある失敗の一つだ。

互換の範囲は狭い。Claude Code を OpenRouter 経由で使うとき、保証されるのは Anthropic のファーストパーティだけだと公式は書いている。モデルピッカーには他社の id も出る。同じページには、Claude Code は Anthropic モデル向けに最適化されていて、他のプロバイダでは正しく動かないことがある、ともある。OpenRouter に繋ぐことと、カタログでいちばん安い id を黙って既定にすることは別だ。安い単価と、ツール呼び出しが最後まで終わることは、別々に確かめる。

クレジットの購入とトークン単価も別の勘定だ。OpenRouter 自身の Claude Code 向け説明は、推論に上乗せはなく、払うのはカタログの単価だとしている。クレジットを買うときに 5.5% の手数料が乗り、最低は $0.80。クラスの差に比べれば手数料は小さい。あとでその比率を表にする。

環境変数は四行。空の一行は省略できない

公式のクイックスタートは、鍵を ANTHROPIC_AUTH_TOKEN に置き、ANTHROPIC_API_KEY を 明示的な空文字にするよう求めている。前者は Authorization: Bearer に入り、ゲートウェイが期待する形だ。後者は x-api-key に入り、Claude Code はそれを Anthropic 直結の資格情報として扱う。空文字は、その直結へ戻るのを止めるためにある。古い鍵を消すだけで ="" を書かないと、対話セッションは保存済みのログインを使い続けることがある。

export OPENROUTER_API_KEY="<your-openrouter-api-key>"
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
export ANTHROPIC_API_KEY=""

順序で空振りしやすい。ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY" は、シェルがその行を読んだときに展開される。鍵が後ろにあるか、プロファイルのあとでシークレットマネージャが注入すると、トークンは空文字になり、すべてのリクエストが認証失敗になる。~/.zshrc では OPENROUTER_API_KEY を先に書く。

以前 Anthropic アカウントで Claude Code にログインしたことがあるなら、セッションで一度 /logout し、終了してから開き直す。公式は、キャッシュされたログインとゲートウェイ資格情報が同時にあると起動時に認証の衝突が出る、と書いている。見える症状はモデルが見つからないことであることが多く、openrouter/auto のように OpenRouter にしかない id も含まれる。macOS ではこのキャッシュはキーチェーン項目 Claude Code-credentials にある。ネイティブインストールが ~/.claude/.credentials.json を書くとは限らない。

確認はセッション内の /status。認証行は ANTHROPIC_AUTH_TOKEN、ベース URL は https://openrouter.ai/api であるべきだ。認証行がまだ ANTHROPIC_API_KEY だったり、ログイン方法が Claude アカウントのままだったりすれば、このプロセスに変数は届いていない。同じリクエストが OpenRouter の Activity に出るはずだ。

プロジェクト単位ならリポジトリの .claude/settings.local.json に書ける。Claude Code が読まない .env には置かない。鍵を git にコミットもしない。そのファイルがリポジトリに入ると、クローンした全員にクレジットの鍵を渡すことになる。一台のマシンで長く使うなら、公式はシェル設定を勧め、sk-or- で始まる文字列をドットファイルに貼るのではなく、OS のキーチェーンから読むやり方を示している。

空の鍵とログアウトは別の手順

/logout が消すのはキャッシュされた OAuth セッションだけだ。シェルに本物の ANTHROPIC_API_KEY が残っていればログアウトでは消えず、リクエストは Anthropic 直結として課金され続ける。

繋がらない、プロセスが起動しない、メモリが埋まる、は課金経路とは別の故障だ。インストールとエラーは Claude Code のデプロイエラー を見る。

単価を決めるのは四つのクラス

Claude Code は作業を Fable、Opus、Sonnet、Haiku に分け、それぞれ環境変数を見る。サブエージェントは CLAUDE_CODE_SUBAGENT_MODEL だ。OpenRouter の例は各クラスを ~anthropic/claude-…-latest に向け、サブエージェントの例は Opus に向けている。それは動く別名を選ぶ書き方で、個人の予算の書き方ではない。別名はカタログに従う。今日の ~anthropic/claude-opus-latest は anthropic/claude-opus-5.5 と同じ値段だ。明日もその id とは限らない。

次の表は 2026-10-20 に OpenRouter の公開カタログから読んだ単価で、単位は 100 万トークンあたりの米ドル。キャッシュ読み取りはカタログの cache read だ。プロバイダが本当にプレフィックスキャッシュに当たったときだけこの単価になり、入力のすべてが割引されるわけではない。

クラス この記事で固定する id 入力 出力 キャッシュ読み取り 100 万入 + 100 万出
Fable anthropic/claude-fable-5.1 $10 $50 $0.25 $60
Opus anthropic/claude-opus-5.5 $4 $20 $0.20 $24
Sonnet anthropic/claude-sonnet-5.5 $2 $10 $0.10 $12
Haiku anthropic/claude-haiku-5.5 $0.10 $0.50 $0.01 $0.60

同じ日のカタログでは、anthropic/claude-fable-5 の入出力は 5.1 と同じ $10 / $50 で、キャッシュ読み取りは $0.25 ではなく $1 だった。anthropic/claude-opus-5 は別の行で、入力 $5、出力 $25。anthropic/claude-sonnet-5 の入出力は 5.5 と同じで、キャッシュ読み取りは $0.20。5.5 の $0.10 の二倍だ。名前に Opus や Sonnet があっても請求は同じ数にならない。この記事の勘定で予算を守るなら id を固定し、latest だけで終わらせない。

export ANTHROPIC_DEFAULT_FABLE_MODEL="anthropic/claude-fable-5.1"
export ANTHROPIC_DEFAULT_OPUS_MODEL="anthropic/claude-opus-5.5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="anthropic/claude-sonnet-5.5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="anthropic/claude-haiku-5.5"
export CLAUDE_CODE_SUBAGENT_MODEL="anthropic/claude-haiku-5.5"

最後の一行は予算の選択で、公式サンプルではない。公式サンプルはサブエージェントを Opus に置く。ファイル検索、テスト、要約が主なら、セッションと同じ Opus に置いたままでは枝の一本一本が $4 / $20 になる。Haiku に下げる前に、/model で四クラスが並んでいることを確認し、Activity のモデル列が固定した id かを見る。

100×
同じ 100 万入 + 100 万出で、Fable 対 Haiku
5.5%
OpenRouter クレジット購入時の手数料。最低 $0.80
4
Claude Code が別単価で扱うクラス

$60 を $0.60 で割ると 100 倍。これはカタログ比で、あるセッションの実測ではない。文字が課金トークンになる過程は トークンと単価の対照 を見る。今週の他ファミリーの使用量と表示価格は OpenRouter の週次ランキング にある。

同じ仮定用量で、クラスはどれだけ開くか

これはログから拾った「平均の一日」ではない。トークンを固定してクラスだけ変えると、カタログはいくら動くか、という問いだけに答える。ある稼働日に入力 800 万トークン、出力 80 万トークン、およそ 10 対 1 と置く。エージェントが文脈を繰り返し送り、実際に書く量はそれより少ない、という置き方だ。この節ではキャッシュ読み取りをゼロとする。

一日じゅうこのクラスに固定 その日 同じ稼働日が 22 日
Fable 5.1 $120 $2,640
Opus 5.5 $48 $1,056
Sonnet 5.5 $24 $528
Haiku 5.5 $1.20 $26.40
Haiku 5 割、Sonnet 4 割、Opus 1 割 $15 $330

検算できる。Opus 5.5 の一日は 8 × $4 + 0.8 × $20 = $48。混合の行は同じ 800 万 / 80 万を分ける。トークンの半分が Haiku で $0.60、4 割が Sonnet で $9.60、1 割が Opus で $4.80、合計 $15。22 はおよそ一か月の稼働日で、割引でもプランでもない。

もう一つ、同じように仮定だと書いておく。その Opus の日で入力の半分がキャッシュ読み取りなら、400 万 × $4 + 400 万 × $0.20 + 出力 $16 = $32.80 であり、$48 ではない。ツール出力が変わればプレフィックスは切れ、次のターンは元の入力単価に戻る。$32.80 は約束ではない。

クレジット購入の 5.5% はこの表の外だ。$48 なら約 $2.64、$330 なら約 $18。終日 Fable と混合のあいだにある $2,310 の差は埋まらない。先にクラスを変え、手数料はそのあとだ。

この表を Pro の月額と比べて勝敗を付けない

$48 はすでに Pro の月額を超える。ただし Pro は無制限の Opus ではない。表の数はカタログ単価に仮定トークンを掛けたものだ。セッションが入力 800 万を送っていなければ、この表はその日を記述していない。

サブスクリプション、直結、OpenRouter は三つのメーター

2026-10-20 時点の Claude 料金ページは、税別で、プランは変わり得ると書いたうえで、次の表示だった。Pro は月払い $20、年払いは月あたり $17(一括 $200)。Max 5x は月 $100、Max 20x は月 $200。Pro と Max はどちらも Claude Code を含み、ウェブ、デスクトップ、スマホの Claude と用量を共有する。ヘルプセンターの制限は、5 時間のセッション上限に週次上限が加わる形だ。Max には Fable の週次上限が別にある。Pro に対する 5 倍と 20 倍は、5 時間セッションごとの倍数として書かれている。

OpenRouter は別のメーターだ。ヘルプセンターは、ANTHROPIC_API_KEY が設定されていると Claude Code は API 課金になり、サブスクリプションに含まれる用量からは引かない、と書いている。OpenRouter に繋ぐときはさらに /logout し、API キーは空のまま ANTHROPIC_AUTH_TOKEN を使う。通ったあとのリクエストは最初の一本から OpenRouter のクレジットを使い、Pro に残っている分は消費しない。

選ぶ基準は、自分がどの壁に当たっているかであり、ゲートウェイが新しいかどうかではない。

  • 用量が Pro または Max の上限の内側に収まるなら、サブスクリプションは天井価格だ。$20 または $100 を払ったあと、その期間の追加セッションは Opus 単価で積み上がらず、制限に当たる。制限で足りるなら、OpenRouter のために従量へ分けなくてよい。
  • 毎週上限に当たり、当たったあと自分でも API クレジットを買うなら、壁が Fable か Opus かを先に見る。サブエージェントと日常の変更を Haiku と Sonnet に移すほうが、Max を一段階上げるより直接なことが多い。上位プランが買うのはサブスクリプション用量の増加で、トークン単価の低下ではない。
  • 一本の鍵に硬い上限が欲しく、リクエストごとにモデル列を見たいなら、OpenRouter の鍵制限と Activity は、サブスクリプションの用量バーが持たないビューだ。そのビューの対価がカタログ単価で、クレジット購入時に 5.5% が乗る。Anthropic Console 直結のトークン単価がカタログと一致するとき、この 5.5% がゲートウェイ自身の差で、引き換えはフェイルオーバーと、全リクエストを一本の鍵で見られることだ。「推論に上乗せなし」はその層の話で、Pro より安いという意味ではない。

Claude Code とエディタ内の助手が同じ製品かどうかは Claude Code と Cursor が比べている。あちらは製品の形、こちらは接続したあとのメーターだ。

個人開発者が先に回す五つのつまみ

第一に、セッションを一日じゅう Fable や Opus に置かない。 四つの変数がそのつまみだ。長い推論は Fable、難しい修正は Opus、通常の変更は Sonnet、検索と短い補完は Haiku。id を固定すれば、別名の値上げが計算済みのクラスを静かに入れ替えない。

第二に、サブエージェントだけ下げる。 公式サンプルを写すとサブエージェントは Opus に付く。親セッションが三つ生むと、枝がすべて Opus なら、本線で見ている返信より枝のトークンのほうが高くなり得る。個人の予算では CLAUDE_CODE_SUBAGENT_MODEL を Haiku にし、そのサブタスク自体が難しい推論のときだけ一時的に上げる。

第三に、/fast は値上げであって節約ではない。 公式は、出力が最大おおよそ 2.5 倍速くなり、対応する Opus の通常単価より高い、と書いている。対象は Opus 4.6、4.7、4.8、Opus 5 だけで、Fable は含まない。OpenRouter 上で Claude Code の /fast が本当に speed: "fast" を付けるには、Claude Code 2.1.96 以降、CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1、そして Opus の変数を anthropic/claude-opus-5 のような具体 id に固定する必要がある。~anthropic/claude-opus-latest に固定したままでは、/fast がオンと表示してもリクエストに speed が付かないことがある。もう一つ、表示より大事な挙動がある。セッションが Fable にあるときに /fast を開いても Fable は速くならない。Claude Code はセッションを設定済みの Opus に切り替え、その後のリクエストは Opus で請求される。速度にプレミアムを払わないなら、このスイッチは入れない。

第四に、その鍵に上限を付ける。 OpenRouter の鍵は個別に天井を付けられる。個人なら少なくとも、Claude Code 用の鍵と実験用の鍵を分け、月の上限は焼いてよい額で書く。Activity のモデル列は、「今日また Fable に流れていないか」を掴む場所だ。公式サンプルリポジトリの statusline スクリプトは、このセッションの費用とキャッシュ割引を足していく。更新のたびに生成記録を取りに行き、長いセッションは少しずつ追いつく。請求書ではない。

第五に、長くなる文脈は入力側の請求だ。 モデル名末尾の [1m] は、Claude Code が仮定するウィンドウを変えるだけで、早すぎる圧縮を避ける。OpenRouter はルーティングの前にこの印を外す。仮定ウィンドウが大きくなれば、送れるプレフィックスも大きくなる。圧縮する、リポジトリ全体を読まない、安定したプレフィックスをキャッシュに乗せられるようにする、これが入力の節約だ。表のキャッシュ読み取りはすでに入力より一桁低いが、ツール出力がプレフィックスを切っていないときだけ効く。

モデル代の隣にマシン代がある。セッションを一晩放置し、コンパイルとシミュレータが同じ Mac のメモリを奪い合っても、その請求は OpenRouter には出ない。メモリの見積もりは Claude Code のサーバーメモリ を見る。二つの請求を分けないと、トークンの超過を「マシンが遅い」と読み違える。

Anthropic 以外のモデルを、既定の節約スイッチにしない

CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 のあとピッカーは出る。公式が書いているのは厳選リストで、カタログ全体ではない。項目の一部は Anthropic 以外へルーティングされる。ドキュメントは Anthropic ファーストパーティをプロバイダ優先度の最上段に置くよう求め、高速モードはそこだけで提供されるとも書いている。

失敗したツール呼び出しは、文脈をもう一周送る。単価が Opus の数十分の一でも、二回やり直せば同じ桁に戻り、変更はまだ終わっていない、ということが起きる。DeepSeek や他のファミリーをコーディングに入れるなら、別の道具として測る。Claude Code の四つの変数への静かな置き換えにはしない。能力差と価格差を一緒に見るなら DeepSeek V4 Flash と Claude Opus がある。

個人開発者の順番

まず、まだサブスクリプションの用量プールにいるかを確認する。いて、制限で足りるなら Pro か Max に留まる。すでに従量なら、四クラスとサブエージェントを先に分け、そのあと鍵に月の上限を付ける。ピッカーの他モデルは最後だ。

よくある質問

Claude Code を OpenRouter に繋ぐとき、公式が保証しているモデルはどれか。 公式ドキュメントは Anthropic ファーストパーティだけ、と書いている。ピッカーの他モデルは出ても、その一文の外だ。

OpenRouter はトークン単価にさらに載せるか。 Claude Code 向けの説明は、推論に上乗せはなく、単価はカタログだとしている。上乗せはクレジット購入時で、5.5%、最低 $0.80。

Pro とトークン従量では、どちらが安いか。 用量から離れた答えはない。Pro(月 $20、または年払いで月あたり $17)か Max($100 / $200)の制限内に収まるなら、サブスクリプションが天井だ。OpenRouter に繋いだあとはクレジットを使い、その含まれる用量は引かない。上の $48 と $15 は仮定トークンのカタログ計算で、あなたの請求書ではない。

/fast は節約になるか。 ならない。高い単価で速い出力を買うもので、対象は一部の Opus だけだ。Fable のセッションで開くと、セッションは Opus 課金に切り替わる。

鍵を ~/.zshrc に書いてよいか。 動くが、平文だ。ドットファイルがリポジトリやクリップボードに入れば鍵は漏れる。OS のキーチェーンから読むほうが堅い。漏れたら OpenRouter の鍵のページで失効させる。プロジェクト設定は settings.local.json にし、コミットしない。

ベース URL を変えたのに Activity にリクエストが出ない。なぜか。 まず /status を見る。認証行が ANTHROPIC_AUTH_TOKEN か、ベース URL が /v1 なしの https://openrouter.ai/api か。古いアカウントログインは /logout で消す。シェルに残った ANTHROPIC_API_KEY は空文字にする。ログアウトだけでは消えない。

ZavCloud Developer Infrastructure

モデルを従量にしたら、マシンをビルドと取り合わせない

長いセッション、Xcode、シミュレータは同じ Mac のメモリを使います。その請求は OpenRouter には出ません。

専有 Mac ノードは月額で、トークンとは別の勘定です。

専有 Mac ノードを構成する
New Arrival M4 プランを見る