Skip to main content
Market discovery is on OMS. Public market data is on MDS.
Use OMS GET /markets or GET /market/{asset_id} to discover listed markets and book decimals, then use MDS for depth, trades, klines, and tickers.

Raw depth sync

Then open:
Resync loop:

tpluspy parsing

The current SDK exports typed MDS models, not a dedicated public MarketDataClient.

Klines

MDS exposes one fixed kline bucket set by the service, not a selectable interval API. The current service config uses timebar_bucket_size_ms = 1000, so one bucket is one second. REST history is capped at 18000 rows per page and the in-memory retention is 7 days of one-second bars. REST:
WS:
Kline updates are emitted when a bucket closes. The active open bucket is included in ticker 24h stats but is not in the REST kline history until flushed. Kline volume is quote/notional volume: the updater adds trade.price * trade.quantity.

v0 and v1 envelopes

MDS market-data streams send a welcome frame, then bare payloads:
OMS authenticated streams support the v1 envelope when tplus.ws.v1 is present in Sec-WebSocket-Protocol; v0 is the bare payload. See WebSocket streams.

Reconnect

On disconnect, re-fetch the matching REST snapshot before applying new WS messages. MDS streams close on broadcast lag without a resync envelope. OMS v1 streams can send RESYNC_REQUIRED before close code 1013.