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, nothing to install.
  • POST /v1/decideAPI referenceAnswer typed questions about a state, optional images and video frames. 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 on the data we measure.
  • ImagesConceptsSend up to 16 images and text in the same request. The model reads printed and handwritten text, amounts, dates, objects and layout, and…
  • 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
  • CLI
  • Playground
  • Console and keys
  • With coding agents
  • MCP server
  • Examples

Concepts

  • State
  • Questions
  • Choice
  • Score
  • Truth
  • Number
  • Points and boxes
  • Images
  • Video
  • Boosters
  • Collections
  • Confidence
  • Determinism
  • API keys

Models

  • DecisionNode MoE
  • DecisionNode Flash
  • Limits
  • Versions
  • Dedicated capacity

Fine-tuning

  • Overview
  • Prepare your dataset
  • Upload and validation
  • Start a training run
  • Watch a run
  • The quality gate
  • Use your model
  • Limits and pricing

Patterns

  • Confidence-gated routing
  • Fan-out
  • Guardrails
  • Control loops

Integrations

  • Home Assistant
  • MQTT bridge
  • ROS 2

API reference

  • Overview
  • POST/v1/decide
  • GET/v1/models
  • POST/v1/uploads
  • Errors
  • Safety check
  • Rate limits

Sessions API

  • Sessions overview
  • POSTOpen a session
  • WSStream frames
  • DELEnd a session

Collections API

  • Overview
  • POSTCreate a collection
  • GETList collections
  • GETRetrieve a collection
  • DELDelete a collection
  • POSTEnroll a face
  • GETList items
  • PATCHUpdate an item
  • DELDelete an item

Pricing and billing

  • Pricing and billing
  • Refer & earn

Policies

  • Responsible use
  • Data and privacy
  • Benchmarks
  • Pricing
  • Playground
Get API key
  • Guides
  • API reference
  • Examples
  • Playground

Get started

  • Introduction
  • Quickstart
  • CLI
  • Playground
  • Console and keys
  • With coding agents
  • MCP server
  • Examples

Concepts

  • State
  • Questions
  • Choice
  • Score
  • Truth
  • Number
  • Points and boxes
  • Images
  • Video
  • Boosters
  • Collections
  • Confidence
  • Determinism
  • API keys

Models

  • DecisionNode MoE
  • DecisionNode Flash
  • Limits
  • Versions
  • Dedicated capacity

Fine-tuning

  • Overview
  • Prepare your dataset
  • Upload and validation
  • Start a training run
  • Watch a run
  • The quality gate
  • Use your model
  • Limits and pricing

Patterns

  • Confidence-gated routing
  • Fan-out
  • Guardrails
  • Control loops

Integrations

  • Home Assistant
  • MQTT bridge
  • ROS 2

API reference

  • Overview
  • POST/v1/decide
  • GET/v1/models
  • POST/v1/uploads
  • Errors
  • Safety check
  • Rate limits

Sessions API

  • Sessions overview
  • POSTOpen a session
  • WSStream frames
  • DELEnd a session

Collections API

  • Overview
  • POSTCreate a collection
  • GETList collections
  • GETRetrieve a collection
  • DELDelete a collection
  • POSTEnroll a face
  • GETList items
  • PATCHUpdate an item
  • DELDelete an item

Pricing and billing

  • Pricing and billing
  • Refer & earn

Policies

  • Responsible use
  • Data and privacy
  1. docs
  2. /
  3. Concepts

API keys

Two kinds of API key: Full access for your servers, and Decisions only for devices and services that only decide. What each may call, and why every device gets a key of its own.

on this page5 sections
  1. Which kind to use
  2. Why every device gets its own key
  3. A key's settings
  4. What a key's kind refuses
  5. A key's kind never changes

