Skip to content

Browse catalog

Search catalog

[READY] Type a title, tag, or description.

Optimization

A Decisions choice test missed a 70% coin

AUTHOR
Bartłomiej Krupa
PUBLISHED
2026.10.12
READ_TIME
7 min

If you classify text or images with gpt-6-luna, POST /v1/decisions does not cache, and in one 1,000-trial test a choice question returned heads 98% of the time on a 70% coin. The endpoint went to public beta on 6 October 2026. Input is $0.10 per million tokens, with no cache-read, no cache-write, and no output charge.

The same model on the Responses API, for prompts up to 272K input tokens, is $0.10 input, $0.01 cached input, and $0.50 output. A prefix you send on every call costs ten times as much on Decisions as it does on a Responses cache read.

What you pay

A cache read is a later request that reuses an unchanged prefix at a discount. Decisions has no such discount. OpenAI also says regional premiums and long-context multipliers apply to /v1/decisions. The guide does not list those rates.

Decisions gpt-6-lunaResponses gpt-6-luna, prompts up to 272K
Input$0.10 / 1M tokens$0.10 / 1M tokens
Cached inputnone$0.01 / 1M tokens
Outputnone$0.50 / 1M tokens
Imagesinline base64 onlytext and image

Arithmetic on the two OpenAI rates: 100,000 input tokens cost $0.010 on Decisions and $0.001 as a Responses cache read. Any text the Responses call emits is extra, at $0.50 per million output tokens. Decisions returns a typed answer and does not bill output. For a short label, the missing cache still dominates. A forum reader, Poupanka, said moving classification from Luna on the Responses API to this endpoint is economically unattractive until caching exists.

OpenAI says the endpoint is about 10x faster than the Responses API, and that they expect general availability in the coming weeks. Neither line comes with a method or a date.

Three answer types

A request has model, a shared input, and questions. Each question needs a unique name. The response is an answers array. gpt-6-luna is the only model on this endpoint.

TypeUse it whenWhat comes back
predicateYou need the chance a statement is trueprobability from 0 to 1
choiceThe labels have no order, such as a departmentone of your values, plus probabilities and a separate confidence
scoreThe labels are ordered, such as severitya probability-weighted average of the level indices, which can fall between levels

Confidence is that extra field on a single choice or score response. It is not “how often this label won across many calls.”

The guide’s score example uses levels 0, 1, and 2 with probabilities 0.1, 0.7, and 0.2. The score is 1.1, between “workaround available” and “fully blocked.” Use choice when you need one category. Use score when the levels have an order.

Docs say to set your own thresholds from labeled examples, based on what a false positive and a false negative cost you. Independent questions can share one questions array. A question that depends on an earlier answer needs a second request.

A 70% coin came back heads 98% of the time

On 7 October 2026, forum user platypus posted a loaded-coin test. The coin was heads 70% of the time. Across 1,000 predicate trials, heads came back 70% of the time. Across 1,000 choice trials, heads came back 98% of the time. He wrote that choice puts too much probability on the most likely outcome, that changing the order of the choices moved the probabilities, and that his verdict was “don’t use choice questions.” He also wrote that Jev, another decision model people on the thread compared with Luna, was no better on this. He did not publish the order-swap numbers.

That test asked for a rate, and predicate on the same coin stayed at 70%. Use choice when you need one unordered label, as in the routing request below. Keep the choice order fixed. He saw the probabilities move when the order changed, and he did not publish by how much.

That 98% counts trials whose chosen label was heads. confidence is a different number, attached to one response.

A second early pass, from forum user jefff the day the API launched, used a few hundred questions from word games and one conversational game. He is explicit that it is not a general benchmark. On nuanced calls, Jev was more accurate. Luna produced about three times as many wrong answers he described as confident. The note does not say what cutoff that used. On narrow yes/no checks the two were about equal. Median turn time was about 0.3 seconds for Jev and about 1.6 seconds for Luna. Luna cost about two to three times as much. A reply on the same thread said Jev does not take images yet. Decisions does, as inline base64.

Copy-paste: a choice, and the image rule

This is the guide’s complaint-routing request. The description on each choice tells the model when that label applies.

curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "I was charged twice for my order.",
    "questions": [{
      "type": "choice",
      "name": "department",
      "instructions": "Which department should handle this complaint?",
      "choices": [
        {"value": "billing", "description": "Payments, invoices, and refunds."},
        {"value": "technical", "description": "Problems using the product."},
        {"value": "shipping", "description": "Delivery and tracking."},
        {"value": "other", "description": "Requests outside these categories."}
      ]
    }]
  }'

Swap "type": "choice" for "type": "predicate" and drop choices when you need a probability from 0 to 1. The guide’s samples need OpenAI SDK Python 3.26.0, JavaScript 7.30.0, Go 3.73.0, Ruby 0.101.0, or Java 4.78.0, or later.

Images must be inline base64 data URLs (data:image/png;base64,...). A hosted https:// URL and a file_id are rejected. Put input_text and input_image together in one user message when the question needs both.

Which call to make

Use Decisions when each call sees new input, you want a typed answer with no output bill, or the input is an image you can inline. Use Responses with prompt caching when the same instructions go out on every call. A cache hit only happens when that prefix stays byte-for-byte the same. How to keep it that way is in Don’t break the prompt cache. The list-price stack for caching and batching is in Stop paying full price for repeat LLM calls.

Azure and AWS availability was asked on the launch thread. Nobody answered it.

FAQ

Does the Decisions API cache input?
No. OpenAI's Decisions guide prices gpt-6-luna at $0.10 per million input tokens and says there are no cache-read, cache-write, or output-token charges. The same model on the Responses API, for prompts up to 272K input tokens, is $0.10 input, $0.01 cached input, and $0.50 output (OpenAI changelog, 22 September 2026). A repeated prefix is cheaper as a Responses cache read.
What did the 70% coin test count?
In one test posted on the OpenAI community forum on 7 October 2026, a coin biased to heads 70% of the time came back heads on 70% of 1,000 predicate trials and on 98% of 1,000 choice trials. The 98% counts trials whose chosen label was heads. The confidence field on a single choice response is a different number. The same tester also saw the probabilities move when the choice order changed, and did not publish that second figure.
Can I pass an image URL to POST /v1/decisions?
No. The Decisions guide says images must be inline base64 data URLs. Hosted HTTP or HTTPS image URLs and file_id inputs are not supported. Text can be a plain string. Combine input_text and input_image in a user message when the question needs both.

Sources

  1. DecisionsOpenAI
  2. OpenAI API changelogOpenAI
  3. Decisions API is now available in Public BetaOpenAI Community