Claude Opus 4.7 and later reject non-default sampling parameters
Anthropic has deprecated temperature, top_p, and top_k on Claude Opus 4.7 and later; non-default values return an HTTP 400 error.
- Provider
- Anthropic
- Surface
- Claude API
- Change type
- breaking behavior
- Effective
- Announced
- Not specified
- Last verified
What breaks
Shared request builders that always send sampling fields can break immediately when their model ID moves to Claude Opus 4.7 or later.
- A non-default temperature, top_p, or top_k value returns an HTTP 400 error.
- SDK request types can still accept the deprecated fields even though the model rejects their non-default values.
Affected identifiers and fields
Search your code, environment variables, gateway configuration, and stored request templates for these exact values.
claude-opus-4-7claude-opus-4-8claude-opus-5claude-sonnet-5
temperaturetop_ptop_k
Migration target
Omit the sampling fields and use explicit prompting to guide response behavior.
No replacement identifier is required for this change.
What to do
Stop sending temperature, top_p, and top_k for affected models. Express tone, variability, and formatting requirements in the system prompt instead.
Before and after
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
temperature=0.2,
top_p=0.9,
messages=[{"role": "user", "content": "Summarize this report."}],
)response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
system="Be concise and use a consistent factual tone.",
messages=[{"role": "user", "content": "Summarize this report."}],
)Official source receipts
These provider pages support the dates, identifiers, symptoms, and migration direction recorded above.
Anthropic · Official documentation