Claude API で次のエラーが出たら、原因は、Claude 4.7 以降のモデルに temperature(または top_p・top_k)の既定以外の値を送っていることです。直し方は、この3つを要求から消すことです。2026年10月に公開された新しい API バージョン 2026-10-21 では、どのモデルでも、値に関係なく送れば400エラーになります。

400 invalid_request_error
`temperature` is deprecated for this model.

Claude 4.7 以降のモデルに既定以外の値を送ったときの応答の例(利用者の報告より)。新しい API バージョンで返るエラー文が同じかは、公式のドキュメントに書かれていません。

直し方:3つのパラメータを消す

400 エラーになる

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    temperature=0.2,
    messages=[...],
)

直したあと

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[...],
)

答えの形式や調子を変えたいときは、パラメータではなくプロンプトで指示します(Anthropic の移行ガイドの推奨)。

この記事では、Anthropic の公式ドキュメント(2026年10月26日確認)をもとに、このエラーが出る2つの場面、SDK を上げたときに起きること、新しい API バージョンで一緒に直す変更、近いエラー anthropic-version: header is required の直し方を説明します。API バージョンは 2023-06-01(これまでのもの)と 2026-10-21(新しいもの)の色で区別します。

1. エラーが出る2つの場面

Claude API は、要求のヘッダー anthropic-version で API バージョンを選びます。エラーになるかどうかは、使うモデルとAPI バージョンの組み合わせで決まります。

モデル2023-06-012026-10-21
Claude 4.7 以降のモデルOpus 4.7 と、それより後に出たモデル(例:Opus 4.7・Opus 5・Opus 5.5・Sonnet 5.5・Haiku 5.5・Fable 5.1)既定以外の値で400既定の値を送るか、送らなければ通る送れば400既定の値でも400
それより前のモデルClaude Sonnet 4.6 など使える値を下げて答えのばらつきを減らす使い方ができる送れば400既定の値でも400

出典:Anthropic「Migrating to API version 2026-10-21」(Claude 4.7 以降は既定の値しか受け付けない、Sonnet 4.6 などは別の値も受け付ける、2026-10-21 ではどのモデルでも既定の値でも400)、各モデルの移行ガイド(Opus 5.5・Sonnet 5.5・Haiku 5.5・Fable 5.1。Fable 5.1 のガイドは、Opus 5 と同じサンプリングの制限があると書く)。2026年10月26日確認。

表で「400」と書いたセルは、次の2つの場面にあたります。

  1. 場面1:Claude 4.7 以降のモデルに、2023-06-01 で既定以外の値を送った(表の1行目・2023-06-01 の列)
  2. 場面2:2026-10-21 で3つのどれかを送った(モデルも値も問わない・表の右の列)

冒頭のエラー文 `temperature` is deprecated for this model. は、場面1で、利用者が GitHub に報告した API の応答に出ているものです(報告の例)。Anthropic の公式ドキュメントはエラー文そのものを載せておらず、「400エラーになる」と書いています。

つまり、どちらの場面でも、3つのパラメータを消せば直ります。古いモデルで値を変えていた人だけは、消すと答えのばらつきが変わる点に注意します(2章)。

2. 直し方と、毎回同じ答えにしたいとき

  1. 要求から3つを消すtemperature・top_p・top_k を、Messages API の要求からも、Message Batches の各要求からも消します。設定ファイルやラッパーの関数で既定の値を入れている場合も、そこで消します。
  2. 消したあとの動き3つを送らないと、既定の値(temperature は 1.0)で次のトークンを選びます。top_p・top_k は既定の値が数字で示されていないので、送らないのが確実です。これは、これまでの API バージョンで3つを送らなかったときと同じです。Claude 4.7 以降のモデルは、もともと既定の値しか受け付けないので、動きは変わりません。
  3. 毎回同じ答えにしたいとき代わりになる設定はありません。Anthropic の移行ガイドは、モデルの振る舞いはプロンプトで導くよう勧めています。また、temperature = 0 にしても、これまでのモデルでも同じ答えになる保証はなかったと書いています。答えの形式をそろえたいだけなら、JSON の形を決めて返させる構造化出力(Structured outputs)が使えます。

例外は、Claude Sonnet 4.6 のように別の値を受け付けるモデルで、値を下げて答えのばらつきを減らしていた場合です。新しい API バージョンでは消すしかなく、その効果はなくなります。Anthropic の案内は、その要求だけ 2023-06-01 のまま残すか、パラメータを送るのをやめるかのどちらかです。2023-06-01 のまま残すには、SDK を今のメジャーバージョン(Python なら 1.x)に留めるか、HTTP で直接呼ぶならヘッダーを anthropic-version: 2023-06-01 のままにします。新しい SDK で要求ごとに古い API バージョンを選ぶ方法は、移行ガイドに書かれていません。

