Cloudflare: Clef Omni vs Microsoft: Microsoft-Decision-1
A side-by-side comparison of Cloudflare: Clef Omni ($0.52 / 1M tokens) and Microsoft: Microsoft-Decision-1 ($0.15 / 1M tokens) using current USD prices and capabilities from the api14 catalog. Both run through the same OpenAI-compatible API.
Specifications
| Cloudflare: Clef Omni | Microsoft: Microsoft-Decision-1 | |
|---|---|---|
| Provider | Cloudflare | Microsoft |
| Input | $0.52 / 1M tokens | $0.15 / 1M tokens |
| Context window | 65,536 | 32,768 |
| Max output | 58,982 | 29,491 |
| Input | text, image, audio, video | text |
| Output | decisions | decisions |
| Tool calling | ||
| Structured output | ||
| Reasoning control | ||
| Added | Oct 9, 2026 | Oct 9, 2026 |
Key differences
- Microsoft: Microsoft-Decision-1 is 72% cheaper on input tokens.
- Cloudflare: Clef Omni reads 2.0× more context (65,536 tokens).
- A request with 1,000 input and 500 output tokens costs $0.000525 with Cloudflare: Clef Omni and $0.000147 with Microsoft: Microsoft-Decision-1.
In depth
Cloudflare: Clef Omni is a decisions model from Cloudflare, and Microsoft: Microsoft-Decision-1 is a decisions model from Microsoft. Both are listed in the decisions category and both carry a provider release date of 2026-10-09. Neither model exposes any supported parameters, so you cannot tune sampling behaviour, temperature or similar knobs through the API. What you send in and what you get back is the whole contract: input goes in, a decision comes out.
The clearest split between them is context and modality. Clef Omni accepts text, image, audio and video as input and has a context window of 65536 tokens. Microsoft-Decision-1 accepts text only and has a context window of 32768 tokens, so Clef Omni has the bigger context of the two. Both emit decisions as their only output modality, so neither returns prose, code or structured payloads in the usual sense; the difference is entirely on the input side and in how much material you can hand over in one call. On price, Microsoft-Decision-1 is the cheaper of the two for input. Output pricing is not meaningfully different between them, so the input side is where the cost gap shows up.
For practical work, the choice usually follows from what your input actually looks like. If your decision depends on a screenshot, a recording, a call audio file or a video clip, Clef Omni is the only one of the two that can take that material directly, and its larger context lets you include more surrounding evidence in the same request. If your input is plain text and fits comfortably inside 32768 tokens, Microsoft-Decision-1 is the cheaper input option and there is no capability you lose by using it, since both are text-capable decisions models with the same output type. Long text-only jobs that exceed the smaller window push you back to Clef Omni regardless of price.
Calling either one through api14 works the same way, because the gateway exposes an OpenAI-compatible API. You point your client at the api14 base URL, send your request to the chat completions endpoint, and set the model field to either "cloudflare/clef-omni" or "microsoft/microsoft-decision-1". Everything else in the request body stays as it is. Switching between the two is a one-line change to the model id, so you can route a request to one model, compare the decision, then reroute the same payload to the other without rewriting your integration.
There are still cases where Microsoft-Decision-1 is the better pick even though Clef Omni is more capable on paper. If your pipeline is text-only, your inputs are short, and you are making a high volume of calls, the cheaper input pricing matters more than modalities you will never use, and the smaller context window is not a constraint. In that situation the extra capability of Clef Omni buys you nothing, and Microsoft-Decision-1 keeps the cost per call down.
Switch with one string
Both models use the same endpoint and request shape. Change the model value from "cloudflare/clef-omni" to "microsoft/microsoft-decision-1" and prompts, streaming and tools keep working.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.post("/decisions", { body: {
"model": "microsoft/microsoft-decision-1",
"state": "Customer: I was charged twice for my order and want my money back.",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this message?",
"criteria": {
"billing": "Payments, refunds, invoices",
"support": "Product questions and bugs",
"sales": "Pricing and new purchases"
}
},
"urgent": {
"type": "noul",
"instructions": "Does this need a reply today?",
"criteria": {
"true": "Money, outage or legal risk",
"false": "Can wait"
}
}
}
} });
console.log(result.answers);
More comparisons
- LiquidAI: d1 Latest vs LiquidAI: d1-ultra Latest
- LiquidAI: d1 Latest vs Baseten: Joey 1
- LiquidAI: d1 Latest vs LiquidAI: d1.1
- LiquidAI: d1 Latest vs Morph: Reflex
- LiquidAI: d1-ultra Latest vs Baseten: Joey 1
- LiquidAI: d1-ultra Latest vs LiquidAI: d1.1
- LiquidAI: d1-ultra Latest vs Morph: Reflex
- Baseten: Joey 1 vs LiquidAI: d1.1