Skip to main content
Use the WebSocket instead of polling. One signed connection multiplexes the orderbook, public tape, your private feed, oracle ticks, and round lifecycle.

Handshake

Sign a fixed canonical string (empty body):
Send the usual DX-ACCESS-* headers on the upgrade. A bad signature is 401. There is no anonymous WebSocket access — even “public” channels ride an authenticated session.

Subscribe

Global channels (oracle, rounds) and the private user channel omit market_ids. Reply:
Each channel gets its own sid. Data frames carry { sid, seq, type, msg } with seq contiguous from 1 per subscription.
A gap in seq means you lost data. Public channels have no replay. Call update_subscription with action: "get_snapshot" to re-baseline without dropping the subscription.

Complete runnable example

Next