FableGuide › 400 Errors
Most Fable 5 400 invalid_request_error responses come from four removed fields: sampling parameters (temperature/top_p/top_k), thinking budgets, assistant prefills, and an explicit thinking: disabled. To disable thinking you omit the thinking field — you do not send disabled.
- Why does
temperaturereturn a 400? - The sampling parameters
temperature,top_p, andtop_kwere removed on Fable 5 — sending any of them returns a 400. Fix: delete the parameter and steer the model with prompting instead. (Same on Opus 4.8 and 4.7.) - Why does the thinking
budget_tokensreturn a 400? - Thinking budgets were removed.
thinking: {type: "enabled", budget_tokens: N}returns a 400. Thinking is always on and adaptive. Fix: omit thethinkingfield (or sendthinking: {type: "adaptive"}) and control depth withoutput_config.effort—lowthroughmax. - How do I disable thinking?
- You cannot — thinking is always on. To run without configuring it, OMIT the
thinkingfield entirely. Sendingthinking: {type: "disabled"}returns a 400 on Fable 5 (that value is accepted on Opus 4.8 and 4.7, but not here). Fix: leave the field out. - Why do assistant prefills return a 400?
- Last-assistant-turn prefills are not supported and return a 400. Fix: use structured outputs via
output_config.formatto force a response shape, or move the instruction into the system prompt.
Two more 400s that are not request-field problems: an organization set to zero data retention (Fable 5 requires 30-day retention) returns a 400 on every request, and a date-suffixed model ID like claude-fable-5-20260609 returns a 404 — the ID is the bare claude-fable-5. Copy-paste migration recipes are in the Cookbook.
Moral: Fable 5 took away the dials and left you prompting. If a field 400s, the fix is almost always to delete it — not to find the new spelling.