「1たす1は?」に43円かかった。Claude Code の API 料金を実測したら大半が固定費

「1たす1は?」と聞いただけで43円。大半が固定費だった(Claude Code API 実測)
mausu110

結論:claude -p は「何を聞くか」と無関係に、1回40円前後かかります

claude -p "1たす1は?" と聞いて、返ってきた答えは 2 の一文字。かかった金額は $0.286827(約43円) でした。入力2トークン、出力3トークン。単価表どおりなら $0.0001 にも届かないはずの内容です。

犯人は cache_creation_input_tokens: 28578CLI 自身のシステムプロンプトが、こちらの質問と無関係に毎回キャッシュへ書き込まれていました。

私はブログ記事の生成を Claude Code の headless モード(claude -p)で自動化しているのですが、サブスクの利用枠が1時間ももたずに尽きるので、「記事生成だけ API の従量課金へ逃がせないか」を調べていました。その入口で、料金の見積もり方そのものを間違えていたことに気づいた、という話です。

CLI をスクリプトから何十回も叩いている人、これから叩こうとしている人に向けて書いています。

今回使ったもの

  • Claude Code(claude -p / headless モード) — 対話ではなくスクリプトから1回だけ呼んで、結果を JSON で受け取る使い方。ブログ記事の下書き生成を自動化するのに使っています。
  • Claude Opus 5 — 今回の実測に使ったモデル。記事の品質が成果物に直結するので、ここは安いモデルに落としていません。
  • --output-format json — 今回の主役。これを付けると total_cost_usdusage の内訳が返ってきます。この記事の内容は、全部このオプションのおかげで分かったことです。
  • --disallowed-toolsclaude -p はエージェントなので、放っておくとファイルを読んだり書いたりしながら何ターンも動きます。今回は「聞いて答えるだけ」に条件をそろえたかったので、使えるツールを全部止めました。固定費は呼んだ回数ぶん積み上がるので、余計に動かせない状態を作っておくこと自体が効きます。
  • 支出の歯止め(前払いクレジット・自動リロード OFF・月間の支出上限) — いずれも管理画面の設定だけで、追加費用はかかりません。後半に書く「気をつける点5つ」のうち2つがこれです。使い切ったら止まる、という状態を先に作っておくためのもので、実測を始める前に入れておくのが順番として正しいと思っています。

事前の見積もりは「金額は当たって、理由は全部外れて」いました

まず公式の単価表から概算しました。Claude Opus 5 は 入力 $5.00 / 出力 $25.00(100万トークンあたり)。手元の実データはこうです。

  • プロンプト(テンプレート+作業ログ): 8,504 文字
  • 生成される記事本文: 7,300〜8,900 文字

日本語はおおむね1文字1トークン前後なので、入力1万・出力1万として $0.05 + $0.25 = $0.30 くらい。思考トークンがどれだけ出るか読めなかったので、そこを上振れ要因と見て 60〜170円/記事 と幅を持たせました。

算数としては合っています。単価表も正しい。それでも外しました。

本番を流す前に「1たす1は?」で経路を確認したら、そこが山場でした

API キーが有効か、課金が想定どおりの経路で走るかを先に確かめたかったので、最小のリクエストを1本投げました。記事1本は100秒以上かかるので、失敗すると時間もお金も無駄になります。

claude -p "1たす1は? 数字だけを答えてください。" \
  --model claude-opus-5 \
  --output-format json \
  --disallowed-tools Bash Read Write Edit Glob Grep WebFetch WebSearch Task

返ってきた JSON(抜粋)がこれです。

{
  "result": "2",
  "total_cost_usd": 0.286827,
  "duration_ms": 1607,
  "usage": {
    "input_tokens": 2,
    "cache_creation_input_tokens": 28578,
    "cache_read_input_tokens": 0,
    "output_tokens": 3,
    "output_tokens_details": { "thinking_tokens": 0 }
  }
}

目を疑いました。input_tokens: 2output_tokens: 3、答えは 2。それで $0.287 です。

内訳を見て納得しました。cache_creation_input_tokens28,578。これは私が書いた10文字ちょっとの質問ではなく、CLI が自分で積んでいるシステムプロンプトです。しかもキャッシュへの書き込み単価は通常の入力より高く、1時間キャッシュだと入力の2倍(Opus 5 なら $10 / 100万トークン)です。

28,578 × $10/1M ≒ $0.286

報告された金額とほぼ一致します。つまり claude -p を1回呼ぶという行為そのものに、40円前後の固定費が乗っている。何を聞いても、聞かなくても、乗ります。

捨てるつもりで投げた「1たす1は?」が、この検証で一番の収穫になりました。

記事1本の実測:総額の58%が、記事の中身と無関係でした

固定費の存在が分かったところで、本命の記事生成を1回だけ走らせました(WordPress への投稿は切って、生成だけ)。

