Skip to main content
PUT
/
ds
/
{bucket}
/
{stream}
/
snapshot
/
{offset}
curl -X PUT 'https://stream.tonbo.dev/ds/demo/hello/snapshot/000000000000002a' \
  -H 'Content-Type: application/json' \
  --data-binary '{"state": "aggregated snapshot data"}'
Publishes a new snapshot blob at the given offset. The snapshot replaces any previously published snapshot and enables cold storage cleanup of data before this offset.
bucket
string
required
Bucket ID.
stream
string
required
Stream ID.
offset
string
required
The stream offset this snapshot represents.
Content-Type
string
Content type of the snapshot blob. Defaults to application/octet-stream.
body
binary
required
The snapshot blob bytes. Maximum size is enforced by the server.

Response

StatusMeaning
204Snapshot published successfully.
400Invalid offset or content type.
404Stream not found or expired.
409Stale publish (a newer snapshot exists) or offset out of range.
410Snapshot offset is too old (data already garbage-collected).
413Snapshot body exceeds the maximum allowed size.
Response headers include Stream-Next-Offset and Stream-Snapshot-Offset.
curl -X PUT 'https://stream.tonbo.dev/ds/demo/hello/snapshot/000000000000002a' \
  -H 'Content-Type: application/json' \
  --data-binary '{"state": "aggregated snapshot data"}'

Delete snapshot

DELETE /ds/{bucket}/{stream}/snapshot/{offset} Attempting to delete the current visible snapshot is not allowed.
StatusMeaning
404No snapshot at the given offset.
409Cannot delete the current snapshot.
Snapshots are immutable once published. Each publish creates a new blob with a unique key — retries cannot overwrite a committed snapshot. After a snapshot is committed, cold storage chunks before the snapshot offset are automatically cleaned up.