← News & Changelog

4 entries on this day.

  1. Model

    Fixed: four models failed unless you set reasoning_effort yourself

    Calls to gpt-5.6-terra, gpt-5.6-luna, gpt-5.4-mini and gpt-5.4-nano returned 400 — “reasoning_effort does not support ‘minimal’ with this model” — whenever the request left reasoning_effort unset. 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 whole max_tokens, and it was sending minimal, a value the newer dotted generations (gpt-5.4, gpt-5.6) renamed to none. The default is now chosen by generation instead of by model name, so the next derivative is covered before it ships. gpt-5.6-sol was unaffected and keeps its low default; the cheaper, faster models now default to none. Passing reasoning_effort yourself still overrides, as before.

    Model list ↗
  2. Platform

    Provider errors now keep their `param` and `code`

    When an upstream provider rejects a request, we passed its message through but replaced type and code with our own values and dropped param entirely — so a 400 told you something was wrong without telling you which field. Provider errors are now returned in OpenAI’s own shape, param and code included, with provider_status added alongside so you can still tell our layer from theirs. Nothing about status codes or Retry-After changes.

  3. Model

    Image input confirmed on the gpt-5.6 family — and what tool-calling clients need to know

    You can pass images to gpt-5.6-sol, gpt-5.6-terra and gpt-5.6-luna through POST /v1/chat/completions using the standard OpenAI image_url content 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 sends reasoning_effort: “none” whenever your request carries tools — you do not need to set it yourself. Second, reasoning tokens come out of max_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 send reasoning_effort: “none”. Note that GET /v1/chat/models still 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.

    OpenCode / Cline setup ↗
  4. Platform

    Transcription moves to a new backend — more accurate, and it stops rate-limiting you

    The default backend for POST /v1/audio/transcriptions is now OpenAI gpt-4o-mini-transcribe, replacing the previous provider. Two reasons: the old backend returned 429 under 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 with provider=sakura, and model=whisper-large-v3-turbo routes there too. Prices are unchanged by this switch.

    Japanese STT benchmark →