VeztaVezta
WebSocket Reference

market:prices

Real-time price updates for active markets

The market:prices channel broadcasts real-time YES and NO price updates for all active markets. Prices are refreshed every 60 seconds from both Polymarket and Kalshi.

Subscribe

{ "event": "subscribe", "data": { "channel": "market:prices" } }

Unsubscribe

{ "event": "unsubscribe", "data": { "channel": "market:prices" } }

Server Broadcast

When prices update, the server emits a data event:

{
  "channel": "market:prices",
  "data": {
    "marketId": "c5a2e7f1-3b4d-4e6a-8f9c-1d2e3f4a5b6c",
    "slug": "will-bitcoin-hit-100k-by-june-2026",
    "yesPrice": "0.672300",
    "noPrice": "0.327700",
    "volume24h": "1245678.90",
    "change5m": "0.003200",
    "change1h": "-0.012500",
    "change24h": "0.045600",
    "source": "polymarket",
    "updatedAt": "2026-03-27T14:30:00.000Z"
  }
}

Payload Schema

FieldTypeDescription
marketIdstringUnique market identifier (UUID)
slugstringURL-safe market slug
yesPricestringCurrent YES share price (Decimal, 6 decimal places)
noPricestringCurrent NO share price (Decimal, 6 decimal places)
volume24hstring24-hour trading volume in USD
change5mstringPrice change over last 5 minutes
change1hstringPrice change over last 1 hour
change24hstringPrice change over last 24 hours
sourcestringExchange source: polymarket or kalshi
updatedAtstringISO 8601 timestamp of the update

Notes

  • Prices are broadcast every 60 seconds during the price-sync cycle
  • Price values are strings representing Decimal(10, 6) -- parse with appropriate precision handling
  • Price change values (change5m, change1h, etc.) are updated during full-sync (every 5 minutes), not on every price-sync
  • Only markets with a price delta greater than 0.0001 trigger a new snapshot write, but all active market prices are broadcast

Financial values are transmitted as strings to preserve decimal precision. Parse them with a decimal library rather than parseFloat() for critical calculations.

On this page