{"slug": "openai-decisions-api-public-beta-typed-answers-no-prose", "title": "OpenAI Decisions API Public Beta: Typed Answers, No Prose", "summary": "OpenAI released the Decisions API in public beta on October 6, running on GPT-6 Luna, which returns typed answers — probabilities, choices and scores — instead of prose and runs about ten times faster than the Responses API. The endpoint supports three question types (predicate, choice and score) and replaces the generate-text-then-parse-JSON pattern for classification and routing tasks, though the beta requires base64-encoded images, evaluates each question independently, offers no streaming, conversation history or tool calls, and will confidently return the closest match unless developers add an \"unclear\" or \"other\" option.", "body_md": "OpenAI shipped the most useful API it has launched this year, and it was not the one everyone was talking about at DevDay. The [Decisions API went to public beta on October 6](https://community.openai.com/t/decisions-api-is-now-available-in-public-beta/1403877), runs on GPT-6 Luna, and does exactly one thing: it takes your input and a set of questions you define, then returns typed answers — probabilities, choices, scores. No prose. No JSON parsing. No hallucinated field names. Just answers your code can act on, about ten times faster than the Responses API.\n\n## Three Ways to Ask a Question\n\nThe OpenAI Decisions API supports exactly three question types, and understanding the difference matters before wiring them into a pipeline.\n\n**Predicate** is a yes-or-no condition. You ask whether something is true, and the API returns a probability between 0 and 1. Ask “does this message contain PII?” and you get back `0.94`, not a paragraph explaining why.\n\n**Choice** takes a fixed set of candidates you define and returns one winner along with per-option probabilities and a confidence value. Route a support ticket to billing, technical, or general — you get back `\"billing\"` with `0.87` confidence.\n\n**Score** evaluates input against an ordered rubric. Ask “how helpful is this agent response?” against a 5-level scale and you get a probability-weighted rating plus confidence. No free-text explanation — just the number.\n\nTogether, these three types replace a pattern every developer using LLMs has written at least once: generate text, parse JSON from it, handle `json.JSONDecodeError`, retry when the model hallucinates a field name, branch on the result. That entire pattern is now obsolete for classification and routing tasks.\n\n``` python\nfrom openai import OpenAI\n\nclient = OpenAI()\n\nresponse = client.decisions.create(\n    model=\"gpt-6-luna\",\n    input=\"My invoice shows a duplicate charge from last month.\",\n    questions=[\n        {\n            \"type\": \"choice\",\n            \"name\": \"department\",\n            \"instructions\": \"Which support department should handle this ticket?\",\n            \"choices\": [\n                {\"value\": \"billing\", \"description\": \"Payment, invoice, and charge issues\"},\n                {\"value\": \"technical\", \"description\": \"Product bugs, errors, and outages\"},\n                {\"value\": \"general\", \"description\": \"General inquiries and everything else\"},\n                {\"value\": \"unclear\", \"description\": \"Cannot determine from available context\"}\n            ]\n        },\n        {\n            \"type\": \"predicate\",\n            \"name\": \"needs_escalation\",\n            \"instructions\": \"Does this complaint likely require immediate escalation?\"\n        }\n    ]\n)\n\ndept = response.questions[0].choice           # \"billing\"\nescalate = response.questions[1].probability  # 0.82\n```\n\n## The Gotchas Buried in the Beta Docs\n\nThe 10x speed claim is plausible for practical purposes, but the public beta has rough edges that will cause problems if you skip the fine print.\n\n**Images must be base64.** The API accepts image inputs, but only as base64-encoded data URLs embedded directly in the request body. Hosted image URLs and file IDs are not supported. If you are building an image moderation pipeline, factor in that preprocessing overhead.\n\n**Questions are evaluated independently.** Every question in a single request is processed in isolation. If your second question depends on the first answer, you need two separate requests. There is no chained reasoning within a single call.\n\n**No fallback means forced wrong answers.** If the input does not fit any option you defined, the model picks the closest match and returns it confidently. Always add an `\"unclear\"` or `\"other\"` option to every choice question — without it, your classifier will produce silent, hard-to-debug errors on edge cases.\n\n**No streaming, no conversation history, no tool calls.** The Decisions API is a single-turn, single-purpose endpoint. GPT-6 Luna’s official [endpoint support table still does not list `/v1/decisions`](https://developers.openai.com/api/docs/guides/decisions) — the documentation lags the live API, which is a beta reality you will need to work around.\n\n## How It Compares to TypeSafe Jev\n\nThere is a direct competitor that shipped two weeks earlier: TypeSafe’s Jev. It is purpose-built for decisions, generally available with no waitlist, and priced at [$0.042 per million input tokens — less than half what OpenAI charges](https://aiintoai.vercel.app/article/openai-decisions-api-vs-typesafe-jev-comparison-deep-report).\n\n| Feature | Decisions API | TypeSafe Jev | Responses API | \n|---|---|---|---|\n| Input price | $0.10/M tokens | $0.042/M tokens | $0.50/M tokens | \n| Output cost | $0 | $0 | $0.50/M tokens | \n| Decision accuracy | 71–90% | 89–97% | N/A | \n| Image support | Yes (base64) | No | Yes | \n| Status | Public beta | GA | GA | \n\nOn independent benchmarks, Jev scored 89.2% and 97.6% accuracy versus OpenAI’s 71.4% and 90.5% on the same test sets. The gap is wide enough to matter for production workloads. Jev also supports a “none of the above” primitive and allows mixing question types freely within a single call.\n\nWhere OpenAI wins: image support, the convenience of a single SDK and vendor, and a much larger developer ecosystem. If you need image inputs, or you are fully committed to the OpenAI stack, the Decisions API is a solid choice. If decision accuracy and cost efficiency are the priority, benchmark Jev before defaulting.\n\n## When to Use It\n\nThe Decisions API is the right tool when your answer space is finite and knowable upfront, you need the answer fast and cheap, and you do not need an explanation — just an action.\n\nGood fits include content moderation gates, customer support routing, agent step selection from a fixed action set, automated response scoring, and image defect detection. Bad fits include anything requiring a reason for the decision, open-ended answer spaces, conversation history, or tool calling.\n\nOpenAI is building toward a world where generative and decision intelligence are separate products with separate pricing, separate models, and separate guarantees. The [Decisions API is the first concrete step in that direction](https://the-decoder.com/openai-launches-decisions-api-that-reduces-complex-evaluations-to-yes-no-or-pick-one/). It will get better. For now, ship with the `\"unclear\"` option in every choice question, measure actual latency in your environment, and do not take the speed claims at face value until you have numbers to back them up.", "url": "https://wpnews.pro/news/openai-decisions-api-public-beta-typed-answers-no-prose", "canonical_source": "https://byteiota.com/openai-decisions-api-public-beta-2/", "published_at": "2026-10-21 09:08:24+00:00", "updated_at": "2026-10-21 09:12:01.338010+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-products", "ai-tools", "developer-tools", "large-language-models"], "entities": ["OpenAI", "Decisions API", "GPT-6 Luna", "Responses API"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/openai-decisions-api-public-beta-typed-answers-no-prose", "markdown": "https://wpnews.pro/news/openai-decisions-api-public-beta-typed-answers-no-prose.md", "text": "https://wpnews.pro/news/openai-decisions-api-public-beta-typed-answers-no-prose.txt", "jsonld": "https://wpnews.pro/news/openai-decisions-api-public-beta-typed-answers-no-prose.jsonld"}}