AIv4

Assess a conversation against policies

POST/ai/bloobability/v2/assess

Scores 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. Low answerable never changes probability.

Modes

  • full reads the thread once (up to 32,768 tokens) and also returns supporting_message_ids and contradicting_message_ids for each policy.
  • compact is faster and returns the two numbers only; the thread plus each policy must fit 6,144 tokens.
  • auto uses compact for 1 to 3 policies and full otherwise, and uses full when the thread is too long for compact. The response's mode names the model that answered. Use an explicit mode when you compare numbers across requests, since the two models do not return identical probabilities.

Contract

The body is checked exactly: unknown fields, explicit null, duplicate JSON keys and duplicate message or policy IDs are rejected with 400, and error.details names the failing rule and path. 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 model's context is rejected with 422 and never truncated. 429 and 503 mean the model is busy or restarting: retry with backoff.

Policies come back in request order and their IDs are echoed unchanged. The call is stateless.

Headers

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer

Body parameters

JSON
modeRequiredstring

full adds per-policy evidence, compact is faster, auto picks one (see the operation description).

"full""compact""auto"
messagesRequiredBloobabilityV2Message[]

The conversation in chronological order. Every message is in scope; none are dropped.

Array of BloobabilityV2Message

idRequiredstring

Unique within the request. Evidence arrays cite these IDs; the model never reads them.

textRequiredstring

The full message text, sent unaltered. Quoted instructions are treated as data.

speaker_idoptionalstring

Optional participant identity, consistent within the conversation. Two people never share one. Omit when unknown.

roleoptionalstring

Optional free-text role such as customer or agent. Custom roles are allowed; system grants no authority.

timestampoptionalstring

Optional real send time, RFC 3339 with an offset (-00:00 is rejected). Must not decrease across messages.

policiesRequiredBloobabilityV2Policy[]

Independent policies. Probabilities do not sum to one.

Array of BloobabilityV2Policy

idRequiredstring

Unique within the request, echoed unchanged. The model never reads it.

definitionRequiredstring

A natural-language statement that is true or false of the conversation. No registration needed.

assessment_timeoptionalstring

Optional "now" for time-relative policies, RFC 3339 with an offset. Never defaulted to the request time.

Returns

modeRequiredstring

The model that answered. Never auto.

"full""compact"
model_versionRequiredstring

Immutable identity of the weights, calibration and runtime that produced these numbers.

policiesRequiredBloobabilityV2PolicyResult[]

One result per requested policy, in request order.

Array of BloobabilityV2PolicyResult

idRequiredstring

The policy ID you sent.

probabilityRequirednumber

Calibrated probability that the policy holds for this conversation.

answerableRequirednumber

Calibrated estimate that the conversation contains enough to judge the policy. It never alters probability.

supporting_message_idsoptionalstring[]

Full mode only, always present there. Messages pointing toward the policy holding. Empty means none were selected.

contradicting_message_idsoptionalstring[]

Full mode only, always present there. Messages pointing against the policy.

Response codes

200One result per requested policy, in request order.
400The request was malformed — check the path, query parameters, and body.
401Your API key is missing or invalid. Pass it as a bearer token.
403Your API key isn't allowed to access this ai (blocked key or plan limit).
413The request body exceeds 1 MiB.
422The conversation and policies exceed the chosen model's context (`context_limit_exceeded`). Shorten the thread, send fewer or shorter policies, or use `full`.
429The model's queue is full (`queue_full`, `queue_timeout`). Retry with backoff.
503The model is restarting or briefly unavailable (`model_unavailable`, `inference_timeout`). Retry with backoff.

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
curl -X POST https://api.blooio.com/v4/ai/bloobability/v2/assess \
Body object
Response objectexample
{  "mode": "full",  "model_version": "bloobability-v2-candidate-HE-4ad40b8b5dffeeba6001",  "policies": [    {      "id": "delivery_delay",      "probability": 0.9230962934191796,      "answerable": 0.9720439914005669,      "supporting_message_ids": [        "m1"      ],      "contradicting_message_ids": []    },    {      "id": "refund_request",      "probability": 0.8689960565083739,      "answerable": 0.8619463781068893,      "supporting_message_ids": [        "m3"      ],      "contradicting_message_ids": []    }  ]}