Connect to the Polymarket WebSocket for real-time price, orderbook, and trade updates.
Connect to the WebSocket endpoint:
Code sample:
const ws = new WebSocket('wss://api.delphiterminal.co/ws/poly');Once connected, send a JSON message to subscribe to Polymarket data using their condition_id:
Code sample:
{ "action": "subscribe", "condition_ids": ["0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707"], "message_types": ["prices", "orderbook", "trades"]}| Field | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | subscribe or unsubscribe |
| condition_ids | array | Yes | Array of Polymarket condition identifiers (hex strings starting with 0x) |
| message_types | array | No | ["prices"], ["orderbook"], ["trades"], or any combination. Defaults to prices and orderbook if omitted |
Code sample:
{ "action": "unsubscribe", "condition_ids": ["0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707"]}Real-time price updates for subscribed markets:
Code sample:
{ "type": "prices", "data": { "exchange": "poly", "condition_id": "0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707", "price": 0.992, "last_update": "2026-02-04T15:30:00Z" }}Real-time orderbook snapshots for subscribed markets:
Code sample:
{ "type": "orderbook", "data": { "snapshot_time": "2026-02-04T15:30:00Z", "exchange": "poly", "market_id": "0x1234abcd5678efgh", "condition_id": "0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707", "bid_side": [0.55, 0.54, 0.53, 0.52, 0.51], "ask_side": [0.56, 0.57, 0.58, 0.59, 0.60], "original_last_update": "2026-02-04T15:29:59Z" }}Real-time trade executions for subscribed markets:
Code sample:
{ "type": "trades", "data": { "exchange": "poly", "condition_id": "0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707", "token_id": "0x123...", "market_id": "0xabc...", "price": 0.65, "size": 100.5, "side": "buy", "last_update": "2026-02-04T15:30:00Z" }}Code sample:
const ws = new WebSocket('wss://api.delphiterminal.co/ws/poly');ws.onopen = () => { console.log('Connected to Polymarket WebSocket'); // Subscribe to markets ws.send(JSON.stringify({ action: 'subscribe', condition_ids: ['0x00000977017fa72fb6b1908ae694000d3b51f442c2552656b10bdbbfd16ff707'], message_types: ['prices', 'orderbook', 'trades'] }));};ws.onmessage = (event) => { const data = JSON.parse(event.data); if (data.type === 'prices') { console.log('Price update:', data.data); } else if (data.type === 'orderbook') { console.log('Orderbook update:', data.data); } else if (data.type === 'trades') { console.log('Trade:', data.data); }};ws.onclose = () => { console.log('Disconnected from WebSocket');};ws.onerror = (error) => { console.error('WebSocket error:', error);};| Property | Value |
|---|---|
| Protocol | WebSocket (wss://) |
| Keepalive | Ping every 54 seconds |
| Timeout | 60 seconds without pong |
| Max Message Size | 512 KB |
condition_id (Polymarket condition identifier) to subscribeWebSocket connection upgraded successfully