
OpenAI's Decisions API is now generally available
Apps that classify, route or score inputs can now use the GA endpoint with gpt-6-luna. Input costs $0.10 per million tokens and there are no output-token charges, per OpenAI.
If your app makes lots of small calls to sort, route or rate things, you can now run them on OpenAI's Decisions API outside the beta. Per OpenAI's changelog, it "is now generally available with gpt-6-luna."
What changed#
The API went into public beta on Oct 6, which we covered in our Oct 12 API roundup. The GA changelog entry adds: "Cache shared input across requests for prompt-cache discounts, include images in individual question instructions, and pass structured data directly with input_json." It also says each request "now supports up to 400 questions, increased from 200 in public beta." The guide lists other capabilities added since the beta launched, some of them earlier in the beta: hosted image URLs, conversation history with tool calls, organization usage reporting, Private Link and the native GPT-Live integration, which shipped Oct 15 (Oct 16 digest). @OpenAIDevs announced GA at 3:07 PM ET.
On price, OpenAI's post says "Decisions API costs $0.10 per million input tokens. Cached input costs $0.01 per million tokens," and "there are no output-token charges."
Why it matters#
Our read: ticket triage, lead sorting and safety checks are high-volume calls where speed and cost matter more than prose. Per the guide, one request can ask several questions of different types about the same input, so you can get a department, a yes/no and a severity score back together. The speed claims are OpenAI's and its customers'. In OpenAI's post, Sierra engineer Ajeet Grewal said it "runs at under 280 ms p95."
How to use it#
Per OpenAI's guide:
- Test questions in the Decisions Playground.
- Send
POST /v1/decisionswithmodel,inputandquestions. - Choose
predicate(a probability),choice(one of your values) orscore(ordered levels). - Give each question a unique
name; the API echoes it in the response. - Set thresholds from labeled examples. The guide says to "Choose thresholds based on the cost of false positives and false negatives."
Example request body (ours, untested), in the shape of the guide's choice example:
{"model":"gpt-6-luna","input":"Hi, we're a 40-person clinic and want a demo of your scheduling tool next week.","questions":[{"type":"choice","name":"lead_type","instructions":"What kind of inbound message is this?","choices":[{"value":"sales_lead"},{"value":"support"},{"value":"spam"}]},{"type":"predicate","name":"wants_demo","instructions":"Is the sender asking for a demo?"}]}
Good to know#
All from OpenAI's Decisions guide unless linked otherwise.
- One model.
gpt-6-lunais "the only currently supported model." - Not every input works. "Files, audio, and item references aren't supported."
- Caching has a floor, and writes cost. The shared prefix "must contain at least 1,024 tokens; question content doesn't count toward this threshold." The guide adds that "cache writes are charged" and that "Regional processing premiums and long-context input pricing multipliers apply," so $0.10 isn't the rate for every request.
- Chained decisions need separate calls. "For decisions that depend on an earlier answer, send separate requests."
- Handle refusals. The guide's sample code checks for answers with
typeset torefusal. - Wrong tool for free text. Use "Structured Outputs with the Responses API when you need to generate an object that follows your own JSON schema."
What to watch: a second supported model. Our read; OpenAI hasn't announced one.
Steps
- Try your questions in the Decisions Playground first, per OpenAI's docs.
- Send POST /v1/decisions with model gpt-6-luna, an input, and a questions array.
- Pick a type per question: predicate, choice or score.
- Give each question a unique name; the API echoes it in the response.
- Set thresholds from labeled examples of your own traffic, per OpenAI's docs.


