The knob moved, and the old one is an error
The common read: Temperature is the first thing to reach for when output varies, so pinning it to zero is the standard way to make a model behave.
All three sampling parameters are gone on current models. The reference marks temperature, top_p and top_k deprecated and states the failure mode for each: temperature takes 1.0 for backwards compatibility and rejects everything else with a 400, top_k rejects any value at all, top_p accepts 0.99 and above. There is no migration period in the request; the code that worked last quarter returns an error this quarter.
What replaced it is effort, and it is a different kind of control. The docs describe it as trading response thoroughness against token efficiency with a single model, say the default is high, and say setting high explicitly is identical to omitting it. The important half is the scope: it affects all tokens in the response, text, tool calls and thinking, so lower effort means fewer tool calls, not merely shorter answers. It is an agentic-behaviour dial wearing a reasoning-dial name.
That arrives as a total outage on a deploy that changed one string, filed against the deploy, by a team whose diff was a model id. Read the parameter list before you read the prompt. The output you were tuning with temperature is now tuned with effort, the boilerplate you have been copying since 2024 is now the thing breaking the request, and neither fact announces itself anywhere except in a 400.
