{
"type": "arb_market_update",
"marketId": "mkt_abc123",
"venueEventId": "evt_xyz789",
"arbReturn": 0.05,
"ts": 1710000000000
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}Arb
Subscribe to per-market arb-return updates. Send { action: "subscribe", channel: "arb", marketIds: string[] }. The server echos subscribed marketIds in the subscribed reply. No initial snapshot — updates arrive as arb_market_update messages when the engine detects a change.
{
"type": "arb_market_update",
"marketId": "mkt_abc123",
"venueEventId": "evt_xyz789",
"arbReturn": 0.05,
"ts": 1710000000000
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
]
}App-level auth: pass appId as a query parameter on connect. Required for all connections. The appId must belong to an active app with matching allowed origins.
User-level auth: pass JWT as token query param on connect, or send { action: 'authenticate', token } mid-session. Required for user-specific events (orders, balances). Same JWT as the REST API.
Pushed to clients subscribed to { channel: "arb", marketIds } when the engine detects a new arbReturn value for that market.
Subscribe to aggregated orderbook updates for markets