For a long time the trick to force a model into JSON was to prefill the assistant turn with an opening brace. That trick is dead on the current Claude models. It returns a 400. If you are still doing it, your code breaks the moment you bump the model string. Here is the modern way to get reliable structured output, and how to pick between the two approaches that replaced prefills.

What broke

The old pattern:

// WRONG on Opus 4.6+, Fable 5: prefilling the last assistant turn now 400s

messages: [