Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions blog/src/_data/media.json
Original file line number Diff line number Diff line change
Expand Up @@ -4577,5 +4577,16 @@
"status": "ready"
},
"inline": {}
},
"openai-decisions-api": {
"title": "OpenAI Decisions API: what it is, price and limits",
"category": "concepts",
"hero": {
"file": "assets/media/openai-decisions-api/hero.png",
"alt": "Title card on white. OpenAI Decisions API in large ink type above three desk bells on a shelf, the middle one ringing",
"prompt": "Still of the hero scene in assets/media/openai-decisions-api/motion.js.",
"status": "ready"
},
"inline": {}
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions blog/src/assets/media/openai-decisions-api/motion.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/* Bright coded scenes for "OpenAI Decisions API". Pairs with motion.js. */
.prose figure.mg { margin: 42px 0; }
.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; }
.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; }
.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; }
.mg .mg-hit { cursor: pointer; outline: none; }
.mg [role="slider"] { cursor: grab; touch-action: none; }
.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; }
.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; }
.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; }
@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } }
@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } }
304 changes: 304 additions & 0 deletions blog/src/assets/media/openai-decisions-api/motion.js

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
131 changes: 131 additions & 0 deletions blog/src/posts/openai-decisions-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
title: "OpenAI Decisions API: what it is, price and limits"
description: "The OpenAI Decisions API is a beta endpoint that returns a probability, a pick or a score. Price, limits and how to call it, checked 7 Oct 2026."
date: 2026-10-07
category: concepts
categoryLabel: Concepts
type: Non-technical
primaryKeyword: "openai decisions api"
secondaryKeywords: ["decisions api", "gpt-6-luna decisions", "openai decisions api pricing", "decision model", "what is a decision model", "v1/decisions"]
tags: ["Concepts", "OpenAI", "AI Agents"]
faq:
- q: "Is the OpenAI Decisions API generally available?"
a: "No. OpenAI's Decisions guide says the API is in public beta and that OpenAI expects to GA in the coming weeks. It gives no date. The API changelog entry for the beta release is dated Oct 6, 2026. Checked 7 Oct 2026."
- q: "How much does the OpenAI Decisions API cost?"
a: "OpenAI's guide says that with gpt-6-luna, input costs $0.10 per 1M tokens, and that you pay only for input tokens, with no cache-read, cache-write or output-token charges. It adds that regional processing premiums and long-context input pricing multipliers apply. Checked 7 Oct 2026."
- q: "Which models work with the Decisions API?"
a: "One. OpenAI's guide says gpt-6-luna is the only model currently available on the POST /v1/decisions endpoint."
- q: "Can the Decisions API read images?"
a: "Yes, with a limit. OpenAI's guide says images must be inline base64 data URLs. Hosted HTTP or HTTPS image URLs and file_id inputs are not supported by this endpoint."
- q: "Can the Decisions API write code?"
a: "No. It returns typed answers: a probability, a choice from your options or a score. OpenAI's guide points you to Structured Outputs with the Responses API when you need an object in your own JSON schema, such as a written explanation, and to function calling when you need a tool call."
---

The OpenAI Decisions API is a beta endpoint that answers fixed questions with a probability, a pick or a score instead of written text. OpenAI released it on 6 Oct 2026 with one model, gpt-6-luna, at $0.10 per 1M input tokens. Our view: worth a test for classifying and routing, not a coding tool. Checked 7 Oct 2026.

