Skip to content
DecisionNodeDecisionNde
  • Model
  • Inference
  • Benchmarks
  • Examples
  • Docs
  • Pricing

api all systems normal

Get API keyGet API key
  • dnModelTyped answers, calibrated confidence
  • msInferenceOur own stack and GPUs, answers in ms
  • %BenchmarksAccuracy per suite, with intervals
  • exExamplesBuilds you can start from today
  • /v1DocsQuickstart, API reference, recipes
  • $PricingPay per input token, output is free
examples

Start from a working build.

Eleven requests, ready to run. Every type names its answer: choice (one of your labels), score (a level on your scale), truth (a probability), number (a value on your grid). Every card holds the exact body sent to /v1/decide and the answer it gets back, ready to open in the playground.

Open playgroundOpen playgroundRead the docs
ready to run
11 requests
question types
4 types
Flash, server side
about 5 ms
lessons

Four questions, four answers.

One lesson per question type, each a decision developers automate every day. Each asks one question and shows exactly what comes back: the fields, the numbers and how your code reads them.

comes back
choice
always one of your keys
probabilities
one per option, summing to 1
confidence
how clearly the pick won, 0 to 1
Choice

Name the commit

Give it your options. It picks exactly one and returns a probability for every option.

asked
Stop skipping the last page when the cursor lands on an exact multiple of the page size. Adds a regression test for 100 items at 25 per page.

kind: What kind of change is this commit message describing?

criteria

feat
adds a new capability
fix
corrects wrong behaviour
refactor
restructures code, behaviour unchanged
docs
documentation only
chore
tooling, dependencies or build

fixpicked at 0.86confidence 0.83

  • fix0.86
  • refactor0.05
  • chore0.04
  • feat0.04
  • docs0.01

then your code

confidence 0.83 clears a 0.7 threshold, so the commit is labeled fix and the changelog updates on its own.

comes back
choice
always one of your keys
probabilities
one per option, summing to 1
confidence
how clearly the pick won, 0 to 1
Open in playground: Choice: name the commit
Score

Bug severity

Give it an ordered scale. It returns the expected level and how the probability spreads over every level.

asked
Checkout fails for every customer paying with Apple Pay since this morning's release. The button spins and then shows 'payment declined'. Card payments still work.

severity: How severe is this bug report?

criteria

  1. 0cosmetic
  2. 1minor
  3. 2major
  4. 3blocker

2.60nearest level: blockerconfidence 0.60

  1. 0.00
  2. 0.04
  3. 0.31
  4. 0.65
  1. 0cosmetic
  2. 1minor
  3. 2major
  4. 3blocker
Expected score 2.60 on a scale of 0 to 3, nearest level blocker.
  1. backlog
  2. next sprint
  3. flag off
  4. roll back (what the code does with this answer)

then your code

confidence 0.60 is under 0.7, so the code takes the cautious level, blocker, and rolls the release back on its own.

comes back
score
the expected level, between two levels
probabilities
one per level, low to high
legend
level index back to your words
confidence
how settled the spread is
Open in playground: Score: how severe is this bug report
Truth

Charged twice

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.

asked
Hi, I see two identical charges of $49.00 for order #4471 on the same day. I only placed the order once.

charged_twice: Was the customer charged twice for the same order?

criteria

true
Charged twice for the same order
false
Any other billing issue

0.97trueprobability it is truerefunds at 0.80

falsetrue
00.500.801
What the code does with each answer:
  1. 0.00 to 0.49falseno refund, asks for receipt
  2. 0.50 to 0.79truefull model re-checks it
  3. 0.80 to 1.00truerefunded, reply sent (this answer)

then your code

0.97 clears the 0.80 threshold, so the duplicate charge is refunded and the reply goes out on its own.

