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…
  • Batch jobsPatternsSend up to 10,000 requests in one file and collect the answers later, at half the live price.
  • Pricing and billingYou pay for input tokens only. Output is free because the model generates no text.
↑↓ moveopen7 suggestions
Get API keyGet API key
DecisionNodeDecisionNde

Get started

  • Introduction
  • Quickstart
  • Playground
  • Console and keys
  • With coding agents
  • Examples

Concepts

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

Models

  • DecisionNode-1.0
  • DecisionNode-1.0 Flash
  • Limits
  • Versions
  • Dedicated capacity

Patterns

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

API reference

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

Sessions API

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

Batch API

  • The batch object
  • POSTCreate a batch
  • POSTAdd requests
  • POSTFinalize a batch
  • GETRetrieve a batch
  • GETGet batch results
  • POSTCancel a batch
  • GETList batches

Pricing and billing

  • Pricing and billing

Policies

  • Responsible use
  • Data and privacy

Migrate

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

Get started

  • Introduction
  • Quickstart
  • Playground
  • Console and keys
  • With coding agents
  • Examples

Concepts

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

Models

  • DecisionNode-1.0
  • DecisionNode-1.0 Flash
  • Limits
  • Versions
  • Dedicated capacity

Patterns

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

API reference

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

Sessions API

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

Batch API

  • The batch object
  • POSTCreate a batch
  • POSTAdd requests
  • POSTFinalize a batch
  • GETRetrieve a batch
  • GETGet batch results
  • POSTCancel a batch
  • GETList batches

Pricing and billing

  • Pricing and billing

Policies

  • Responsible use
  • Data and privacy

Migrate

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

Add requests

Add requests to a batch in state draft, up to 10 MiB a call. Call it as often as you need, then finalize.

on this page7 sections
  1. Authentication
  2. Path parameters
  3. Request body
  4. Response
  5. Errors
  6. Limits
  7. Notes
POSThttps://api.decisionnode.com/v1/batches/{id}/requests
API=https://api.decisionnode.com/v1
BATCH=batch_01J9ZB8Q3T

curl "$API/batches/$BATCH/requests" \
  -H "Authorization: Bearer $DECISIONNODE_API_KEY" \
  -H "Content-Type: application/x-ndjson" \
  --data-binary @more.jsonl

Authentication#

Authorizationheaderrequired
Bearer dn_live_..., the same key as every call. A batch belongs to the key that created it: other keys, even in the same workspace, get 404 for it.
Content-Typeheaderrequired
application/x-ndjson or application/json, as on create.

Path parameters#

idstringrequired
The batch id that Create a batch returned, for example batch_01J9ZB8Q3T.

Request body#

The same format as Create a batch: JSON Lines or a JSON array of requests, each with a custom_id unique across the whole batch, not only this call.

Response#

200 OK with the batch object, still a draft, its counters including the new lines.

200 OK
{
  "id": "batch_01J9ZB8Q3T",
  "state": "draft",
  "counters": {
    "requests": 3,
    "queued": 0,
    "in_progress": 0,
    "completed": 0,
    "failed": 0,
    "expired": 0,
    "cancelled": 0
  },
  "created_at": "2026-10-06T09:12:04Z",
  "finalized_at": null,
  "expires_at": null,
  "ended_at": null,
  "results_url": null,
  "results_expire_at": null,
  "price_factor": 0.5,
  "usage": { "input_tokens": 0, "output_tokens": 0 },
  "error": null
}
  1. Authentication
  2. Path parameters
  3. Request body
  4. Response
  5. Errors
  6. Limits
  7. Notes
request
API=https://api.decisionnode.com/v1BATCH=batch_01J9ZB8Q3Tcurl "$API/batches/$BATCH/requests" \  -H "Authorization: Bearer $DECISIONNODE_API_KEY" \  -H "Content-Type: application/x-ndjson" \  --data-binary @more.jsonl

Errors#

  • 400

    Type
    api_usage_error
    When
    The body cannot be read; a custom_id is missing, too long or already in the batch; the batch would pass 10,000 requests
    What to do
    Fix the call and send it again. Nothing from it was added
  • 401

    Type
    authentication_error
    When
    The key is missing, unknown or revoked
    What to do
    Check the Authorization header
  • 404

    Type
    not_found_error
    When
    No batch with this id belongs to your key
    What to do
    Check the id and that you call with the key that created the batch
  • 409

    Type
    invalid_batch_state
    When
    The batch is no longer a draft: it was finalized or cancelled
    What to do
    Create a new batch for more requests
  • 413

    Type
    request_too_large_error
    When
    The call is over 10 MiB, or the batch would pass 256 MB
    What to do
    Send smaller calls, or start a second batch
  • 429

    Type
    batch_limit_exceeded
    When
    The call would put more than 100,000 requests in your key's active batches, drafts included
    What to do
    Wait for a batch to end, or cancel a draft you will not finalize. Nothing from the call was applied
  • 429

    Type
    rate_limit_error
    When
    Over your request rate: batch calls count against it
    What to do
    Wait Retry-After seconds, then send the same call again
  • 500

    Type
    api_error
    When
    A fault on our side
    What to do
    Retry with backoff and jitter. A 5xx can come after the call took effect: before you create again, cancel any draft the failed create left behind (see Batch errors)
  • 529

    Type
    overloaded_error
    When
    The API cannot take the call right now
    What to do
    Wait Retry-After seconds, then retry with backoff
Errors this endpoint returns
StatusTypeWhenWhat to do
400api_usage_errorThe body cannot be read; a custom_id is missing, too long or already in the batch; the batch would pass 10,000 requestsFix the call and send it again. Nothing from it was added
401authentication_errorThe key is missing, unknown or revokedCheck the Authorization header
404not_found_errorNo batch with this id belongs to your keyCheck the id and that you call with the key that created the batch
409invalid_batch_stateThe batch is no longer a draft: it was finalized or cancelledCreate a new batch for more requests
413request_too_large_errorThe call is over 10 MiB, or the batch would pass 256 MBSend smaller calls, or start a second batch
429batch_limit_exceededThe call would put more than 100,000 requests in your key's active batches, drafts includedWait for a batch to end, or cancel a draft you will not finalize. Nothing from the call was applied
429rate_limit_errorOver your request rate: batch calls count against itWait Retry-After seconds, then send the same call again
500api_errorA fault on our sideRetry with backoff and jitter. A 5xx can come after the call took effect: before you create again, cancel any draft the failed create left behind (see Batch errors)
529overloaded_errorThe API cannot take the call right nowWait Retry-After seconds, then retry with backoff

Every error body is {"detail": {"error_type": "...", "message": "..."}}. Retry 408, 429 (rate_limit_error), 529 and any 5xx, waiting at least what Retry-After says when it is set; fix the call for the other 4xx. A 429 batch_limit_exceeded clears only when a batch ends or you cancel one. All the bodies are on Errors.

Limits#

  • One call

    Value
    10 MiB
  • The batch

    Value
    10,000 requests and 256 MB in all
  • Requests in active batches per key

    Value
    100,000, drafts included, checked on this call
Limits that apply to this call
LimitValue
One call10 MiB
The batch10,000 requests and 256 MB in all
Requests in active batches per key100,000, drafts included, checked on this call

Notes#

  • A call is all or nothing: if it is refused, none of its lines were added, so you can resend it whole.
  • If a call times out, retrieve the batch and compare counters.requests with what you sent before you resend: a custom_id already in the batch is refused, which keeps a resent call from adding lines twice.
previousCreate a batchnextFinalize a batch

DecisionNode is built and run by Bynn Intelligence, Inc.

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