Skip to content
DecisionNodeDecisionNdedocs
  • Guides
  • API reference
  • Examples
  • Playground

start here

  • QuickstartGet startedGet an API key, send one request with three questions, and branch your code on the typed answers. Plain HTTPS, no SDK to install.
  • POST /v1/decideAPI referenceAnswer typed questions about a state and optional images. One request, one buffered JSON response, one answer per question.
  • QuestionsConceptsQuestions say what to decide. Each one has a type that fixes the shape of its answer: a choice from your options, a score on your scale, a…
  • ConfidenceConceptsProbabilities are calibrated per question type, so a threshold means what it says.
  • ImagesConceptsSend images and text in the same request. The model reads printed and handwritten text, amounts, dates, objects and layout, and answers…
  • Pricing and billingYou pay for input tokens only. Output is free because the model generates no text.
↑↓ moveopen6 suggestions
Get API keyGet API key
DecisionNodeDecisionNde

Get started

  • Introduction
  • Quickstart
  • With coding agents
  • Examples

Concepts

  • State
  • Questions
  • Choice
  • Score
  • Truth
  • Number
  • Images
  • Confidence
  • Determinism

Models

  • DecisionNode-1.0
  • DecisionNode-1.0 Flash
  • Limits

Patterns

  • Confidence-gated routing
  • Fan-out
  • Guardrails
  • Control loopscomingcoming soon

API reference

  • POST/v1/decide
  • POST/v1/sessionscomingcoming soon
  • GET/v1/models
  • Errors
  • Rate limits

Pricing and billing

  • Pricing and billing

Policies

  • Responsible use

Migrate

  • Coming from a Jev-shaped API
  • Benchmarks
  • Pricing
  • Playground
Get API key
  • Guides
  • API reference
  • Examples
  • Playground

Get started

  • Introduction
  • Quickstart
  • With coding agents
  • Examples

Concepts

  • State
  • Questions
  • Choice
  • Score
  • Truth
  • Number
  • Images
  • Confidence
  • Determinism

Models

  • DecisionNode-1.0
  • DecisionNode-1.0 Flash
  • Limits

Patterns

  • Confidence-gated routing
  • Fan-out
  • Guardrails
  • Control loopscomingcoming soon

API reference

  • POST/v1/decide
  • POST/v1/sessionscomingcoming soon
  • GET/v1/models
  • Errors
  • Rate limits

Pricing and billing

  • Pricing and billing

Policies

  • Responsible use

Migrate

  • Coming from a Jev-shaped API
  1. docs
  2. /
  3. Concepts

Truth

Is this statement true? One calibrated probability from 0.00 to 1.00 that the statement is true. 0.80 means true about 8 times in 10. Your code picks the cut-off: 0.50 for a plain yes or no, higher when acting on a false yes is costly. It is the simplest type and the one most gates are built on.

on this page4 sections
  1. Request
  2. Response
  3. True or false
  4. Choosing a threshold
Truth“Refund this automatically?”

0.00true

probability the statement is truereads true at 0.50 or more

refunds at 0.80
0.00 false0.501.00 true

truth 0.94label trueyour code acts now

Request#

JSON
{
  "refund": {
    "type": "truth",
    "instructions": "Refund this automatically?",
    "criteria": {
      "true": "Charged twice for the same order, or charged for an order that failed",
      "false": "Any other billing issue, including requests that need more details first"
    }
  }
}
type"truth"required
The question type.
instructionsstring
The statement to test, or a question that is either true or false.
criteriaobject
Optional. criteria.true says what counts as true and criteria.false what counts as false. Use it when the line between them needs drawing; leave it out when the question is plain.

Response#

JSON
{
  "refund": { "type": "truth", "truth": 0.94 }
}

A Truth answer carries only type and truth, rounded to two decimals. There is no separate confidence field: the distance from 0.50 already says how sure the model is. 0.94 is confidently true, 0.06 confidently false, and 0.50 means the model cannot tell.

True or false#

Across DecisionNode (the playground, the console and these docs) a Truth answer is shown as its number followed by true or false: 0.94 true, 0.03 false, 0.61 true. The label is truth with a 0.50 threshold applied: 0.50 or more reads true, anything below reads false. It is a reading aid, not a field. The API returns only the number.

  • What true and false mean is yours to define, in criteria.true and criteria.false on the request. The model answers against those two descriptions.
  • Where your code acts is also yours, and it is usually stricter than 0.50. The refund above acts at 0.80, which is why the card at the top of this page marks that point on the gauge.

Read the number, not the label

0.51 and 0.99 both read true. Branch on truth against a threshold you chose, so a borderline true never triggers the same action as a certain one.

Choosing a threshold#

Pick the threshold from the cost of each mistake. For refunds, a needless refund costs a little money and a missed one can cost the customer, so refund at 0.80 or more, re-check the unsure middle (0.40 to 0.80) with the full model, and reply without a refund below 0.40.

Re-checking only helps after a Flash call

The same request to the same model always returns the same answer. Send the first call to Flash (decisionnode-flash-latest), as the code below does, and re-check the middle with decisionnode-latest. If the first call already used the full model, take the safe path in the middle instead.

Where acting wrongly is expensive, as with an agent's tool call, raise the bar to 0.95 and take the safe action below it. Either way your code decides on its own, the moment the answer lands.

REFUND_AT, RECHECK_FROM = 0.8, 0.4

# first call: decide(ticket, model="decisionnode-flash-latest")
p = answers["refund"]["truth"]
if p >= RECHECK_FROM and p < REFUND_AT:   # the unsure middle: ask the full model
    p = recheck(ticket, model="decisionnode-latest")["refund"]["truth"]

if p >= REFUND_AT:
    issue_refund(ticket)
else:
    reply(ticket, template="no_refund")
previousScorenextNumber

DecisionNode is built and run by Bynn Intelligence, Inc.

  • Home
  • Playground
  • Examples
  • Console
  • Responsible use
  • Terms
  • Acceptable use
  • Privacy
  • Data processing
  • Defence addendum
  • Cookies

on this page

  1. Request
  2. Response
  3. True or false
  4. Choosing a threshold