Cloudflare: Clef vs LiquidAI: d1
A side-by-side comparison of Cloudflare: Clef ($0.67 / 1M tokens) and LiquidAI: d1 ($0.07 / 1M tokens) using current USD prices and capabilities from the api14 catalog. Both run through the same OpenAI-compatible API.
Specifications
| Cloudflare: Clef | LiquidAI: d1 | |
|---|---|---|
| Provider | Cloudflare | LiquidAI |
| Input | $0.67 / 1M tokens | $0.07 / 1M tokens |
| Cache read | - | $0.07 / 1M tokens |
| Context window | 65,537 | 65,536 |
| Max output | 58,983 | 58,982 |
| Input | text, image | text, image |
| Output | decisions | decisions |
| Tool calling | ||
| Structured output | ||
| Reasoning control | ||
| Added | Oct 1, 2026 | Oct 1, 2026 |
Key differences
- LiquidAI: d1 is 90% cheaper on input tokens.
- A request with 1,000 input and 500 output tokens costs $0.000672 with Cloudflare: Clef and $0.000070 with LiquidAI: d1.
In depth
Cloudflare: Clef is a model from Cloudflare, and LiquidAI: d1 is a model from LiquidAI. Both are listed on api14 under the decisions category, which tells you what kind of work they are meant for: producing decisions rather than free form chat or long generated text. They were released on the same provider release date, so neither is a newer generation than the other in any way the listing records. If you are choosing between them, you are choosing between two models that occupy the same slot in a pipeline, made by two different vendors.
Their capabilities line up almost exactly. Both accept text and image as input, and both output decisions, so neither one gives you an extra input modality the other lacks. The context windows are effectively the same size, 65537 tokens for Clef and 65536 for d1, a difference of a single token that will not change what you can fit into a prompt. The comparison data records no difference in tool support, structured output support or reasoning behavior, and no difference in output price. The one recorded difference is on input price, where d1 is the cheaper of the two. Nothing in the listing suggests either model is more capable than the other.
For practical selection, treat them as interchangeable on task fit and let cost and vendor preference decide. If your workload sends a lot of input tokens, images plus long documents for instance, d1's cheaper input pricing makes it the more economical default, and since output pricing is about the same, the savings on the input side are not offset elsewhere. If you have an existing relationship with Cloudflare, or you are already routing other Cloudflare models through api14 and want to keep billing and vendor management consolidated, Clef is a reasonable pick and the input price gap is the only thing you give up. For tasks where the input is small and the decision is the whole point, the two are close enough that either will do.
Calling either model through api14 works the same way, because the API is OpenAI compatible. You point your client at the api14 base URL, send your request to the chat completions endpoint in the usual shape, and set the model field. To use Cloudflare: Clef, set the model id to "cloudflare/clef". To use LiquidAI: d1, set it to "liquid/d1". Everything else in the request body stays as it is, so switching between the two is a one line change and you can compare them on your own traffic without rewriting your integration.
There is one case where Clef is still the better pick despite d1 being cheaper on input: when you want to stay within the Cloudflare family of models on api14, for consistency with the rest of your stack or with how your team already handles that vendor. The facts here do not show Clef winning on capability, context or output cost, so vendor preference is the honest reason to choose it rather than any performance claim.
Switch with one string
Both models use the same endpoint and request shape. Change the model value from "cloudflare/clef" to "liquid/d1" 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": "liquid/d1",
"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