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

Images

Send images and text in the same request. The model reads printed and handwritten text, amounts, dates, objects and layout, and answers through the same question types: choice, score, truth, and number for counts.

on this page3 sections
  1. Sending an image
  2. Encoding a file
  3. What the model reads
images[0] "receipt"

Lumen Bakery

14 Harbour Row

28.09.202612:41
  • 2 x Flat white7.80
  • 1 x Club sandwich12.40
  • 2 x Lunch special28.00

TOTAL EUR48.20

Card **** 4417

thank you

state

claim EUR 48.20, 2026-09-28

  1. matches Truthtotal, currency, date

    0.00true

    approves at 0.900.00 false0.501.00 true

    your code approves the claim

  2. currency Choiceconfidence 0.94

    • EUR0.96
    • USD0.03
    • GBP0.01

input 1,184 tokensoutput 0, free

Does the receipt show the same total, currency and date as the claim? 0.97 true. Which currency is the receipt in? EUR, probability 0.96.

One photo of a receipt and the expense claim it should back up, in one request. matches is a Truth question that compares three fields at once; currency is a Choice read straight off the print. Both are answered from a single read of the image.

Sending an image#

Add an images array next to the state. Each image has an id you choose, a media_type and the bytes as base64 in data, without a data: prefix. Refer to images by id in your instructions when there is more than one.

curl https://api.decisionnode.com/v1/decide \
  -H "Authorization: Bearer $DECISIONNODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "decisionnode-latest",
    "state": {
      "claim": { "amount": 48.2, "currency": "EUR", "date": "2026-09-28" }
    },
    "images": [
      { "id": "receipt", "media_type": "image/jpeg", "data": "<base64>" }
    ],
    "questions": {
      "matches": {
        "type": "truth",
        "instructions": "Does the receipt show the same total, currency and date as the claim?",
        "criteria": {
          "true": "Total, currency and date on the receipt all match the claim",
          "false": "Any of them differs, or the receipt does not show it"
        }
      },
      "currency": {
        "type": "choice",
        "instructions": "Which currency is the receipt in?",
        "criteria": {
          "EUR": "euro",
          "GBP": "pound sterling",
          "USD": "US dollar"
        }
      }
    }
  }'

Image object

idstringrequired
Your name for the image, for example receipt or photo_1.
media_typestringrequired
image/jpeg, image/png or image/webp.
datastringrequired
The image bytes, base64 encoded, with no data: prefix.

Encoding a file#

Read the file's bytes, base64 encode them and put the text in data, with the media_type that matches the file. Each image may be up to 10 MB before encoding; the other limits are on Limits.

import base64, pathlib

raw = pathlib.Path("receipt.jpg").read_bytes()
data = base64.b64encode(raw).decode()
image = {"id": "receipt", "media_type": "image/jpeg", "data": data}

What the model reads#

  • Printed and handwritten text, including totals, dates and reference numbers.
  • Objects and their condition, as in a listing photo.
  • Layout: which number is the total, which line is the date, whether a stamp or signature is present.
  • Several images against each other, such as a photo and the document it should match.
  • How many: cars in a drone frame, items on a shelf, with a Number question.

Images count as input tokens

Images are encoded once with the state and count toward usage.input_tokens and the 64k context. Up to 4 images per request. Downscale large photos before sending; a long side around 1,500 px keeps text legible.

previousNumbernextConfidence

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. Sending an image
  2. Encoding a file
  3. What the model reads