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

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.
- constraint Calling code Must branch on a refusal, a separate answer type, before touching probability, choice or score, claim 3
- decision The guide's routing helper Returns manual_review for a refusal and for any answer whose type is not choice, claim 8
- decision Developers setting cutoffs The guide says to set the confidence cutoffs from your own labelled data, claim 9
- cost Bills at the $0.10 rate Regional processing premiums and long-context multipliers can apply on top of the $0.10 rate, a floor, claim 6
- exposure Code on the Python SDK The Python SDK surface is still beta and may change, claim 11
| Who | How | Kind | Claim |
|---|---|---|---|
| Calling code | Must branch on a refusal, a separate answer type, before touching probability, choice or score | constraint | 3 |
| The guide's routing helper | Returns manual_review for a refusal and for any answer whose type is not choice | decision | 8 |
| Developers setting cutoffs | The guide says to set the confidence cutoffs from your own labelled data | decision | 9 |
| Bills at the $0.10 rate | Regional processing premiums and long-context multipliers can apply on top of the $0.10 rate, a floor | cost | 6 |
| Code on the Python SDK | The Python SDK surface is still beta and may change | exposure | 11 |
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
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [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.
- [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.
- [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.
- [4]
As of mid-October the API is in public beta with gpt-6-luna as the only supported model; OpenAI says it expects general availability 'in the coming weeks', which the guide calls an expectation, not a date.
- [5]
In public beta the API costs $0.10 per million input tokens, with no output, cache-read or cache-write charges.
- [6]
Regional processing premiums and long-context multipliers can apply on top of the $0.10 rate, so the headline number should be treated as a floor.
- [7]
A request sends evidence (input) plus one or more questions, and each answer is returned under the name given to its question, so a single request can ask several independent questions about the same input.
- [8]
In the guide's routing helper, a refusal returns manual_review, any answer whose type is not choice also returns manual_review, and the helper then looks up a cutoff for the winning choice via cutoffs.get(answer.choice) from a dictionary the caller supplies.
- [9]
The guide says to set the confidence cutoffs from your own labelled data.
- [10]
The guide argues that a confident wrong answer costs more than an honest 'I don't know'.
- [11]
The Python SDK surface is still beta and may change.
- [12]
The guide's example of the old failure is a regular expression trying to extract the word 'refund' from the model reply 'I believe this does constitute a refund request.'
- [13]
The guide says the endpoint quietly leaves calibration work to the developer.
- [14]
The guide's description of the choice question type lists option probabilities and a confidence value without defining how the two relate.
- [15]
The guide says its Python call mirrors OpenAI's published guide.
- [16]
At $0.10 per million input tokens, one billion input tokens costs $100.
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.
Sources
1 independent publisher whose own reporting we read for this story.
- dev.toOpenAI Decisions API: A Practical Developer's Guide
1 article · October 14, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.