███▀█████████████▀████████
██▄ ▄██▀▄ ██ ▄▀██ ▄ ██ ▄▀█
███▄▄██▄▄███▄█▄██▄▄████▄▄█
Docs
Getting startedDatabasesStreamsMachinesReferencePlatform
PricingConsole
← All docs

Streams

OverviewConcepts

Get started

Durable stream (HTTP)

Build

AppendRead and tailSnapshots and retentionJob progress to a web UIRules for streamsRules: writersRules: readersRules: keys and errors

Operate

Manage streamsAccessAPI keys and tokensTroubleshootingTroubleshooting: stream requestsTroubleshooting: Management API

Billing and limits

LimitsPricing

How it works

Delivery guarantees

Internals

Ursula in Tonbo

Rules for streams

Last updated 29 October 2026

View .md

Check your writers and readers against these rules before you rely on them: each one keeps messages from being lost or doubled, keys narrow, or the bill small.

Each rule links to its page, which shows what to send and what not to.

Writers

  • Send producer headers with every append
  • When an answer is lost, send the same request again
  • Give each writer its own producer id, and stop when refused
  • Batch small messages into one append
  • Close a stream when its writer is done, and let runs expire

Readers

  • Keep offsets exactly as the stream returns them
  • Read until the answer is up to date
  • Save a reader’s offset with what it did
  • Reopen a tail from the last offset it gave you
  • Guard against a stream deleted and created again
  • Publish a snapshot, check it, then advance retention

Keys and errors

  • Exchange an Agent’s key before you send it
  • Give each program a key narrowed to its streams
  • Give a web page a token for its streams, never a key
  • Match a refusal’s code, never its message
DocsPricingTerms of ServicePrivacy PolicySign in© Copyright 2024–2026, Tonbo IO Inc.