01 · Typed
Capability · Decisions
A label and a probability, not prose.
Typed decisions from a non-autoregressive model: send a state plus a map of typed questions and get one verdict per question, each with a calibrated probability, out of a single forward pass. Swiss-hosted, general traffic only.
POST /v1/decisions
What you get
Built for regulated workloads
This is what you reach for instead of paying a chat model to act as a classifier. A decision request carries a state — free text or any JSON — plus a map of typed questions, and each question comes back as a label or a number with a calibrated probability and a confidence, from one encoder forward pass. Nothing is generated, so there is no completion to parse, no JSON mode to coax, and the answer to a choice question is always one of the labels you supplied. Served from Switzerland on our own hardware, general (non-PHI) traffic only, and pinned by model rather than picked up by auto traffic in any other region.
02 · Calibrated
A number you can threshold
03 · Batched
One round trip, one pass
04 · Price
Per encoder input token
05 · Swiss
Self-hosted, one region
06 · PHI
General traffic only
Availability & pricing
Where it runs, what it costs
Every route is pinned to a region, PHI stays on resident hosts, and the PHI gate is enforced per call. Prices mirror the live /v1/pricing rate card.
| Region | Provider | Model | Tier | Price |
|---|---|---|---|---|
| CH | Laya | laya-multilingual | General | $0.06 / 1M |
| CH | Laya | laya-english | General | $0.06 / 1M |
| CH | Laya | laya-typed-decisions | General | $0.06 / 1M |
| EU / US / other | — | decisions | No route | no_route |
| Any | — | decisions (PHI) | No route | phi_blocked |
Priced per 1M encoder INPUT tokens. There is no output price because nothing is generated — and because the state is re-encoded once per question, an N-question decision costs roughly N× that state’s tokens. The three checkpoints are the same price; an unpinned call gets the multilingual one. Swiss-hosted, general traffic only. Full rate card at /pricing and GET /v1/pricing.
Try it
A real call, end to end
One state, three typed questions, one round trip. Each answer carries its own probability distribution — nothing is generated, so there is no prose to parse.
Residency & gating
- Switzerland only. The decision provider has exactly one region, so a request with any other X-Region returns no_route (422) rather than being served from somewhere else.
- General traffic only: X-PHI:true returns phi_blocked (403), by construction — the self-hosted host is not a filed PHI sub-processor, and there is no PHI-eligible decision model to fail over to.
- Pin-only by design. No region’s auto traffic for chat, embeddings or any other task can land on a decision model, and a decision request is never answered by a chat model.
- No state, question or answer is ever logged or persisted by the gateway — the same stateless posture as every other endpoint.
Good to know
- · The context window is the budget for ONE question (instructions + options + state): 1,024 tokens on laya-multilingual and laya-typed-decisions, 512 on laya-english, and the laya alias publishes the smallest of its backers (512). A longer state is truncated, not rejected.
- · Caps: 32 questions per decision, 64 options per question, 65,536 characters of state, 64 decisions and 512 questions per HTTP request. A malformed question is rejected with our own 400 naming the question id and field, before it costs a GPU round trip.
- · If the host is saturated it answers 503 upstream_overloaded with Retry-After — nothing was computed and nothing is billed. Retry shortly.
- · A response carries x-phi-input-tokens (the billing unit) and x-phi-questions (informational — how many questions were answered).
curl https://cloudsitus.com/api/v1/decisions \
-H "Authorization: Bearer $PHI_API_KEY" \
-H "X-Region: CH" \
-H "Content-Type: application/json" \
-d '{
"model": "laya",
"state": "Ticket 8812 — I ordered the wrong size and nobody called back.",
"questions": {
"intent": { "type": "choice",
"instructions": "What does the customer want?",
"criteria": { "refund": "wants money back",
"exchange": "wants a different size",
"status": "asking where the order is" } },
"urgency": { "type": "score",
"instructions": "How urgent is this ticket?",
"criteria": ["routine", "reply today", "escalate now"] },
"angry": { "type": "noul", "instructions": "Is the customer angry?" }
}
}'x-phi-routed: laya-multilingual/CH/general
x-phi-input-tokens: 214
x-phi-questions: 3
x-phi-upstream-backend: local
x-phi-cost-micro: 9
{ "answers": {
"intent": { "choice": "exchange", "confidence": 0.7742,
"probabilities": { "refund": 0.2913, "exchange": 0.6482,
"status": 0.0605 } },
"urgency": { "score": 1.4271, "confidence": 0.6218 },
"angry": { "noul": 0.8734, "confidence": 0.8734 } },
"usage": { "input_tokens": 214, "output_tokens": 0 } }Is this a chat model?
Why not just ask an LLM to classify?
Can I use it on protected health information?
What does a yes/no question return?
Why is it billed per input token and not per question?
Which checkpoint answers my call?
Ready when you are
Put decisions in production — without giving up your data.
Spin up a key in minutes. The residency and PHI posture above arrives unchanged.
Prepaid credits from $10 · No subscription · No data retained