comes back
truth
the probability that the statement is true, 0.00 to 1.00: the whole answer
true / false
not a field: truth against 0.50, as shown here
threshold
lives in your code; this one refunds at 0.80
Open in playground: Truth: was the customer charged twice
comes back
number
the most probable value on your grid
expected
the probability-weighted mean; it can fall between values
confidence
the probability of number, 0 to 1
probabilities
every value above 0.001, keyed by the value
Number

Count the cars

One value on a grid you set (min, max and an optional step), with a calibrated probability for every value: the most probable value, the expected value and the confidence.

asked
Drone photo looking straight down on a parking row of ten marked bays: seven cars parked (white, black, silver, navy, red, graphite and champagne) and three empty bays, with a pavement, a lamp post and a grass verge below.
Drone frame over row B4 of the north car park, camera pointing straight down.

cars: How many cars are visible in the image?

grid

  • min0
  • max50
  • step1
  • 51 values, one answer

7most probable valueconfidence 0.77expected 6.97

  1. 0.015: 0.01
  2. 0.126: 0.12
  3. 0.777: 0.77 (the answer)
  4. 0.098: 0.09
  5. 0.019: 0.01
56789
the diamond marks expected 6.97; values outside 5 to 9 are under 0.001, so the answer leaves them out050

then your code

confidence 0.77 clears 0.7, so row B4 is logged at 7 cars and the car park's free-space sign updates on its own.

comes back
number
the most probable value on your grid
expected
the probability-weighted mean; it can fall between values
confidence
the probability of number, 0 to 1
probabilities
every value above 0.001, keyed by the value
Open in playground: Number: count the cars in the frame
builds

Builds you could ship this week.

Seven jobs teams still hand-code with brittle rules or hand to a slow chat model, each answered in one call, and one control loop that streams its decisions. The code acts on every answer the moment it lands.

3 questions, one call

Support inbox that routes itself

Route every ticket, rank how urgent it is and pay back double charges before anyone opens the inbox.

0.94truerefund, clears 0.80

input: webhook: new ticket

Customer: I was charged twice and nobody has replied for 3 days.

answers, one call

  • routeChoice, billing0.87
  • urgencyScore, urgent2.31
  • refundTruth, refunds at 0.800.94 true

then your code

  • Queued with billingif route.choice == "billing"
  • Moved to the front, urgentif urgency.score >= 2
  • Duplicate charge refunded, reply sentif refund.truth >= 0.80

62 input tokens, $2.60 per 1M calls

Open in playground: Support inbox that routes itself

3 questions, one call

Guardrail for agent tool calls

Before an agent runs a tool call, check it is needed and how hard it would be to undo.

block0.83verdict, risk destructive

agent, shell toolchecked before every call

# task: Clear the build cache so the next CI run starts clean.

$ rm -rf ./ && git push --force origin main

blocked before it ranblock 0.83, in scope 0.04 false

$ rm -rf ./node_modules/.cache

re-planned by the agent, checked again

ran on its ownrun 0.96, risk 0.04 (harmless), in scope 0.93 true

> removed 2,184 cached files, 312 MB

$

answers, one call

  • verdictChoice, block0.83
  • riskScore, destructive2.83
  • in_scopeTruth, runs at 0.800.04 false

then your code

block 0.83, risk 2.83 (destructive), needed for the task 0.04 false: the call never runs, and the agent gets it back to plan a narrower one.

123 input tokens, $5.17 per 1M calls

Open in playground: Guardrail for agent tool calls

3 questions, one call

Moderation that acts on every comment

Allow, limit or remove each comment the moment it is posted, with a toxicity level and a promotion check in the same call.

remove0.61action, toxicity harsh

input: new comment onShow HN: a tiny CLI that resizes images in place

account 2 days old, 1 earlier removal

This is useless. Anyone who ships this should quit programming. Check my profile for a REAL tool, 50% off today only.

what the code did

  1. hidden on arrivalremove 0.61, under 0.70
  2. links strippedpromotion 0.88 true, strips at 0.80

link posting off for this account

