A 500-token routing decision costs $0.00005 at the standard rate. That makes OpenAI's Decisions API cheap enough for high-volume gates, but not automatically safe enough for high-impact actions: its probabilities still need calibration on your own labeled data.
The bill starts at fractions of a cent, not a per-call fee
OpenAI Decisions API pricing is $0.10 per 1 million uncached input tokens, while output tokens are free. OpenAI now describes the endpoint as generally available, powered only by gpt-6-luna, and available at POST /v1/decisions in the current Decisions guide.
There is no separate per-request fee in the published pricing. The basic formula is:
monthly cost = requests × average billed input tokens ÷ 1,000,000 × $0.10
Cost examples at 10K, 100K, and 1M requests
For a workload averaging 500 input tokens per request:
| Monthly requests | Input tokens | Standard input cost | Cost per request |
|---|---|---|---|
| 10,000 | 5 million | $0.50 | $0.00005 |
| 100,000 | 50 million | $5.00 | $0.00005 |
| 1,000,000 | 500 million | $50.00 | $0.00005 |
Predicate, choice, and score outputs add no output-token charge. Equivalent Responses JSON is generated and billed at the model's output rate; the OpenAI price table lists standard gpt-6-luna output at $0.50 per million tokens.
Cache reads, writes, regional processing, and long context
The $0.10 headline is not the only possible input rate. The current guide says prompt-cache reads receive discounted pricing, while cache writes use the standard gpt-6-luna cache-write rates. OpenAI's rate card lists standard Luna cached input at $0.01 per million tokens, a 30-minute cache write at $0.125, and a 12-hour write at $0.25 per million tokens.
Caching begins only when the reusable shared-input prefix contains at least 1,024 tokens. The questions do not count toward that minimum, and question-specific images sit outside the reusable prefix. Cache reads and writes are already included in usage.input_tokens; adding them again would double-count usage, according to the prompt-caching section.
Regional or data-residency endpoints can add a 10% uplift for eligible newer models. The official pricing and availability section also warns that long-context multipliers may apply. Check the live rate card before committing a compliance workload because both modifiers can change the simple $0.10 calculation.
The endpoint is narrow by design
The Decisions API turns evidence into one of three typed results. It is a classifier and scorer, not a cheaper general-purpose response endpoint.
| Question type | Returns | Good fit | Poor fit |
|---|---|---|---|
predicate | Probability from 0 to 1 | Fraud gate, visible-damage check, relevance filter | A written reason for the decision |
choice | One supplied option, option probabilities, confidence | Queue routing, document category, next action | An unknown or dynamically generated category |
score | Weighted score, level probabilities, confidence | Severity, urgency, lead quality | Extracting names, dates, or arbitrary fields |
A score accepts 2 to 10 ordered levels. A request can carry 1 to 400 questions, but only independent questions should share a request. If question two depends on answer one, OpenAI says to make a second request after receiving the first answer.
Multiple independent questions can reuse the same evidence. For example, one support ticket can be checked for refund intent, routed to a department, and scored for urgency without resending the ticket three times. The usage guide says num_model_requests counts the request, not its questions.
What changed after public beta
The current What's new list replaces several launch-era limits:
- The question cap increased from 200 to 400.
- Prompt caching is available for shared input.
- Inputs can include native JSON, conversation history, function-call records, and matching tool outputs.
- Images can use public HTTP/HTTPS URLs or inline base64;
file_id, audio, files, and item references remain unsupported. - Organization reporting is available at
GET /v1/organization/usage/decisions; it requires an admin key withapi.usage.readand can group results by project, API key, or model.
Pick Decisions or Responses by output contract
Use the Decisions API when application code already knows the allowed answer shape. Use the Responses API when the model must compose information, and use function calling when the model must select a tool and supply its arguments.
| Requirement | Best default | Reason |
|---|---|---|
| Yes/no gate with a probability | Decisions | Native predicate output; no generated answer charge |
| Select one known route | Decisions | Returns each option's probability plus confidence |
| Rank against an ordered rubric | Decisions | Native weighted score and level distribution |
| Return arbitrary JSON fields | Responses with Structured Outputs | Decisions has no custom JSON output schema |
| Explain why an item was rejected | Responses | Decisions does not generate prose explanations |
| Choose a tool and create arguments | Function calling | Decisions selects an answer but does not produce tool arguments |
At 100,000 calls with 400 input tokens each, Decisions input costs $4. If an equivalent Responses call emits 30 output tokens each, Luna's published rates produce $4 of input plus $1.50 of output, or $5.50 before any reasoning tokens. The endpoint choice still depends on whether the application needs generated fields or explanations.
Both endpoints now receive discounted cache reads. Measure cache-hit tokens from the response usage object instead of estimating them from prompt length.
Cheap mistakes are still expensive
A low token bill does not reduce the cost of a false approval, bad moderation action, or incorrect payment route. OpenAI's answer-interpretation guidance recommends setting thresholds with labeled examples and weighting the different costs of false positives and false negatives.
That concern also appears in developer discussion. In a production-oriented Reddit thread about decision APIs, u/Ctbhatia wrote:
“a gate that says skip beats one that guesses wrong.” Source: u/Ctbhatia on r/LLMDevs
The API's confidence and probabilities are signals, not a published calibration guarantee. A result with 0.90 confidence should not be assumed to be correct 90% of the time until that relationship is measured on representative data.
OpenAI says Decisions is about 10 times faster than Responses in the official guide, but publishes no p50, p95, region, payload size, or comparison configuration. Benchmark from the intended deployment region before setting a latency budget.
Production gate: calibrate, abstain, then automate
- Build a labeled set from the real workload, including ambiguous cases and costly failure modes.
- Run the same questions over that set and chart false-positive and false-negative rates at different thresholds.
- Add an explicit abstain path in application code. Low-confidence or conflicting answers should enter human review rather than forcing a route.
- Monitor token usage and request counts with
GET /v1/organization/usage/decisions, then audit a sample of automated outcomes after launch.
A deployment decision table
OpenAI Decisions API is the right default for short, high-volume, bounded evaluations inside an existing OpenAI stack. Price alone is not a reason to migrate.
| Workload | Recommendation | Main condition |
|---|---|---|
| Support or lead routing | Use Decisions | Categories are fixed and labeled examples are available |
| Image damage screening | Trial Decisions | Benchmark image accuracy; hosted URLs are now supported |
| Long policy plus short item | Test both endpoints | Verify actual cache-hit tokens and latency |
| Compliance or destructive action | Use Decisions only as a gate | Require abstention, review, and asymmetric thresholds |
| Extraction plus explanation | Use Responses | One richer call can avoid a second generation request |
| Tool selection with arguments | Use function calling | The output contract matches the action directly |
| EU or regulated workload | Consider Decisions | Confirm eligibility, residency, and the regional premium |
OpenAI Decisions API pricing FAQ
Is the Decisions API priced per request or token?
It is priced by input tokens, not by request. Standard uncached input currently costs $0.10 per 1 million tokens, subject to caching and applicable regional or long-context modifiers.
Are Decisions API output tokens free?
Yes. The official Decisions guide states that output tokens are not charged.
Is there a free tier?
OpenAI's current Decisions documentation does not list a dedicated free tier. Account credits or contractual terms can still affect what an organization pays.
Does prompt caching work with the Decisions API?
Yes. Shared-input prefixes of at least 1,024 tokens can qualify, and OpenAI places an implicit breakpoint at the end of shared input by default. Question content and question-specific images are not part of that reusable prefix.
Is Decisions cheaper than the Responses API?
Usually for short, bounded classifications that need no generated text. The advantage can shrink when Responses output is tiny or disappear when the workflow needs a second call for extraction or explanation.
How many questions fit in one request?
The current limit is 1 to 400 questions. Independent questions can share input; dependent questions require separate requests.
Are images supported and billed?
Yes. Decisions accepts hosted HTTP/HTTPS image URLs and inline base64 images, and image input contributes to billed input usage. file_id image references are not supported.
Does regional processing cost more?
It can. OpenAI's pricing page applies a 10% uplift to eligible regional and data-residency endpoints for newer models; verify the live rate for the target region before deployment.