{
"type": "trade",
"outcomeId": "clv2abc123def456",
"channel": "orderbook",
"venue": "polymarket",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000,
"tradeId": "string"
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
],
"id": "string"
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
],
"id": "string"
}Trades
{
"type": "trade",
"outcomeId": "clv2abc123def456",
"channel": "orderbook",
"venue": "polymarket",
"side": "buy",
"price": 0.55,
"size": 100,
"timestamp": 1710000000000,
"tradeId": "string"
}{
"action": "subscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
],
"id": "string"
}{
"action": "unsubscribe",
"channel": "orderbook",
"outcomeIds": [
"clv2abc123def456",
"clv2xyz789ghi012"
],
"id": "string"
}App-level auth: pass appId as a query parameter on connect. Required for all connections. Browsers are admitted by an Origin on the app's allowed origins; servers by the apiKey scheme instead.
Optional server-to-server auth on the handshake; any supplied key must be valid and replaces the Origin check. Without a key, an allowed Origin is required even when the app has requireApiKey for REST. WebSocket key enforcement is currently deferred. Needed for the app-events channel and for the firehose channel on the orderbook socket. Never send from a browser.
User-level auth: send { action: 'authenticate', token } after connected (a token query param still works but is deprecated). Required for user-specific events (orders, balances). Same JWT as the REST API.
Public trade event from a venue
Subscribe to aggregated orderbook updates for markets