Streaming API overview
The TON Center Streaming API (v2) provides developer access to TON Blockchain through Server-Sent Events (SSE) and WebSockets. It delivers low-latency, real-time updates on transactions and actions observed on the TON blockchain. Clients can subscribe to updates for monitoring a wallet, some contract addresses, or a specific trace of transactions.
Streaming API serves as a real-time, streaming version of the indexed access layer (API v3). Use it when building wallets, explorers, monitoring systems, or automation tools.
Gap recovery
The Streaming API does not recover past events; it only tracks current ones. As such, network interruptions, client restarts, or brief service downtime can cause missed events.
When application state or business logic depends on a complete event sequence, resynchronize with historical data by polling API v3 after reconnecting.
Compatibility with TonAPI
TonAPI exposes compatible Streaming API endpoints for the same SSE and WebSocket protocol. The request fields, event types, and finality model documented on this page also apply there.
Authentication uses a Ton Console API key.
Event groups
The Streaming API emits the following event groups:
- Trace-based events:
transactions,actions,trace - State updates:
account_state_changeandjettons_change - Invalidation signal:
trace_invalidated
The event types section and notification schemas section provide the exact payload structure for each event.
Finality model
Trace-based events carry a finality field according to their finality level:
"finality": "pending" | "confirmed" | "finalized"Each trace moves through the following monotonic lifecycle:
pending— result of emulation or speculative execution. This state can be invalidated (trace_invalidated).confirmed— trace or transactions are included in a candidate shard block. Rollback chance is very small, but still possible.finalized— committed in the masterchain and will not be updated nor invalidated.
Non-trace events behave differently:
account_state_changeandjettons_changeare emitted only whenfinalityfield is set to eitherconfirmedorfinalized.trace_invalidatedapplies to previously emitted trace-based data and is not emitted afterfinalized.
Delivery behavior
The min_finality field is used to control how early the server emits trace-based updates:
pending— receive every trace snapshot as it moves frompendingtoconfirmedtofinalized.confirmed— skip pure emulation results and start atconfirmedor later.finalized— receive only finalized trace-based events.
Choose the setting based on the tolerance for speculative data:
- Use
pendingfor the lowest latency. - Use
confirmedfor lower rollback risk with near-real-time delivery. - Use
finalizedwhen only settled data is acceptable.
The delivery semantics section and event invalidation section document the exact behavior for each event type.
Supported interfaces
The Streaming API exposes two transports: SSE and a WebSocket. Choose either of the transports to proceed with its usage:
SSE: Server-Sent Events
Recommended for browser environments or clients that prefer HTTP streaming and a fixed subscription.
WebSocket
Preferred for persistent, bidirectional communication with dynamic subscription patterns.
See also
Last updated on