Agents need sorting and routing too, which is why we looked. [Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. We have not tried the Decisions API, so nothing here is a test result. The [install guide](/blog/how-to-install-and-use-munder-difflin/) covers setup and the [Concepts hub](/blog/topics/concepts/) explains the terms.

## What is the OpenAI Decisions API?

It is an OpenAI endpoint, `POST /v1/decisions`, that reads text, images or both and returns a typed answer. OpenAI's [Decisions guide](https://developers.openai.com/api/docs/guides/decisions) says it "returns typed answers about 10x faster than the Responses API", and names three uses: classify content, route requests and prioritize work. The speed figure is OpenAI's own.

The [API changelog](https://developers.openai.com/api/docs/changelog) entry dated Oct 6 reads: "Released the Decisions API in beta with gpt-6-luna." The guide says the API is in public beta, "and we expect to GA in the coming weeks".

Each question has one of three types. From the guide, 7 Oct 2026:

| Type | Use it to | Main result |
| --- | --- | --- |
| `predicate` | Check a condition, such as visible damage | `probability`: an estimate from 0 to 1 that the condition is true |
| `choice` | Select one option, such as a department | `choice`: one of your supplied values |
| `score` | Rate an input against ordered levels, such as issue severity | `score`: the probability-weighted average of the level indices |

The [Hacker News thread](https://news.ycombinator.com/item?id=49984025) had more than 250 points and 114 comments when we read it on 7 Oct 2026.

<figure class="mg" data-scene="chute"><img src="/blog/assets/media/openai-decisions-api/chute.png" width="1600" height="1200" loading="lazy" decoding="async" alt="Animation. Marbles roll down a sorting chute and drop through one of three gates labelled predicate, choice and score. Each gate lights a small tag: probability, one of your supplied values, or a score."><figcaption>The three question types in OpenAI's Decisions guide, read on 7 Oct 2026.</figcaption></figure>

## What is a decision model, and how is it different from a chat model call?

A decision model picks from options you supply and attaches a number, where a chat model writes free text. OpenAI's guide does not use the term. This definition is from [Strands' post](https://strandsagents.com/blog/introducing-strands-decider/) of 1 October 2026: "Unlike LLMs that can generate arbitrary output, decision models are designed to pick between sets of options" and "assign simple numerical scores".

OpenAI's guide describes an endpoint, not a new kind of model. The [gpt-6-luna model page](https://developers.openai.com/api/docs/models/gpt-6-luna) calls it OpenAI's "most efficient model for focused, high-volume tasks" and lists the Responses endpoint as supported too.

The practical difference is the reply. In a chat call you ask for a label and then parse a sentence. Here the answer arrives as fields: `probability`, `choice` or `score`, with a `confidence` field and per option `probabilities` on choice and score answers. It answers the question and stops.

The guide draws the line: use Structured Outputs with the Responses API when you need "extracted fields or a written explanation", and function calling when you need a tool call with arguments.

## What does the Decisions API cost?

Input costs $0.10 per 1M tokens on 7 Oct 2026, and output is not charged. OpenAI's [guide](https://developers.openai.com/api/docs/guides/decisions) says: "You pay only for input tokens: there are no cache-read, cache-write, or output-token charges." The two rows below are a selection from the guide and OpenAI's [pricing page](https://developers.openai.com/api/docs/pricing), which lists more tiers.

| Where gpt-6-luna runs (7 Oct 2026) | Input per 1M tokens | Output per 1M tokens |
| --- | --- | --- |
| `/v1/decisions` | $0.10 | No charge |
| Other requests, Standard, short context | $0.10 | $0.50 |

One qualifier: the guide says "Regional processing premiums and long-context input pricing multipliers apply", and gives no figures for them.

<figure class="mg" data-scene="meter"><img src="/blog/assets/media/openai-decisions-api/meter.png" width="1600" height="1200" loading="lazy" decoding="async" alt="Animation. A parking meter with two slots. Tokens dropped in the slot marked input make the display tick up to $0.10 per 1M tokens. Tokens dropped in the slot marked output fall straight through and the display does not move."><figcaption>On /v1/decisions, input costs $0.10 per 1M tokens and output is not charged. OpenAI's guide, 7 Oct 2026.</figcaption></figure>

## What are the limits in beta?

One model, inline images and typed answers. From OpenAI's [guide](https://developers.openai.com/api/docs/guides/decisions):

* **Beta.** GA is expected "in the coming weeks". No date.
* **One model.** "`gpt-6-luna` is the only model currently available."
* **Images.** "Images must be inline base64 data URLs." Hosted HTTP or HTTPS image URLs and `file_id` inputs aren't supported by this endpoint.
* **No chained questions.** Independent questions can share one request. A decision that depends on an earlier answer needs a separate request.
* **Compliance.** Zero Data Retention and HIPAA use are supported "for eligible customers".

The guide states no rate limit and no input size cap for the endpoint.

<figure class="mg" data-scene="turnstile"><img src="/blog/assets/media/openai-decisions-api/turnstile.png" width="1600" height="1200" loading="lazy" decoding="async" alt="Animation. Three picture cards arrive at a turnstile. The card marked inline base64 data URL passes through. The cards marked hosted image URL and file_id are stopped as the arm locks."><figcaption>Images must be inline base64 data URLs. OpenAI's guide, 7 Oct 2026.</figcaption></figure>

## How do you call the Decisions API?

You send a POST with a model, an input and a list of questions. This request is trimmed from the guide's routing example, which lists four choices:

```bash
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": "other", "description": "Requests outside these categories."}
]
}]
}'
```

The guide's score example shows how a score is built. Three severity levels get probabilities of 0.1, 0.7 and 0.2, and because level indices start at 0, the score comes out at 1.1. The guide calls that response illustrative.

<figure class="mg" data-scene="thermometer"><img src="/blog/assets/media/openai-decisions-api/thermometer.png" width="1600" height="1200" loading="lazy" decoding="async" alt="Animation. A thermometer with three marks numbered 0, 1 and 2 for cosmetic, workaround available and fully blocked. Three bars sized 0.1, 0.7 and 0.2 grow beside the marks and the liquid rises to rest at 1.1, just above the middle mark."><figcaption>Probabilities of 0.1, 0.7 and 0.2 produce a score of 1.1 in the illustrative example in OpenAI's guide, 7 Oct 2026.</figcaption></figure>

## Is there an open alternative?

Yes, Strands Decider 2B is one you can run yourself. The [Strands post](https://strandsagents.com/blog/introducing-strands-decider/) of 1 October 2026 describes "a 2 billion parameter model, suitable for running on a local CPU or GPU", with weights on Hugging Face. GitHub listed the [repo](https://github.com/strands-labs/strands-decider) as Apache 2.0 on 7 Oct 2026.

The vendor's own figures: a median of around 115ms on an Nvidia RTX3090, and "3rd of 33 in the 2B class" on JevBench's public set. No source we opened compares it with OpenAI's endpoint.

## What does it mean if you run coding agents?

Little for the code writing itself, because the endpoint returns answers, not code. Strands says of this class of model that its "lack of ability to generate text makes it unsuited for coding". No source we opened says the Decisions API works with Codex or any other coding agent.

Our view: the fit is the small jobs around an agent, such as [model routing](/blog/do-more-with-less-model-routing/) or scoring a bug report's severity. Strands lists model routing, tool selection, evaluations and guardrails among early uses. These are ideas, not results.

## What should you do now?

Our view: try it on one narrow labelling job if you already use the OpenAI API, and otherwise wait for GA.

1. Test your own inputs in the [Playground](https://platform.openai.com/decisions).
2. Set thresholds from labeled examples of your own, as the guide advises.
3. Keep a beta endpoint out of anything you cannot change later.
4. For the code writing, see [best AI coding agents](/blog/best-ai-coding-agents/) and [what Codex is](/blog/what-is-codex/).

<link rel="stylesheet" href="/blog/assets/media/openai-decisions-api/motion.css"><script defer src="/blog/assets/media/openai-decisions-api/motion.js"></script>
2 changes: 1 addition & 1 deletion blog/src/posts/openai-text-watermarking.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ faq:

OpenAI text watermarking is textGrain, an invisible signal in the model's word choices. [OpenAI announced it](https://openai.com/index/eu-text-provenance) on 5 Oct 2026: opt in for API customers worldwide, and on for eligible ChatGPT and Codex text output in the EU over the coming weeks. Our view: a compliance signal, not proof of who wrote a text. Checked 6 Oct 2026.

Codex is one of the coding agents people run inside [Munder Difflin](https://harnessmd.com/download), which is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. So this change reaches some of our readers directly. The [Concepts hub](/blog/topics/concepts/) has more explainers like this one.
Codex is one of the coding agents people run inside [Munder Difflin](https://harnessmd.com/download), which is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. So this change reaches some of our readers directly. The [Concepts hub](/blog/topics/concepts/) has more explainers like this one. Also new: [the OpenAI Decisions API](/blog/openai-decisions-api/).

## What is OpenAI text watermarking?

Expand Down
2 changes: 1 addition & 1 deletion docs/blog/agent-tools-today-2026-10-06/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ <h2 id="how-this-list-is-built" tabindex="-1">How this list is built <a class="a

<footer class="post-foot wrap"><div class="prevnext">
<a class="pn prev" href="/blog/claude-cowork-vs-claude-code/"><span class="k">← Older</span><span class="t">Claude Cowork vs Claude Code: Which One Do You Need?</span></a>
<a class="pn next" href="/blog/hermes-agent-vs-openclaw/"><span class="k">Newer →</span><span class="t">Hermes Agent vs OpenClaw: which self-hosted AI assistant to pick</span></a>
<a class="pn next" href="/blog/openai-decisions-api/"><span class="k">Newer →</span><span class="t">OpenAI Decisions API: what it is, price and limits</span></a>
</div>
<section class="related">
<h2>Related in News</h2>
Expand Down
26 changes: 13 additions & 13 deletions docs/blog/agents-rule-of-two/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -331,50 +331,50 @@ <h2 id="faq">FAQ</h2>
<h2>Related in Concepts</h2>
<div class="post-grid">
<article class="card t-concepts">
<a class="thumb t-concepts" href="/blog/mistral-large-4/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/mistral-large-4/hero.png" alt="" loading="lazy" decoding="async" /></a>
<a class="thumb t-concepts" href="/blog/openai-decisions-api/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/openai-decisions-api/hero.png" alt="" loading="lazy" decoding="async" /></a>
<div class="body">
<div class="meta">
<time datetime="2026-10-06">Oct 6, 2026</time>
<time datetime="2026-10-07">Oct 7, 2026</time>
<span class="dot" aria-hidden="true"></span>
<span>5 min</span>
</div>
<h3><a href="/blog/mistral-large-4/">Mistral Large 4 (Le Chonk): size, price, scores and weights</a></h3>
<p class="dek">Mistral Large 4 is a 1 trillion parameter open weight model in public preview. Context window, API price, Mistral&#39;s own scores and weights, checked 6 Oct 2026.</p>
<h3><a href="/blog/openai-decisions-api/">OpenAI Decisions API: what it is, price and limits</a></h3>
<p class="dek">The OpenAI Decisions API is a beta endpoint that returns a probability, a pick or a score. Price, limits and how to call it, checked 7 Oct 2026.</p>
<div class="foot">
<span class="tag kind">Concepts</span>
<a class="more" href="/blog/mistral-large-4/" aria-label="Read: Mistral Large 4 (Le Chonk): size, price, scores and weights">Read →</a>
<a class="more" href="/blog/openai-decisions-api/" aria-label="Read: OpenAI Decisions API: what it is, price and limits">Read →</a>
</div>
</div>
</article>
<article class="card t-concepts">
<a class="thumb t-concepts" href="/blog/openai-text-watermarking/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/openai-text-watermarking/hero.png" alt="" loading="lazy" decoding="async" /></a>
<a class="thumb t-concepts" href="/blog/mistral-large-4/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/mistral-large-4/hero.png" alt="" loading="lazy" decoding="async" /></a>
<div class="body">
<div class="meta">
<time datetime="2026-10-06">Oct 6, 2026</time>
<span class="dot" aria-hidden="true"></span>
<span>5 min</span>
</div>
<h3><a href="/blog/openai-text-watermarking/">OpenAI text watermarking: textGrain, who gets it, limits</a></h3>
<p class="dek">OpenAI text watermarking (textGrain) is opt in for the API now and is coming to eligible ChatGPT and Codex text in the EU. Limits checked 6 Oct 2026.</p>
<h3><a href="/blog/mistral-large-4/">Mistral Large 4 (Le Chonk): size, price, scores and weights</a></h3>
<p class="dek">Mistral Large 4 is a 1 trillion parameter open weight model in public preview. Context window, API price, Mistral&#39;s own scores and weights, checked 6 Oct 2026.</p>
<div class="foot">
<span class="tag kind">Concepts</span>
<a class="more" href="/blog/openai-text-watermarking/" aria-label="Read: OpenAI text watermarking: textGrain, who gets it, limits">Read →</a>
<a class="more" href="/blog/mistral-large-4/" aria-label="Read: Mistral Large 4 (Le Chonk): size, price, scores and weights">Read →</a>
</div>
</div>
</article>
<article class="card t-concepts">
<a class="thumb t-concepts" href="/blog/reflection-beam/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/reflection-beam/hero.png" alt="" loading="lazy" decoding="async" /></a>
<a class="thumb t-concepts" href="/blog/openai-text-watermarking/" aria-hidden="true" tabindex="-1"><img src="/blog/assets/media/openai-text-watermarking/hero.png" alt="" loading="lazy" decoding="async" /></a>
<div class="body">
<div class="meta">
<time datetime="2026-10-06">Oct 6, 2026</time>
<span class="dot" aria-hidden="true"></span>
<span>5 min</span>
</div>
<h3><a href="/blog/reflection-beam/">Reflection AI Beam: the 501B open weight model, explained</a></h3>
<p class="dek">Reflection AI Beam is a 501B parameter open weight model. Size, Reflection&#39;s own scores, licence and when you can get it, checked 6 Oct 2026.</p>
<h3><a href="/blog/openai-text-watermarking/">OpenAI text watermarking: textGrain, who gets it, limits</a></h3>
<p class="dek">OpenAI text watermarking (textGrain) is opt in for the API now and is coming to eligible ChatGPT and Codex text in the EU. Limits checked 6 Oct 2026.</p>
<div class="foot">
<span class="tag kind">Concepts</span>
<a class="more" href="/blog/reflection-beam/" aria-label="Read: Reflection AI Beam: the 501B open weight model, explained">Read →</a>
<a class="more" href="/blog/openai-text-watermarking/" aria-label="Read: OpenAI text watermarking: textGrain, who gets it, limits">Read →</a>
</div>
</div>
</article>
Expand Down
Loading
Loading