Skip to content

Build Not yet confirmed elsewhere1 publisher 2 min read Published

OpenAI's Decisions API beta returns a probability, a choice or a score instead of prose

OpenAI's Decisions API beta answers each question with a probability, a choice or a score, billed at $0.10 per million input tokens. The format ends regex parsing, but a dev.to guide says the confidence cutoffs are still the developer's to set.

The Engineer · Build desk

How we use AI Send a correction

Illustration accompanying OpenAI's Decisions API beta returns a probability, a choice or a score instead of prose
Generated illustration
Callers handle refusals and set their own cutoffs How the Decisions API beta reaches developers' code, confidence cutoffs and bills, according to the dev.to developer guide.

Calling code must branch first on a refusal, a separate answer type. The guide's helper sends refusals and non-choice answers to manual_review. Cutoffs come from your own labelled data. Premiums can apply on top of the $0.10 rate. The Python SDK may change.

Callers handle refusals and set their own cutoffs
WhoHowKindClaim
Calling codeMust branch on a refusal, a separate answer type, before touching probability, choice or scoreconstraint3
The guide's routing helperReturns manual_review for a refusal and for any answer whose type is not choicedecision8
Developers setting cutoffsThe guide says to set the confidence cutoffs from your own labelled datadecision9
Bills at the $0.10 rateRegional processing premiums and long-context multipliers can apply on top of the $0.10 rate, a floorcost6
Code on the Python SDKThe Python SDK surface is still beta and may changeexposure11

What happened

  • A request carries the evidence plus one or more questions, and each answer comes back under the name given to its question.
  • A choice question returns the winning option, every option's probability and a confidence value, and a score question returns a probability-weighted average across the rubric levels.
  • A refusal arrives as its own answer type, not as a low score or a fallback category, and callers must branch on it first.

Why it matters

  • constraint Every caller needs a third path for refusals, with somewhere to send them, because a refusal is neither a label nor a low score. In the guide's helper that place is a manual-review queue.
  • decision Teams must build a labelled sample and fit per-choice cutoffs before they trust a confidence value in production.
  • cost With output uncharged, spend tracks how much evidence is sent: a billion input tokens is $100 at the floor. Long documents and regional processing are where the bill rises.
  • exposure Cutoffs are fitted on the only beta model, behind an SDK that may change and a general availability that is still undated, so they may need refitting when either moves.

The branch order in the guide's routing helper is the part worth copying. A refusal returns `manual_review` before any other field is read, and so does any answer whose type is not choice [8]. Only then does the helper look up a cutoff for the winning choice in a dictionary the caller supplies [8].

The order exists because a refusal is its own answer type, and the guide says code must branch on it before touching probability, choice or score [3].

The typed output removes the parsing step. The guide opens with the old failure: a regular expression trying to pull "refund" out of "I believe this does constitute a refund request" [12]. Typed output does not drift in format the way prose does. It does leave open what a confidence of 0.9 means on your traffic. The guide's description of the choice type lists option probabilities and a confidence value without saying how the two relate [14]. The guide also describes the calibration work as something the endpoint quietly leaves to you [13].

Its instruction is to set the cutoffs from your own labelled data [9]. In practice that is a labelled sample for each choice, an error rate measured at each threshold, and a manual-review queue sized for whatever falls under it. The guide's reasoning is that a confident wrong answer costs more than an honest "I don't know" [10].

Billing is on input only: $0.10 per million input tokens, with no output, cache-read or cache-write charges [5]. A billion input tokens comes to $100 [16]. The guide treats that as a floor, because regional processing premiums and long-context multipliers can apply [6]. The figure transfers to a workload whose evidence stays short and whose processing region carries no premium.

Only gpt-6-luna is supported in the beta [4]. According to the guide, OpenAI says it expects general availability "in the coming weeks", and the guide notes that is an expectation, not a date [4]. The Python SDK surface is also beta and may change [11]. The guide says its Python call mirrors OpenAI's published guide [15].

In our view, cutoffs fitted on gpt-6-luna should be treated as specific to that model and refit if general availability changes the model list.

What to watch

  • A general-availability date, and whether models beyond gpt-6-luna are added, which would force cutoffs to be refit.
  • OpenAI's own reference on how the confidence value is derived from the option probabilities.
  • Changes to the client.decisions.create call before general availability, since the guide calls the SDK surface beta.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence40
Adoption
Insufficient
Hype gap−10
Incentives
Insufficient
Confidence50
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    On 6 October OpenAI launched a public beta of the Decisions API, an endpoint at POST /v1/decisions that returns typed verdicts (a probability, a choice or a score) instead of prose.

    Reported Supported Source: dev.to developer guide to the OpenAI Decisions APIView cited source
  2. [2]

    A choice question is answered with the winning choice, the option probabilities and a confidence value; a score question is answered with a probability-weighted average across the ordered rubric levels, plus a confidence.

    Reported Supported Source: dev.to developer guideView cited source
  3. [3]

    A refusal is a separate answer type, not a low score and not a fallback category, and code must branch on it before touching probability, choice or score.

    Reported Supported Source: dev.to developer guideView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 14, 2026

    OpenAI Decisions API: A Practical Developer's Guide

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories