LiquidAI: d1-ultra vs Upstage: Solar Decide
A side-by-side comparison of LiquidAI: d1-ultra ($0.15 / 1M tokens) and Upstage: Solar Decide ($0.18 / 1M tokens) using current USD prices and capabilities from the api14 catalog. Both run through the same OpenAI-compatible API.
Specifications
| LiquidAI: d1-ultra | Upstage: Solar Decide | |
|---|---|---|
| Provider | LiquidAI | Upstage |
| Input | $0.15 / 1M tokens | $0.18 / 1M tokens |
| Cache read | $0.15 / 1M tokens | $0.18 / 1M tokens |
| Context window | 32,768 | 524,288 |
| Max output | 29,491 | 471,859 |
| Input | text, image | text |
| Output | decisions | decisions |
| Tool calling | ||
| Structured output | ||
| Reasoning control | ||
| Added | Oct 15, 2026 | Sep 28, 2026 |
Key differences
- LiquidAI: d1-ultra is 16% cheaper on input tokens.
- Upstage: Solar Decide reads 16.0× more context (524,288 tokens).
- A request with 1,000 input and 500 output tokens costs $0.000147 with LiquidAI: d1-ultra and $0.000175 with Upstage: Solar Decide.
In depth
LiquidAI: d1-ultra is a decisions model from LiquidAI, and Upstage: Solar Decide is a decisions model from Upstage. Both are served through api14 under the same category, so they are aimed at the same broad job: taking an input and returning a decision rather than free form prose. LiquidAI released d1-ultra on 2026-10-15, while Upstage released Solar Decide a little earlier, on 2026-09-28.
The clearest split between them is context and input handling. Solar Decide accepts a much larger context window, 524288 tokens against 32768 for d1-ultra, so it can hold far more material in a single call. d1-ultra is the more flexible on input type: it accepts text and images, while Solar Decide accepts text only. Both return decisions as their output modality, and neither lists any supported parameters, so you should not expect to tune sampling or similar knobs on either. On price, d1-ultra is the cheaper of the two on input; the qualitative data does not distinguish them on output cost, so treat output pricing as about the same.
For day to day work, the choice usually comes down to what you are feeding the model. If your input is a long document, a large log, a big batch of records or anything that would otherwise need chunking, Solar Decide is the natural pick because of its much larger context. If your input includes screenshots, diagrams, scanned pages or any other image alongside text, d1-ultra is the one that can see it, since Solar Decide is text only. When both would work, d1-ultra is the cheaper option on input, which matters if you are sending a lot of tokens through it.
Calling either model through api14 works the same way, because the API is OpenAI compatible. You point your existing client at api14, keep the same request shape you already use, and set the model field to the id you want. Switching between them is a one line change: use "liquid/d1-ultra" for the LiquidAI model and "upstage/solar-decide" for the Upstage model. Nothing else in the request needs to change for a basic text decision call, so you can route between them per request, or run both and compare their decisions on the same input.
There are still cases where the other model wins. If you have picked Solar Decide for its long context but your input turns out to include an image, d1-ultra is the better fit because Solar Decide cannot take images at all. Conversely, if you started with d1-ultra for its image support but your prompt has grown past what its 32768 token window can hold, Solar Decide is the better pick, since it can take the whole thing as text. Neither model exposes supported parameters, so if your workflow depends on passing generation settings, plan around that rather than expecting one of these two to accept them.
Switch with one string
Both models use the same endpoint and request shape. Change the model value from "liquid/d1-ultra" to "upstage/solar-decide" 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": "upstage/solar-decide",
"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