Every call carries a key, and the key's kind decides what the call may do. Choose the narrowest kind that does the job: a key on a device or in a web page can be copied, and a copied key does whatever its kind allows until you revoke it.

  • Full access

    scope
    full
    May call
    Everything the workspace may: decisions, models, uploads, sessions, and collections
    Where it belongs
    Your servers, in a secret manager or an environment variable
  • Decisions only

    scope
    decide
    May call
    POST /v1/decide and GET /v1/models; a face search only where the key allows it
    Where it belongs
    One per device, app install or service that only decides
The two kinds
KindscopeMay callWhere it belongs
Full accessfullEverything the workspace may: decisions, models, uploads, sessions, and collectionsYour servers, in a secret manager or an environment variable
Decisions onlydecidePOST /v1/decide and GET /v1/models; a face search only where the key allows itOne per device, app install or service that only decides

Keys are made in the console under API keys, by an Owner, Admin or Developer: choose Full access (the default) or Decisions only under What this key can do. A key with no kind chosen is Full access.

Which kind to use#

  • A service of yours that does more than decide (sessions, collections)

    Use
    Full access, kept on the server
  • A service of yours that only decides

    Use
    Decisions only: the same answers, and much less to lose if it leaks
  • A fleet of devices: cameras, kiosks, robots, vehicles

    Use
    One Decisions-only key per device, named after it, with its own rate limits
  • A web page with your own server behind it

    Use
    Your server calls DecisionNode with its key; the page calls your server
Which kind to use
Where the call comes fromUse
A service of yours that does more than decide (sessions, collections)Full access, kept on the server
A service of yours that only decidesDecisions only: the same answers, and much less to lose if it leaks
A fleet of devices: cameras, kiosks, robots, vehiclesOne Decisions-only key per device, named after it, with its own rate limits
A web page with your own server behind itYour server calls DecisionNode with its key; the page calls your server

Why every device gets its own key#

  • A device can be lost, opened or copied. Its key is only as safe as its storage. With a key per device, one lost device is one revoked key, and every other device keeps working.
  • Never a Full access key on a device or in a browser. A full key reads, changes and deletes your collections, starts sessions, and spends at the workspace's rate. Copied from one device, it is all of that for whoever has it.
  • Bound what a key can do. A Decisions-only key only decides, and carries its own rate limits, so a copied key can neither touch your collections nor spend at the workspace's rate.
  • Images go inline. A Decisions-only key cannot make uploads (POST /v1/uploads is 403 key_scope_denied), so a device sends its pictures inline or by url in the decision, up to 25 MiB a request.

A key's settings#

  • Face search is opt-in. A Decisions-only key cannot use the face_recognition booster unless you tick May search your face collections when you create it or edit it (may_search_collections). Anyone holding such a key can search your collections and read the matches, so tick it only for a device that runs face recognition. A Full access key always may.
  • Its own rate limits. Under Rate limits (optional), set the key's own Requests per second and Tokens per second, each a whole number from 1 to your workspace's own. Left empty, the workspace's limit applies. Over them, 429 rate_limit_error with Retry-After, as for any key.

What a key's kind refuses#

A call outside a key's kind is 403 key_scope_denied, before anything runs or is billed: "This key may only make decisions." for a route the kind does not reach, such as an upload, a session or a collection, and "This key may not search collections." for a face_recognition booster on a key without the search allowed.

The 403
{
  "detail": {
    "error_type": "key_scope_denied",
    "message": "This key may only make decisions."
  }
}

A key's kind never changes#

A key's kind is set when it is made. Its name, its rate limits and the face search flag can be changed later; its kind cannot: "A key's scope is set when it is created. To change it, create a new key and revoke this one."

Your existing keys are Full access

Every key made before the key kinds is a Full access key and keeps working exactly as before. Nothing changes until you make a key of another kind.

previousDeterminismnextDecisionNode MoE

DecisionNode is built and run by Bynn Intelligence, Inc.

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

on this page

  1. Which kind to use
  2. Why every device gets its own key
  3. A key's settings
  4. What a key's kind refuses
  5. A key's kind never changes