API Doc
clef-omni
POST /v1/clef-omni/run/
Hosted multimodal decision API (aligned with Cloudflare Workers AI clef-omni). Send a state + typed questions; get probabilities for every option. Upstream Cloudflare tokens never leave our servers — you use a sk_live_ key.
Usage
const res = await fetch("https://clefdemo.com/v1/clef-omni/run/", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CLEF_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "clef-omni",
state: "Checkout has been failing for every customer for the last hour.",
questions: {
urgent: {
type: "noul",
instructions: "Is this support request urgent?",
},
team: {
type: "choice",
instructions: "Which team should handle this request?",
criteria: {
billing: "Payments, invoices, and refunds",
technical: "Outages, errors, and configuration",
sales: "Plans and upgrades",
},
},
severity: {
type: "score",
instructions: "How severe is the customer impact?",
criteria: ["No impact", "Minor", "Major", "Critical"],
},
},
}),
});
const data = await res.json();
// data.answers.urgent / team / severity
console.log(data);Parameters
modelstringrequireddefault: "clef-omni"Model selector: "clef-omni" (default), also accepts "clef" and "clef-flash". Maps to Workers AI @cf/cloudflare/* on our servers.
statestring | object | arrayrequiredContent to evaluate: plain text or structured JSON (records, chat logs, app state). Long text may be truncated to fit context.
questions {}objectrequiredminProperties: 1, maxProperties: 64Map of question id → typed question (noul | choice | score). Ids: letters, digits, _, ., - (max 100). Answers are returned under the same ids.
images []arraymaxItems: 4Optional embedded PNG/JPEG/WebP data URLs (max 4; ≤4 MiB each). Remote URLs are not accepted. Images bill as input tokens.
audio []arraymaxItems: 4Clef-Omni: optional embedded audio data URLs (max 4; ≤8 MiB / 300s each). Combined audio+video decoded ≤16 MiB. Remote URLs not accepted.
videos []arraymaxItems: 2Clef-Omni: optional embedded video data URLs (max 2; ≤16 MiB / 60s each). Remote URLs not accepted.
Authentication
Header: Authorization: Bearer sk_live_…
Create keys in Account. Keys are stored hashed; the plaintext is shown once. Revoked / disabled accounts get 401.
Errors
401unauthorized402paywall — buy credits on Pricing415bad Content-Type (must be application/json)429rate_limit / daily_cap400validation413payload too large502/504upstream / timeout — not charged
Security & anti-abuse
- No anonymous access to /v1 — Bearer key required on every call.
- Per-IP and per-key rate limits (≈40 req/min) plus a daily call cap per key.
- API keys hashed at rest; Cloudflare tokens are never exposed to browsers.
- Body size cap (~12 MiB); media must be embedded data URLs (no remote URL fetch).
- Failed upstream inference does not deduct credits.
- Cache hits are free and do not re-run the model.
Billing
1 credit ≈ 1 input token (including media tokenization). Output probabilities are not billed. Packs start at $5 — see Pricing.
Official model card: developers.cloudflare.com/workers-ai/models/clef-omni. This is an independent demo tool for the Clef model. Not affiliated with Cloudflare. Clef model available under Apache 2.0 license.