TypeScript と HTTP での直し方

// TypeScript(@anthropic-ai/sdk):temperature を消す
const msg = await client.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello, Claude" }],
});
# HTTP(JSON の本文):temperature・top_p・top_k の行を入れない
{
  "model": "claude-sonnet-5-5",
  "max_tokens": 1024,
  "messages": [{"role": "user", "content": "Hello, Claude"}]
}

3. 自分のコードのどこで送っているかを探す

エラーの場所が分からないときは、3つのパラメータの名前でコードを探します。自分で書いていなくても、設定ファイル・共通の関数・環境変数で既定の値を入れていることがよくあります。

# macOS・Linux・WSL:プロジェクトの中を探す(大文字・小文字を区別しない)
grep -rniE "temperature|top_p|top_k" --exclude-dir={node_modules,.venv,venv,.git,dist} \
  --include="*.py" --include="*.ts" --include="*.js" --include="*.json" \
  --include="*.yaml" --include="*.yml" --include="*.toml" --include=".env*" .

# Windows(PowerShell)
Get-ChildItem -Recurse -Include *.py,*.ts,*.js,*.json,*.yaml,*.yml,*.toml,.env* |
  Where-Object { $_.FullName -notmatch "node_modules|\\.?venv|\\.git\\|\\dist\\" } |
  Select-String -Pattern "temperature|top_p|top_k"
見つかった場所直し方
API を呼ぶ行引数から3つを消す
共通の関数・ラッパー既定の値として入れている所を消す(呼ぶ側が値を渡していないかも確かめる)
設定ファイル・環境変数項目を消すか、値を空にしたときに要求へ入らないかを確かめる
Message Batches の要求各要求の params からも消す(バッチの中の1件ずつが400になる)
トークンを数える要求/v1/messages/count_tokens に送る本文からも消す
別の会社のライブラリ経由そのライブラリが Claude に temperature を送る設定を持っていないか、ドキュメントで確かめる

新しい API バージョンの決まりは、Messages API の要求・トークンを数える要求・Message Batches の各要求に当てはまります(Anthropic の移行ガイド)。

4. SDK を上げたときに起きること

公式の SDK は、そのメジャーバージョンが出たときの API バージョンを自動で送ります。下の表の SDK のバージョンから 2026-10-21 を送り、削除された3つのパラメータは SDK の型からも消えています(Anthropic の移行ガイド)。そのため SDK を上げると、API の400より先に、型チェックや「関数に無い引数」のエラーとして表に出ることがあります。型を通さずに本文へ足している場合(追加の本文を渡す機能や、HTTP で直接送る場合)は、API が400を返します。どちらも直し方は同じで、3つを消します。

言語・道具2026-10-21 を送る最初のバージョン
Pythonanthropic 2.0.0
TypeScript@anthropic-ai/sdk 1.0.0Bedrock・Vertex・Foundry などの関連パッケージも v1 に上げる
Javacom.anthropic:anthropic-java 3.0.0
Goanthropic-sdk-go 2.0.0モジュールのパスは github.com/anthropics/anthropic-sdk-go/v2
C#Anthropic 13.0.0
Rubyanthropic 2.0.0
PHPanthropic-ai/sdk 1.0.0
CLIant 2.0.0

出典:Anthropic「Migrating to API version 2026-10-21」の Upgrade steps。SDK を使わずに呼ぶ場合は、ヘッダー anthropic-version に 2026-10-21 を書くと新しい API バージョンになります。

新しい API バージョンは、Claude API、Claude Platform on AWS、Google Cloud の Claude(Anthropic の管理と Google の管理の両方)、Microsoft Foundry で使えます。Amazon Bedrock だけは、使えるのが Claude 4.7 以降のモデルに限られ、古いモデルを呼んでいるなら今の SDK のバージョン(または今の anthropic-version)のままにしておくよう、Anthropic は案内しています(Versions)。

SDK を上げるときの順番

  1. 新しい API バージョンに切り替える上の表のバージョンに SDK を上げる。HTTP で直接呼ぶなら anthropic-version: 2026-10-21 にする。
  2. 破壊的な変更を直す3つのパラメータを消し、5章の表のうち当てはまるものを直す。新しい SDK で変わった書き方(型の名前など)も移行ガイドの「SDK and CLI changes」で確かめる。
  3. 新しい API バージョンで試してから出す本番に出す前に、新しい API バージョンで要求が通ることを試す。SDK の更新と直しは、同じリリースで出す。

