d1 is a decision model from Liquid AI: instead of writing an answer, it evaluates a situation and returns calibrated probabilities across a fixed set of outcomes — in a single call, with zero generated tokens.
Liquid AI describes decision models as a new class of model purpose-built for structured decisions. A conversational model produces text one token at a time; d1 reads the input in a single forward pass and emits typed values that conform to the question you asked, so your application can branch on them directly instead of parsing prose.
d1 is Liquid AI's first model of this class. On AI/ML API it is served as liquid/d1 through the POST /v1/decisions endpoint.
Noul — a yes/no with a probability
Returns the probability that the answer is “yes”, between 0 and 1. A boolean on a sliding scale: “Is this message spam?” may come back at 0.92. A noul at 0.5 is maximum uncertainty, and says nothing about degree.
Choice — pick one from a set
Returns the selected option key plus a probability distribution over every option, so you see the runner-up as well as the winner. Options are named in criteria, from 2 up to 255 of them.
Score — rate against a rubric
Returns a probability-weighted position on an ordered scale of 2 to 10 defined levels. The value may be fractional — 1.85 sits between “Medium” and “High” — and comes with a probability per level and a legend mapping each index to its description.
Calibrated probabilities, not just a label
Every answer carries a probability or confidence, so code can threshold on certainty and escalate when the model is unsure rather than acting on a bare classification.
One call, many questions
A single request can carry up to 128 questions over the same state, each with its own type, and every key comes back in answers with a typed result.
No output bill
Output is free, and structurally so: with nothing decoded there are no output tokens to count.
d1 reads text only. The content to evaluate is passed as state — a string, a JSON object, or an array of texts — and a request carrying a non-empty images list is refused. The model also does not reason step by step or explain itself: it returns the decision and its probabilities, not a rationale.
Source: https://docs.liquid.ai/lfm/models/decision-models
Measured on the AI/ML API gateway across live traffic. Figures are medians unless stated. Last updated 2026-10-12.
Liquid AI documents d1 for structured decisions: classification and categorization, routing of tickets, emails and requests, scoring and triage, and content moderation. It is also documented for guardrails and safety checks, as a replacement for LLM-as-judge scoring, for approving an agent's tool calls, and for model routing and cascades.
The three primitives map onto those jobs directly. A Choice question buckets input into named categories and returns a probability for each. A Score question rates input against an ordered rubric and returns an expected level your code can compare against a threshold. A Noul question is a yes/no gate where the probability itself is the useful part — a spam check, a personal-data check, an escalation check.
Liquid AI points to language models instead for free-form text generation, creative writing, multi-turn conversation, complex multi-step reasoning, open-ended Q&A, summarization and code generation.
import requests r = requests.post( "https://api.aimlapi.com/v1/decisions", headers={"Authorization": "Bearer " + AIMLAPI_KEY}, json={ "model": "liquid/d1", "state": "Help! My payments have been failing for 3 days.", "questions": { "team": { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Payments, invoicing, refunds", "technical": "Bugs, outages, integrations" } }, "urgent": { "type": "noul", "instructions": "Does this need a reply within the hour?" } } }, ) print(r.json())
const r = await fetch("https://api.aimlapi.com/v1/decisions", { method: "POST", headers: { Authorization: `Bearer ${process.env.AIMLAPI_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ "model": "liquid/d1", "state": "Help! My payments have been failing for 3 days.", "questions": { "team": { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Payments, invoicing, refunds", "technical": "Bugs, outages, integrations" } }, "urgent": { "type": "noul", "instructions": "Does this need a reply within the hour?" } } }), }); console.log(await r.json());
curl -X POST https://api.aimlapi.com/v1/decisions \ -H "Authorization: Bearer $AIMLAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"liquid/d1","state":"Help! My payments have been failing for 3 days.","questions":{"urgent":{"type":"noul","instructions":"Does this need a reply within the hour?"}}}'
OpenAI-compatible — swap the base URL and it works with your existing SDK.
| Type | Price |
|---|---|
| Input | |
| Output | |
d1 reads the request in one forward pass and generates no output tokens, so only input is billed.
Yes. d1 is served under the model id liquid/d1 through the POST /v1/decisions endpoint. Input is billed at $0.0546 per 1M tokens; output is free, because the model generates no output tokens.
Liquid AI describes a decision model as a class of model purpose-built for structured decisions. Instead of generating text token by token, it evaluates a situation and returns calibrated probabilities across a fixed set of outcomes in a single call with zero generated tokens.
Three types, called primitives. Noul is a yes/no question that returns the probability of “yes” between 0 and 1. Choice is a pick-one-from-many question that returns a probability distribution over named options, from 2 up to 255 of them. Score rates the input against an ordered rubric of 2 to 10 defined levels and returns an expected level, which may be fractional, plus a probability for each level.
Because there is nothing to meter. d1 reads the request in a single forward pass and returns typed values rather than decoding text, so no output tokens exist to bill. Only input tokens are charged, at $0.0546 per 1M.
Up to 128. The request takes a questions map of question key to typed question, and every key comes back in answers with its own typed result, so one call can classify, score and gate the same input at once.
No. Decision models read text only: the content to evaluate is passed as state, which may be a string, a JSON object or an array of texts. A request carrying a non-empty images list is refused.
32,768 tokens, covering the state you pass plus the questions and their criteria.
Liquid AI points to free-form text generation, creative writing, multi-turn conversation, complex multi-step reasoning, open-ended Q&A, summarization and code generation. d1 is the right tool when the answer is a structured decision — classification, routing, scoring, triage, moderation, guardrails, LLM-as-judge checks, agent tool-call approval, or model routing and cascades.