{"slug": "openai-decisions-api-is-in-public-beta", "title": "OpenAI Decisions API is in public beta", "summary": "OpenAI launched the Decisions API in public beta, a dedicated POST /v1/decisions endpoint that evaluates text, images, or both and returns typed answers about 10x faster than the Responses API. The API supports three question types — predicate (probability from 0 to 1), choice (one of supplied values), and score (probability-weighted average of level indices) — and currently runs only on the gpt-6-luna model, with general availability expected in the coming weeks. Images must be supplied as inline base64 data URLs, as hosted HTTP/HTTPS URLs and file_id inputs are not supported.", "body_md": "The Decisions API evaluates text, images, or both and returns typed answers about 10x faster than the Responses API. Get the probability that a condition is true, a choice from a fixed set, or a score against a rubric. Use those answers to classify content, route requests, and prioritize work in your application.\n\nTry the Decisions API in the [Playground](https://platform.openai.com/decisions) to experiment with questions and inputs before writing code.\n\nThe Decisions API is in public beta, and we expect to GA in the coming weeks.\n`gpt-6-luna` is the only model currently available. Use the dedicated `POST   /v1/decisions` endpoint.\n\n## How decisions work\n\nA request has three parts:\n\n| Field | Purpose | \n|---|---|\n| `model` | The model that evaluates the request. Currently, only `gpt-6-luna` is supported. | \n| `input` | Shared evidence for the questions: a text string or user messages containing text and images. | \n| `questions` | What to evaluate, including each question’s type, instructions, and any allowed choices or score levels. | \n\nThe response contains an `answers` array. Give each question a unique `name` to identify its answer; the API echoes that name in the response.\n\n### Choose a question type\n\n| Type | Use it to | Main result | \n|---|---|---|\n| `predicate` | Check a condition, such as visible damage or passage relevance. | `probability` : an estimate from 0 to 1 that the condition is true. | \n| `choice` | Select one option, such as a department or content category. | `choice` : one of your supplied values. | \n| `score` | Rate an input against ordered levels, such as issue severity. | `score` : the probability-weighted average of the level indices. | \n\nBoth `choice` and `score` return probabilities over discrete options. Use `choice` for categories without an order, such as departments. Use `score` for ordered levels, such as severity; it takes the probability-weighted average of their numeric indices to produce a score that can fall between levels.\n\nUse Decisions when your application needs one of these answer types. Use [Structured Outputs](https://developers.openai.com/api/docs/guides/structured-outputs) with the Responses API when you need to generate an object that follows your own JSON schema, such as extracted fields or a written explanation, or [function calling](https://developers.openai.com/api/docs/guides/function-calling) when you need a model to request a tool call with arguments.\n\n## Check an image for visible damage\n\nUse a `predicate` question to check a product photo for visible damage. This request combines the image with instructions to look for a crack, tear, or dent.\n\n```\nIMAGE_BASE64=\"$(base64 < product.png | tr -d '\\r\\n')\"\n\ncurl https://api.openai.com/v1/decisions \\\n  -H \"Authorization: Bearer $OPENAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  --data-binary @- <<JSON\n{\n  \"model\": \"gpt-6-luna\",\n  \"input\": [{\n    \"role\": \"user\",\n    \"content\": [\n      {\"type\": \"input_text\", \"text\": \"Inspect the product in this photo.\"},\n      {\"type\": \"input_image\", \"image_url\": \"data:image/png;base64,$IMAGE_BASE64\"}\n    ]\n  }],\n  \"questions\": [{\n    \"type\": \"predicate\",\n    \"name\": \"visible_damage\",\n    \"instructions\": \"Does the product have visible damage, such as a crack, tear, or dent? Ignore shadows and damage to the packaging.\"\n  }]\n}\nJSON\n```\n\nAn illustrative response excerpt:\n\n```\n{\n  \"answers\": [\n    {\n      \"type\": \"predicate\",\n      \"name\": \"visible_damage\",\n      \"probability\": 0.92\n    }\n  ]\n}\n```\n\nThe `probability` is the model’s estimate that the condition is true. Use it to flag photos for review based on a threshold you choose.\n\nImages must be inline base64 data URLs. Hosted HTTP or HTTPS image URLs and `file_id` inputs aren’t supported by this endpoint. Combine `input_text` and `input_image` parts in a user message to evaluate images together with instructions or other context.\n\n## Select from fixed options\n\nA `choice` question selects one value from the options you provide. Use distinct values and descriptions that explain when each option applies.\n\nThis request routes a customer complaint:\n\n```\ncurl https://api.openai.com/v1/decisions \\\n  -H \"Authorization: Bearer $OPENAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-6-luna\",\n    \"input\": \"I was charged twice for my order.\",\n    \"questions\": [{\n      \"type\": \"choice\",\n      \"name\": \"department\",\n      \"instructions\": \"Which department should handle this complaint?\",\n      \"choices\": [\n        {\"value\": \"billing\", \"description\": \"Payments, invoices, and refunds.\"},\n        {\"value\": \"technical\", \"description\": \"Problems using the product.\"},\n        {\"value\": \"shipping\", \"description\": \"Delivery and tracking.\"},\n        {\"value\": \"other\", \"description\": \"Requests outside these categories.\"}\n      ]\n    }]\n  }'\n```\n\nAn illustrative response excerpt:\n\n```\n{\n  \"answers\": [\n    {\n      \"type\": \"choice\",\n      \"name\": \"department\",\n      \"choice\": \"billing\",\n      \"probabilities\": [\n        { \"value\": \"billing\", \"probability\": 0.95 },\n        { \"value\": \"technical\", \"probability\": 0.02 },\n        { \"value\": \"shipping\", \"probability\": 0.01 },\n        { \"value\": \"other\", \"probability\": 0.02 }\n      ],\n      \"confidence\": 0.93\n    }\n  ]\n}\n```\n\nThe answer’s `choice` field contains a supplied value, here `\"billing\"`. It also includes a `probabilities` array for the options and a `confidence` field. See [Interpret the answers](#interpret-the-answers) for guidance on setting thresholds.\n\nInclude a fallback option such as `\"other\"` when your categories don’t cover every possible input. Your application can send that result to a general review queue.\n\n## Score against a rubric\n\nA `score` question evaluates an input against ordered `levels`. Define the criteria for each level and arrange them from lowest to highest.\n\n```\ncurl https://api.openai.com/v1/decisions \\\n  -H \"Authorization: Bearer $OPENAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-6-luna\",\n    \"input\": \"Export fails in Safari but works in Chrome.\",\n    \"questions\": [{\n      \"type\": \"score\",\n      \"name\": \"severity\",\n      \"instructions\": \"How severe is this issue?\",\n      \"levels\": [\n        {\"label\": \"Cosmetic\", \"description\": \"Appearance only; no lost functionality.\"},\n        {\"label\": \"Workaround available\", \"description\": \"A task fails, but another way works.\"},\n        {\"label\": \"Fully blocked\", \"description\": \"A task fails with no workaround.\"}\n      ]\n    }]\n  }'\n```\n\nAn illustrative response excerpt:\n\n```\n{\n  \"answers\": [\n    {\n      \"type\": \"score\",\n      \"name\": \"severity\",\n      \"score\": 1.1,\n      \"probabilities\": [\n        { \"value\": 0, \"label\": \"Cosmetic\", \"probability\": 0.1 },\n        { \"value\": 1, \"label\": \"Workaround available\", \"probability\": 0.7 },\n        { \"value\": 2, \"label\": \"Fully blocked\", \"probability\": 0.2 }\n      ],\n      \"confidence\": 0.55\n    }\n  ]\n}\n```\n\nLevel indices start at 0. Here, 0 means cosmetic, 1 means a workaround is available, and 2 means fully blocked. The returned `score` is a probability-weighted average, so it can fall between levels. In this example, probabilities of 0.1, 0.7, and 0.2 produce a score of 1.1.\n\nThe answer also includes `confidence` and the per-level `probabilities`. The score summarizes the distribution across levels. Use `choice` to select a single category.\n\n## Ask multiple questions\n\nPut independent questions in the same `questions` array to evaluate shared input. For a product photo, you could check for damage and classify the product category in one request. Each question can use a different type.\n\nFor decisions that depend on an earlier answer, send separate requests. For example, check for damage first, then use the result to decide whether to request a repair category.\n\nWrite questions around observable criteria. Separate different concerns into different questions, give choices distinct meanings, and define score levels so that adjacent levels have distinct criteria.\n\n## Interpret the answers\n\nPredicates return the estimated probability that a condition is true. Choice and score answers return a probability distribution and a separate `confidence` field.\n\nUse labeled examples from your application to set thresholds for routing, filtering, or review. Choose thresholds based on the cost of false positives and false negatives.\n\n## Pricing and availability\n\nWith `gpt-6-luna`, input costs **$0.10 per 1M tokens**. You pay only for input tokens: there are no cache-read, cache-write, or output-token charges.\n\nRegional processing premiums and long-context input pricing multipliers apply. These rates apply to `/v1/decisions`; other requests using `gpt-6-luna` follow the applicable [model and processing-tier pricing](https://developers.openai.com/api/docs/pricing).\n\nThe Decisions API supports Zero Data Retention (ZDR) and HIPAA use for eligible customers. Data residency and regional processing are supported in the United States and Europe (EEA + Switzerland). See [data controls](https://developers.openai.com/api/docs/guides/your-data) for eligibility requirements, required agreements, and limitations.\n\n## Add voice control\n\nUse [client delegation with the Live API](https://developers.openai.com/api/docs/guides/decisions-voice) to choose actions from voice requests and report their results to the user.", "url": "https://wpnews.pro/news/openai-decisions-api-is-in-public-beta", "canonical_source": "https://developers.openai.com/api/docs/guides/decisions", "published_at": "2026-10-06 20:57:25+00:00", "updated_at": "2026-10-06 21:19:27.373325+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "artificial-intelligence", "large-language-models", "generative-ai"], "entities": ["OpenAI", "Decisions API", "Responses API", "gpt-6-luna", "Structured Outputs"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/openai-decisions-api-is-in-public-beta", "markdown": "https://wpnews.pro/news/openai-decisions-api-is-in-public-beta.md", "text": "https://wpnews.pro/news/openai-decisions-api-is-in-public-beta.txt", "jsonld": "https://wpnews.pro/news/openai-decisions-api-is-in-public-beta.jsonld"}}