Read market data and streams
Read venue markets, depth, trades, candles, and the ticker through the v2 API, and consume the live market-data stream with sequence-gap resynchronization.
The Trading Venue exposes its market data through versioned v2 routes: the markets list, a sequence-numbered depth snapshot, recent trades, OHLC candles, and a trailing 24-hour ticker, plus a live stream for Console-style clients. Every read is safe to repeat. Amounts and prices are integer strings in token base units and price ticks; convert with the market's tickSize and lotSize.
Prerequisites
- An API key with an active organization, or an authenticated session.
- A market id from the markets list. Every market-data read is scoped to the active organization.
List and read markets
curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets" \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"{
"data": [
{
"id": "0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c",
"venueAddress": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",
"baseTokenAddress": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
"quoteTokenAddress": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
"tickSize": "1000000",
"lotSize": "1000000000000000000",
"minNotional": "100000000",
"makerFeeBps": 10,
"takerFeeBps": 20,
"protectionBandBps": 500,
"status": "live",
"createdAt": "2026-08-01T09:00:00.000Z"
}
],
"meta": { "total": 1 },
"links": { "self": "/v2/addons/trading-venue-markets" }
}The list includes every market in the active organization, halted and pending listings included. status is pending (a listing ceremony still missing a precondition), live, halted, or delisted. GET /api/v2/addons/trading-venue-markets/{marketId} returns one market.
Read the depth snapshot
curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/book" \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"{
"data": {
"marketId": "0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c",
"sequence": "42",
"bids": [{ "priceTick": "1010", "quantity": "5000000000000000000", "orderCount": 2 }],
"asks": [{ "priceTick": "1012", "quantity": "3000000000000000000", "orderCount": 1 }],
"lastTradeTick": "1011",
"asOf": "2026-08-01T09:00:00.000Z"
},
"links": { "self": "/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/book" }
}Levels are aggregated, best price first. sequence is the engine log position the snapshot reflects; use it to order snapshots and to detect a gapped stream. Depth includes only working orders: an order pending its reservation is not shown.
Read trades, candles, and the ticker
curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/trades?limit=100" \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"Trades return newest first, capped by limit (1 to 500, default 100). Each trade carries its engine sequence, priceTick, base quantity, and executedAt.
curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/candles?interval=1m" \
-H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"Candles aggregate one interval per request: 1m, 5m, 15m, 1h, 4h, or 1d. Buckets return oldest first with open, high, low, close in price ticks, volume in base units, and tradeCount.
GET /api/v2/addons/trading-venue-markets/{marketId}/ticker returns the trailing 24-hour statistics: lastTradeTick, openTick, highTick, lowTick, baseVolume, tradeCount, and asOf. Tick fields are null before the first trade in the window.
Consume the live stream
GET /api/v2/addons/trading-venue-markets/{marketId}/stream serves server-sent events. The first event is a full sequence-numbered depth snapshot; later events carry depth diffs, trade batches, heartbeats, or a terminal error.
event: message
data: {"type":"snapshot","snapshot":{"marketId":"0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c","sequence":"42","lastTradeTick":"1011","bids":[{"priceTick":"1010","quantity":"5000000000000000000"}],"asks":[{"priceTick":"1012","quantity":"3000000000000000000"}],"asOf":"2026-08-01T09:00:00.000Z"}}
event: message
data: {"type":"diff","diff":{"marketId":"0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c","fromSequence":"42","toSequence":"43","lastTradeTick":"1011","bids":[{"priceTick":"1010","quantity":"0"}],"asks":[],"asOf":"2026-08-01T09:00:05.000Z"}}
event: message
data: {"type":"heartbeat","sequence":"43"}Apply the events in order:
snapshotreplaces your whole local book.diffapplies on top of the sequence named byfromSequence. A level withquantity"0"is removed. IffromSequencedoes not match your current sequence, you missed events: reconnect for a fresh snapshot instead of rendering stale depth.tradescarries a batch of fills with their sequences.indicativecarries the live indicative auction price and matchable quantity during preopen and auction collection; see Trade through sessions and auctions.heartbeatconfirms the connection while the book is quiet.erroris terminal; reconnect.
Events key on the engine log sequence, not on trades, so preopen book changes stream without any trade occurring. Snapshots and diffs also carry indicativePriceTick and indicativeQuantity, null outside auction phases. Trade lists and the blotter carry a status per trade: settled, or busted after an operator-approved compensating reversal, with candles and the ticker recomputed excluding busted trades.
The stream is consumed same-origin by the Console, and a request from another origin answers 404. For a server-to-server integration, poll the depth snapshot and trades endpoints and use sequence to order the results. Design any stream client to fall back to the snapshot poll when the connection ends.
Read participant data
Three reads are additionally scoped to the selected participant:
| Route | Returns |
|---|---|
GET /api/v2/addons/trading-venue-orders | Working orders for wallets the participant controls, filterable by marketId and status. |
GET /api/v2/addons/trading-venue-blotter | The trade blotter: fills newest first, with the participant's side and fee per fill, filterable by marketId. |
GET /api/v2/addons/trading-venue-reservations | Reserved balances backing the participant's open orders, per wallet and token. |
Related
- Place and cancel orders for the signed-order integration path.
- Trading venue order lifecycle for how depth, fills, and reservations relate.
- Transaction tracking for polling queued writes.
How to quote in bulk on the Trading Venue
Place, replace, and cancel signed orders in one batch with per-order failure isolation and net-delta reservations, so a flat two-sided re-quote emits no chain transactions.
How to track transaction status
Understand DALP transaction finality, indexer visibility, and safe retry behavior.