出典:Anthropic「Migrating to API version 2026-10-21」の Upgrade steps(Switch to 2026-10-21 → Update your code for the breaking changes → Test against 2026-10-21)。

5. 新しい API バージョンで一緒に直すもの

新しい API バージョンに上げるなら、temperature のほかにも次の変更があります(API キーの行だけは SDK と CLI の変更で、HTTP で直接呼ぶなら関係ありません)。当てはまるものだけ直します(同じ移行ガイドの Breaking changes)。

変わること何が変わるか直し方
assistant の発言の中の document400 エラー文書は user の発言で送る
user の発言の text の citations空でない citations を送ると400その citations を消す(assistant の発言の citations は今までどおり)
API キーの送り方SDK と CLI の変更(API はどちらのヘッダーも受け付ける)X-Api-Key ではなく Authorization: Bearer で送るキーを読むプロキシやゲートウェイ、ログの絞り込みを Authorization に合わせる(API はどちらのヘッダーも受け付ける)
Admin API の項目名例:API キーの workspace_id がなくなるscope.workspace_id などの新しい名前を読む

次のエラーは、要求に API バージョンのヘッダーが無いときに出ます。

400 invalid_request_error
anthropic-version: header is required

公式の SDK は API バージョンを自動で送るので、出るのは主に SDK を使わずに HTTP で直接呼んでいる場合です。たとえば、OpenAI 向けのクライアントやツールに Claude の API の URL を入れて、モデルの一覧(/v1/models)を読もうとしたときに起きる、という報告が GitHub にあります(例1・例2)。

直し方は、ヘッダーを付けることです。新しく書くなら 2026-10-21、今のコードを変えずに通したいなら 2023-06-01 を指定します。

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -H "content-type: application/json" \
  -d '{"model": "claude-opus-5-5", "max_tokens": 1024,
       "messages": [{"role": "user", "content": "Hello, Claude"}]}'

出典:Anthropic「Versions」(要求には anthropic-version のヘッダーが必須、SDK なら自動で送る)。エラー文は利用者が GitHub に報告した API の応答から。API キーは x-api-key と Authorization: Bearer のどちらのヘッダーでも受け付けられる(移行ガイド)。

使っているツールでヘッダーを足せないときは、そのツールが Claude の API に対応しているか(OpenAI の形式のつもりで呼んでいないか)を確かめます。

まとめ

  • `temperature` is deprecated for this model. は、Claude 4.7 以降のモデルに temperature・top_p・top_k の既定以外の値を送ったときの400エラーで、3つを消せば直る
  • 新しい API バージョン 2026-10-21 では、同じ3つを送ると値やモデルに関係なく400になる(エラー文は公式に未掲載)
  • Python の anthropic 2.0.0 などの新しい SDK は 2026-10-21 を自動で送り、3つの引数も型から消えている(3つを渡しているコードは、SDK を上げると引数のエラーか400になる)
  • 毎回同じ答えにする設定は無く、プロンプトで指示する(答えの形式は構造化出力でそろえられる)
  • anthropic-version: header is required は API バージョンのヘッダーの付け忘れで、SDK を使わない呼び方で起きる

FAQ

Q. temperature を 1.0(既定の値)にして送ってもだめですか?

新しい API バージョン 2026-10-21 では、既定の値でも送れば400になります。これまでの 2023-06-01 で Claude 4.7 以降のモデルを呼ぶなら、既定の値は通りますが、送る意味は無いので消すのが確実です。

Q. temperature を 0 にして毎回同じ答えにしていました。代わりは?

代わりの設定はありません。Anthropic の移行ガイドは、temperature = 0 でも同じ答えになる保証はもともと無かったと書いています。答えの形式(JSON の項目など)をそろえたいなら構造化出力を使い、言い回しや判断の基準はプロンプトで細かく指定します。

Q. 新しい API バージョンに上げずに、今のまま使い続けられますか?

使えます。Anthropic は API バージョンごとに既存の入力と出力の項目を保つとしていて、2023-06-01 もこれまでどおり指定できます。2023-06-01 の提供を終える予定は、Versions のページに書かれていません(Versions・2026年10月26日確認)。ただし、Claude 4.7 以降のモデルでは、2023-06-01 のままでも既定以外の temperature などは400になります。また Anthropic はできるだけ新しい API バージョンを使うよう勧めており、SDK を上げると自動で新しいものになります。

Q. Claude 4.7 以降のモデルに替えたらエラーになりました

Claude 4.7 以降のモデルに替えると、API バージョンはそのままでも既定以外の temperature などが400になります。モデルを替えるときに直すほかの点(思考の指定・プリフィルなど)は、「Claude Opus 4.7 移行ガイド」で説明しています。