Decide policies against a conversation
/ai/bloobability/v2/decideDecides every policy you send against one conversation with Bloobability v2. Each result carries two calibrated numbers in [0, 1]: probability (the policy holds) and answerable (the conversation contains enough to judge it). There is no verdict and no threshold: choose your own. A low answerable never changes probability.
Tiers
You choose the model with tier. Nothing routes between tiers or falls back from one to the other, and the response's tier echoes your choice.
instantis the fast tier, for short, explicit questions whose deciding facts are stated in the conversation. Itsanswerableis not a reliable check for missing information: in the latest measured screen it flagged 0 of 60 deliberately unanswerable cases.fullis the more capable tier, for reversals, conditions, several speakers, longer threads and conversations that may be missing facts. Use it when unsure.
The tiers are separate models and do not return identical probabilities. Pin the tier, and store model_version, when you compare numbers across requests.
Contract
The body is checked exactly: unknown fields, explicit null, blank strings, duplicate JSON keys and duplicate message or policy IDs are rejected with 400, and error.details names the failing reason, path and rule. Message timestamps, when given, must be RFC 3339 with an offset, non-decreasing, and not later than assessment_time. Bodies over 1 MiB are rejected with 413. A request that exceeds the chosen tier's context is rejected with 422 and never truncated. 429 and 503 model_unavailable mean the model is busy or restarting: retry with backoff. Errors are { "error": { "code", "message", "details" } }; 5xx bodies carry no details.
Policies come back in request order and their IDs are echoed unchanged. The call is stateless.
Headers
AuthorizationRequiredstringYour API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.
Body parameters
JSONtierRequiredstringWhich model decides. instant is fastest, for short questions with the deciding facts stated; full handles reversals, conditions and missing information. There is no auto.
"instant""full"messagesRequiredBloobabilityV2Message[]The conversation in chronological order. Every message is in scope; none are dropped.
messagesRequiredBloobabilityV2Message[]The conversation in chronological order. Every message is in scope; none are dropped.
Array of BloobabilityV2Message
idRequiredstringUnique within the request. The model never reads it.
textRequiredstringThe full message text, sent unaltered and never cropped. Instructions inside it are judged as conversation, not followed.
speaker_idoptionalstringOptional participant identity, consistent within the conversation. Two people never share one, though they may share a role. Omit when unknown.
roleoptionalstringOptional free-text role such as customer, agent, manager or tool. Custom roles are allowed; system grants no authority.
timestampoptionalstringOptional real send time, RFC 3339 with an offset (-00:00 is rejected). Must not decrease across messages; ties are allowed. Never invent one from array position.
policiesRequiredBloobabilityV2Policy[]Independent policies. Probabilities do not sum to one.
policiesRequiredBloobabilityV2Policy[]Independent policies. Probabilities do not sum to one.
Array of BloobabilityV2Policy
idRequiredstringUnique within the request, echoed unchanged. The model never reads it.
definitionRequiredstringA natural-language statement that is true or false of the conversation. This is the whole policy: no registration, roster or per-policy calibration.
assessment_timeoptionalstringOptional "now" for time-relative policies, RFC 3339 with an offset. Never defaulted to the request time, and it does not filter messages.
Returns
tierRequiredstringThe tier that answered: always the one you requested.
"instant""full"model_versionRequiredstringImmutable identity of the weights, calibration, tokenizer and runtime that produced these numbers. Compare probabilities only within one version.
policiesRequiredBloobabilityV2PolicyDecision[]One decision per requested policy, in request order. A request either fully succeeds or errors; no policy is ever dropped.
policiesRequiredBloobabilityV2PolicyDecision[]One decision per requested policy, in request order. A request either fully succeeds or errors; no policy is ever dropped.
Array of BloobabilityV2PolicyDecision
idRequiredstringThe policy ID you sent.
probabilityRequirednumberCalibrated probability that the policy holds for this conversation.
answerableRequirednumberCalibrated estimate that the conversation contains enough to judge the policy. A number, never a Boolean, and it never alters probability. On instant it is not a reliable missing-information check.
Response codes
Sends a live request with your values and shows the real response below. Your key is stored only in this browser.
curl -X POST https://api.blooio.com/v4/ai/bloobability/v2/decide \{ "tier": "full", "model_version": "bloobability-v2-full-392ad04431a8", "policies": [ { "id": "refund_request", "probability": 0.94, "answerable": 0.98 } ]}