所要            : 113.8 秒
本文            : 7,374 文字
入力トークン     : 2
キャッシュ作成   : 23,664   ← CLI 自身のシステムプロンプト
キャッシュ読み   : 11,952
出力トークン     : 6,160(うち思考 0)

CLI が報告した総額: $0.4045(約 61 円)

単価から内訳を起こすとこうなります。

内訳金額割合
キャッシュ作成(CLI の固定費)$0.236658%
出力$0.154038%
キャッシュ読み$0.00601%
入力$0.00000%

総額61円は、事前見積もりの 60〜170円 の中にきれいに収まっています。だから「当たった」と言うこともできます。でも危ういです。

私が上振れ要因だと身構えていた思考トークンは、0 でした。内訳を見ずに総額だけ確認していたら、「思考トークンが安く済んだんだな」と誤解したまま終わっていたはずです。そして次に別のツールで見積もるとき、また同じ間違いをしていました。

「バッチで半額」より先に「CLI をやめる」が効きます

固定費の正体が CLI のシステムプロンプトだと分かったので、CLI を経由しない場合まで含めて計算しました。

方式記事1本月10本
claude -p(現状)$0.40約610円
API を直接呼ぶ約 $0.18約280円
API+バッチ処理(50%引き)約 $0.09約140円

Message Batches API は公式ドキュメント「All usage is charged at 50% of the standard API prices」 と明記されていて、Opus 5 なら入力 $2.50 / 出力 $12.50 になります。

ただし バッチは claude CLI からは使えません。 /v1/messages/batches を直接叩く必要があります。そして直接叩いた時点で、58%の固定費のほうが先に消えています。

順番としては、まず CLI をやめる($0.40 → $0.18)。半額はその後に乗る話で、単独では選べません。 ここを取り違えると「バッチにすれば半額だ」と思って、実際には一番大きい削りしろを見落とします。

バッチの待ち時間は、公式によればほとんどが1時間以内。24時間で打ち切られ、間に合わなかったぶんは課金されません。記事生成のように後段に人のレビューがある処理なら、待ち時間は実質デメリットになりません。

なお、ここに出した単価・割引率は Anthropic の公式料金ページプロンプトキャッシュMessage Batches API の各ドキュメントに書かれている値です(2026年8月28日に確認)。モデルや時期で変わるので、金額の判断をする前に必ずご自身で公式の記載を確認してください。

これから試す人へ:つまずきどころと向き・不向き

一番の反省は、「トークン数 × 単価」で見積もる癖そのものでした。単価表を何時間眺めても、ツールが勝手に積む固定費は出てきません。載っていないものは、実測しないと分かりません。

そのうえで、次に同じことをやるなら気をつける点を5つ。

  1. --output-format json を付けて total_cost_usdusage を読む。 推定しない。総額だけでなく内訳まで見る
  2. いきなり本番を流さない。 「1たす1は?」で経路を確認する。今回はその確認そのものが最大の発見でした
  3. 自動リロードは切る。 「残高が減ったら自動で買い足す」は上限ではなく、上限を自動で外す仕組みです。前払いクレジット+自動リロード OFF なら、使い切った時点で止まります
  4. 月間の支出上限も別途かける。 クレジット残高とは独立した歯止めになります
  5. 止まったときに気づける経路を先に作る。 上限で止まること自体は正しい動作ですが、黙って止まると「記事が出てこない」ことでしか気づけません

こういう人には効きます/今のままでいい人

CLI をやめる価値がある今のままでいい
claude -p をスクリプトから何十回も自動で叩いている対話で使っていて、1日に数回起動する程度
1回あたりのプロンプトが小さい(固定費の比率が跳ね上がる)1回で長い文脈を扱う(固定費が相対的に埋もれる)
後段に人のレビューがあり、即答が要らないその場で結果を見て次の判断をしたい
従量課金で、金額を自分で管理したいサブスクの枠内で足りている

固定費は呼ぶ回数に比例します。呼び出し1回あたりの仕事が小さいほど損をする構造なので、「短い問い合わせを大量に投げる」使い方が一番相性が悪いです。

まとめ

月10本で610円。正直、金額そのものはどちらでもいい額でした。

収穫は金額ではなく、見積もりの立て方が間違っていたと気づけたことです。単価表は正しく、私の計算も合っていて、総額もレンジに収まっていた。それでも中身は違っていました。合っているように見える見積もりが一番たちが悪い、という当たり前の話を、43円で教えてもらった格好です。

次は /v1/messages を直接叩く経路に載せ替えて、実測でどこまで下がるかをまた total_cost_usd で確かめてみます。ここでも推定はしません。

ABOUT ME
やまさん
やまさん
へっぽこITエンジニア
ねずみさんを愛するインフラエンジニア。 とにかく最新が好きで、ココロオドル体験を日夜求め続けています! 直近だとドローンにハートを撃ち抜かれてます。 空を自由に飛びたいな♪
記事URLをコピーしました