Cloudflare
Clairic
cloudflare/clairic
Clairic is Cloudflare's System One-style extraction model served on Workers AI. Given a text state and optional images plus a schema of typed fields, it extracts, computes, estimates, and forecasts...
RoleReturns probabilities for your questions, not a paragraph.
$0.100
In / M
Free
Out / M
66K
Context
- AA intelligence index
- Not on listing
- Inputs
- text, image
- Outputs
- decisions
- Tools
- Not listed
- Structured output
- Not listed
- Reasoning
- Not listed
- Weights
- Open · Cloudflare/clairic
- Listed
- Nov 3, 2026
01 · What it's good at
Use it for this.
Three jobs this model is built for, and the ones to give to something else.
01
Routing, moderation, grading, and scoring inside software
Skip it for
- Writing, chat, code, or open-ended explanations
02 · Example tasks
What you'd actually send it.
Real inputs, not a benchmark. Paste one into the snippet below to try it.
You send
State: ticket text. Questions: noul 'needs a human', choice of team.
Why this model
Decision models return probabilities.
03 · Your stack
Where it sits: Gate & route.
You send content and typed questions (yes/no, pick one, score a rubric). You get probabilities. Your code applies a threshold.
Layer 01
Retrieve
Layer 02
Plan & reason
Layer 03
Do the volume
Layer 04 · this model
Gate & route
Layer 05
Draw, speak, listen
04 · Wire it up
One request. Paste and run.
Uses OpenRouter, so one key works for every model on this site. Set OPENROUTER_API_KEY and swap the prompt for one of the tasks above.
const res = await fetch("https://openrouter.ai/api/alpha/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "cloudflare/clairic",
"state": {
"ticket": "I was charged twice this month."
},
"questions": {
"needs_human": {
"type": "noul",
"instructions": "Does this ticket need a human?"
}
}
}),
});
if (!res.ok) throw new Error(`Decisions ${res.status}: ${await res.text()}`);
const { answers } = await res.json();
// A noul answer is the probability of "yes". Your code picks the thresholds.
const p = answers.needs_human.noul;
if (p >= 0.9) console.log("yes");
else if (p <= 0.1) console.log("no");
else console.log("send to a human", p);
Decisions is an alpha endpoint on OpenRouter. The TypeScript SDK exposes it as openRouter.alpha.decisions.create().
05 · Watch out for
Gotchas.
This lesson is generated from the model type and the live listing. It has not been hand-reviewed yet.
Check the listing for supported parameters before you rely on tools or structured output.
Sources
Lessons are written from each model's listing and the linked docs. We don't publish our own benchmark numbers; the index above is Artificial Analysis, as shown on OpenRouter.