answers, one call

  • actionChoice, remove0.61
  • toxicityScore, harsh2.01
  • promotionTruth, strips links at 0.800.88 true

then your code

remove 0.61 is under 0.7, so the safe action runs at once: the comment is hidden before anyone replies. Promotion 0.88 true clears 0.80: links stripped.

133 input tokens, $5.59 per 1M calls

Open in playground: Moderation that acts on every comment

5 questions, 1 image, one call

Receipt and invoice checker

Read a receipt photo against the expense claim: total, date, currency and policy, in one call.

input: receipt photo

Photo of a paper receipt from Hallon Bistro, Stockholm, dated 2026-09-28: starters, two mains, a bottle of Riesling and coffee, total 1 315,50 kr.

input: expense claim

employee
M. Okafor
merchant
Hallon Bistro
claimed total
1315.50
currency
SEK
date
2026-09-28
category
client dinner

0.97truetotal matches, pays at 0.90

claim paidwine moved to entertainment

answers, one call

  • total_matchesTruth, pays at 0.900.97 true
  • date_matchesTruth, pays at 0.900.95 true
  • currencyChoice, SEK0.94
  • legibleScore, fully readable1.91
  • alcoholTruth, splits at 0.800.91 true

then your code

total 0.97 true and date 0.95 true both clear 0.90, currency SEK 0.94: the claim is paid. Alcohol 0.91 true moves the wine to the entertainment budget.

394 input tokens, $16.55 per 1M calls

Open in playground: Receipt and invoice checker

3 questions, one call

Lead scoring for new signups

Score each signup from its note and first-week usage, and tell production builds from evaluations.

input: signup

role
Staff engineer
first week
18,240 requests, 5 days
note
40k support emails a day, wants calibrated answers

2.49hotfit, hot

rate limit, set by the answer

new workspace40 req/s
production1,000 req/s

fast track 0.90 true, upgrades at 0.85

answers, one call

  • fitScore, hot2.49
  • intentChoice, production0.78
  • fast_trackTruth, upgrades at 0.850.90 true

then your code

fit 2.49 (hot), production 0.78, fast track 0.90 true: the account moves to production limits and gets the production onboarding email now.

158 input tokens, $6.64 per 1M calls

Open in playground: Lead scoring for new signups

3 questions, 1 image, one call

Listing photo match

Check the photo shows the item the seller describes, and grade its condition from the picture.

0.93truephoto matches, publishes at 0.85

input: listing photo + description

A silver and black vintage rangefinder camera resting on piano keys.

goes live as

Vintage 35mm rangefinder camera

€140

  • verified photo
  • film camera
  • condition: good

answers, one call

  • matchesTruth, publishes at 0.850.93 true
  • itemChoice, film camera0.90
  • conditionScore, good2.10

then your code

match 0.93 true clears 0.85, film camera 0.90, condition good: the listing goes live with a verified photo and a condition tag.

391 input tokens, $16.42 per 1M calls

Open in playground: Listing photo match

3 questions, one call

Statement reader that chases late invoices

Read a customer statement, count what is overdue and how late the oldest is, and send the right reminder on its own.

4(0.84)overdue invoices, acts at 0.70

input: customer statement

account
Norrvik Supply AB (30-4471)
statement date
2026-10-01
terms
net 30, amounts in EUR
Invoice lines on the statement
invoiceissueddueamountstatus
INV-20412026-06-152026-07-151,240.00open
INV-20582026-07-032026-08-02410.00paid 2026-08-01
INV-20632026-07-212026-08-20860.00open
INV-20692026-07-292026-08-28395.00paid 2026-09-02
INV-20772026-08-062026-09-051,120.00part paid, 300.00 open
INV-20812026-08-132026-09-12640.00open
INV-20902026-08-312026-09-30780.00paid 2026-09-29
INV-20942026-09-102026-10-10520.00open
INV-21022026-09-242026-10-24915.00open
firm reminder sent, 4 invoices listed

