Claude Opus vs Sonnet: what breaks when you swap the model string
!Claude{width=84 align=inline-left} !Anthropic{width=84 align=inline-left}
Every Claude Opus vs Sonnet comparison I can find scores the models on capability, speed and price per million tokens. As of 17 September 2026, not one of the pages ranking for that question mentions the thing that actually cost me a Tuesday: the model string is part of your request contract, not a setting inside it.
Change it and the same request body can mean something different. Thinking can switch itself on. Your answer can move out of content[0]. A max_tokens you never touched can start truncating. Your token count can rise by roughly 30 percent while the per-token price goes down.
answer = response.content[0].text