Decisions

Yes/no, choice and rubric answers about one input, in one call, with how sure.

What it is

Ask yes/no, one-of-a-list and rubric questions about one input: text, a picture, audio, video or a PDF by link. One call answers every question and says how sure it is.

Use it for routing, moderation checks, grading and tool choice when no model needs to write an answer.

One input

input is a string, or up to 50 content parts. A part is text, image, audio, video or document. A picture, a recording, a video or a PDF is a public https link; nothing is uploaded.

{
  "input": [
    { "type": "text", "text": "What is wrong in this screenshot?" },
    { "type": "image", "uri": "https://example.com/error.png", "mime_type": "image/png" }
  ]
}

The three question types

Name each question, say what type it is, and give its instructions. A choice names its options in criteria; a score lists its levels from 0. Every answer carries a confidence from 0 to 1.

Yes or no noul

The probability that the answer is yes, from 0 to 1.

{ "is_spam": {
  "type": "noul", "instructions": "Is this spam?" } }

One of a list choice

The winning option, and a probability for each option.

{ "kind": {
  "type": "choice", "instructions": "What is it?",
  "criteria": { "bug": "Broken.", "idea": "A suggestion." } } }

A rubric level score

A level from 0, and a probability for each level.

{ "severity": {
  "type": "score", "instructions": "How bad?",
  "criteria": ["fine", "minor", "major"] } }

One request, one answer

Send a POST to https://ai.openvibe.services/api/v1/decisions with an OpenVibe token that can make a run, or a person's own token. Up to 1,000 questions and 50 input parts; a choice has 2 to 255 options and a score has 2 to 20 levels. Question names are lowercase letters, digits and _.

prefer is "calibrated" by default. "cheap" asks for the router's cheap structured model first when the input is text.

Request

POST https://ai.openvibe.services/api/v1/decisions
Authorization: Bearer $OPENVIBE_TOKEN
Content-Type: application/json

{
  "input": "The app crashes when I open the settings page.",
  "questions": {
    "is_spam": { "type": "noul", "instructions": "Is this spam?" },
    "kind": { "type": "choice", "instructions": "What is it?", "criteria": { "bug": "Something is broken.", "idea": "A suggestion." } },
    "severity": { "type": "score", "instructions": "How bad is it?", "criteria": ["fine", "minor", "major"] }
  },
  "prefer": "calibrated"
}

Answer

{
  "answers": {
    "is_spam": { "type": "noul", "noul": 0.03, "confidence": 0.97 },
    "kind": { "type": "choice", "choice": "bug", "probabilities": { "bug": 0.94, "idea": 0.06 }, "confidence": 0.94 },
    "severity": { "type": "score", "score": 1.8, "probabilities": { "0": 0.02, "1": 0.16, "2": 0.82 }, "legend": { "0": "fine", "1": "minor", "2": "major" }, "confidence": 0.82 }
  },
  "calibrated": true,
  "receipt": { "provider": "gemini", "model": "gemini-decision-1", "input_tokens": 120, "cost_usd": 0.000012 }
}

Who answers

Google's Decisions API answers when OpenVibe.AI has a Gemini key. Otherwise the router's cheapest structured model answers text, and the answer says calibrated: false.

WhenWho answersWhat you getPrice
A Gemini key is setGoogle's Decisions API (gemini-decision-1)Calibrated. Text, pictures, audio, video and PDFs by link.$0.10 per 1M input tokens. Output is free.
No Gemini key, or Google is awayThe router's cheapest structured modelText only, up to 100 questions. Estimated, and marked calibrated: false.Metered like any request.

Google's free tier may use what it reads to improve its models. Send public or synthetic data only.

Without a Gemini key, pictures, audio, video and PDFs cannot be answered. Every call is metered like any request, and the receipt says which provider and model ran and what it cost.