4 entries on this day.
- Model
Fixed: four models failed unless you set reasoning_effort yourself
Calls to
Model list ↗gpt-5.6-terra,gpt-5.6-luna,gpt-5.4-miniandgpt-5.4-nanoreturned 400 — “reasoning_effort does not support ‘minimal’ with this model” — whenever the request leftreasoning_effortunset. Setting it explicitly always worked, so the models themselves were fine; the default we supply was not. That default exists so reasoning cannot silently consume your wholemax_tokens, and it was sendingminimal, a value the newer dotted generations (gpt-5.4, gpt-5.6) renamed tonone. The default is now chosen by generation instead of by model name, so the next derivative is covered before it ships.gpt-5.6-solwas unaffected and keeps itslowdefault; the cheaper, faster models now default tonone. Passingreasoning_effortyourself still overrides, as before. - Platform
Provider errors now keep their `param` and `code`
When an upstream provider rejects a request, we passed its message through but replaced
typeandcodewith our own values and droppedparamentirely — so a 400 told you something was wrong without telling you which field. Provider errors are now returned in OpenAI’s own shape,paramandcodeincluded, withprovider_statusadded alongside so you can still tell our layer from theirs. Nothing about status codes orRetry-Afterchanges. - Model
Image input confirmed on the gpt-5.6 family — and what tool-calling clients need to know
You can pass images to
OpenCode / Cline setup ↗gpt-5.6-sol,gpt-5.6-terraandgpt-5.6-lunathroughPOST /v1/chat/completionsusing the standard OpenAIimage_urlcontent part, verified end to end against production. Two things to know if you drive these from a coding tool such as Cline or OpenCode. First, tool calling and reasoning cannot be combined on this generation, so the gateway sendsreasoning_effort: “none”whenever your request carriestools— you do not need to set it yourself. Second, reasoning tokens come out ofmax_tokens: with the default effort a short image question spent 74 of 89 completion tokens on reasoning, and a request capped at 40 tokens failed outright. Give image requests room, or sendreasoning_effort: “none”. Note thatGET /v1/chat/modelsstill describes capabilities only in prose, so tools that look for a machine-readable field will assume no image support until you enable it in their config. - Platform
Transcription moves to a new backend — more accurate, and it stops rate-limiting you
The default backend for
Japanese STT benchmark →POST /v1/audio/transcriptionsis now OpenAIgpt-4o-mini-transcribe, replacing the previous provider. Two reasons: the old backend returned429under any sustained use — we could not complete twelve retries over fourteen minutes on our own benchmark run — and it placed last in our Japanese STT benchmark at 64.97% CER, because roughly 40% of the body text was dropped at the seams where long audio is split internally. The new default measured 23.40% CER on the same audio, and it costs us slightly less. One behavioural change: the per-request size limit drops from 30 MB to 25 MB, which is the new backend’s own limit; the 30-minute duration limit is unchanged. The previous backend stays available withprovider=sakura, andmodel=whisper-large-v3-turboroutes there too. Prices are unchanged by this switch.