answers, one call

  • overdueNumber, expected 3.994 (0.84)
  • oldest_daysNumber, expected 78.0878 (0.61)
  • reminderChoice, firm0.76

then your code

4 (0.84) overdue and firm 0.76 both clear 0.7, so the firm reminder goes out today with every open invoice listed. The oldest reads 78 days at 0.61, under 0.7, so the letter says more than 60 days instead of an exact count.

445 input tokens, $18.69 per 1M calls

Open in playground: Statement reader that chases late invoices

2 questions per frame, one open session

comingcoming soon

Survey drone that supervises its own mission

Open one session with the mission brief and two questions, then stream every telemetry frame and get the flight mode and an abort check back for each one.

More than 10 decisions a second?Use a session.

1. open oncePOST /v1/sessions

model
decisionnode-latest
instructions
You are the mission supervisor of a survey drone.
state
mission brief, geofence, rules
questions
mode (choice), abort (truth)
window
8 recent frames

2. then stream framesWebSocket /v1/sessions/{id}/stream

frames in, one decision back for each

  1. frame 15

    battery 0.36, wind 11.0 m/s, home 835 m

    mode: return0.52abort0.08false

  2. frame 16

    battery 0.34, wind 11.2 m/s, home 830 m

    mode: return0.71abort0.08false

  3. frame 17

    battery 0.31, wind 11.4 m/s, home 820 m

    mode: return0.84abort0.07false

aborts at 0.80; below it the mission flies on

then your code

Frame 17 comes back return 0.84, abort 0.07 false. The supervisor hands return-to-home to the drone's flight controller, which flies the route back; the next frames keep checking abort on the way.

latest wins

A client that falls behind gets the newest answer, never a backlog. Earlier on this flight frames 9, 10 and 11 arrived together: only 11 was answered, and the reply reported 9 and 10 as skipped.

billed per frame: its own tokens and the questions asked

Read the sessions docs: Survey drone that supervises its own mission

Your build is one request away.

Every card on this page is the same call with a different state and different questions. Paste this one as it is, then make it yours in the playground and copy it out as curl, Python or TypeScript.

  1. 01Get a keyFrom the console. Prepaid, pay per input token, output is free.
  2. 02Describe the decisionState is any text, JSON or image. Questions are Choice, Score, Truth or Number.
  3. 03Branch on the answerAct above your threshold. Below it, take the safe path or re-check with the full model.
Open playground
the whole integrationPOST /v1/decide
curl https://api.decisionnode.com/v1/decide \  -H "Authorization: Bearer $DECISIONNODE_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "model": "decisionnode-flash-latest",    "state": "Charged twice for order #4471, no reply in 3 days.",    "questions": {      "route": {        "type": "choice",        "criteria": { "billing": "money", "bug": "broken" }      },      "urgency": {        "type": "score",        "criteria": ["routine", "today", "urgent"]      },      "refund": {        "type": "truth",        "criteria": { "true": "Charged twice", "false": "Anything else" }      }    }  }'
DecisionNodeDecisionNde

The decision model, and the inference API that serves it.

one endpoint: POST api.decisionnode.com/v1/decidePOST /v1/decide

start building

Your first decision in minutes.

Make a key, paste one curl, branch on a typed answer. Prepaid, no sales call.

  • api all systems normalapi normal
  • output is always freeoutput always free
  • same request, same answersame request, same answer

DecisionNode is built and run by Bynn Intelligence, Inc.

We train the model and serve it on our own GPUs.

hello@bynn.com

product

  • Model
  • Inference
  • Benchmarks
  • Pricing

developers

  • Docs
  • Quickstart
  • Examples
  • Playground
  • Console

company

  • Contact
  • Security
  • Report abuse
  • Dedicated

legal

  • Terms
  • Acceptable use
  • Privacy
  • Data processing
  • Defence addendum
  • Cookies

© 2026 Bynn Intelligence, Inc.

prices in USD per 1M input tokens