Skip to main content
Subscriptions deliver real-time updates over WebSocket. You call subscribe with a list of channel names, and the server streams an update frame each time the underlying data changes.
Subscriptions are WebSocket-only. The subscribe / unsubscribe methods and the notification frames they produce are not available over HTTP POST. See Endpoints for the WebSocket endpoints.

Notification model

A subscription update is a JSON-RPC-style notification frame: it has a method of "subscription" and no id (it is server-pushed, not a reply to any request). The payload carries the channel that produced it and the data:
The shape of data depends on the channel. For the exact per-channel payload schema, see the generated Subscriptions reference under the API Reference tab.

Subscribing

Send a subscribe request with a channels array. The response reports a per-channel status and the connection’s full current_subscriptions set.
Each status entry is "ok", "already subscribed", or an error string for that channel. If every requested channel is invalid, the whole call fails with error code 13000 — Invalid channels. Private channels require an authenticated connection whose session key is authorized for the target subaccount. See Authentication for session login.

Unsubscribing

Send unsubscribe with a channels array to drop specific channels. Omit channels (or pass null) to unsubscribe from all channels on the connection. The response returns the per-channel status and the remaining_subscriptions set.

Channel-name template glossary

Channel names are dot-delimited. Segments in {braces} are parameters you fill in.
The legacy ticker.{instrument_name}.{interval} channel is deprecated — subscribing to it is rejected. Use ticker_slim.* instead.

Public channels

No authentication required.
margin.watch is an all-users firehose of margin and mark-to-market state. It is intended for administrative/monitoring use, not per-account data.

Slim ticker payload

Both the ticker_slim.* channel and public/get_ticker return the same compact snapshot, keyed by single letters to keep the feed small: The public/get_ticker response schema in the API Reference tab carries every field’s full description.

Private channels

Require an authenticated connection. {subaccount_id} channels stream data for one of your subaccounts; {wallet} channels stream data for your wallet.
The Subscriptions reference in the API Reference tab is generated from the AsyncAPI spec and documents the exact data payload for every channel above.