Room ID:
Endpoint:
Rate: 0.025 credits per message
polymarket_events_stream Endpoint:
wss://api.struct.to/ws Rate: 0.025 credits per message
PolymarketEvent rows — same shape that GET /polymarket/events returns. The server maintains an in-memory cache of open events only, refreshed via a slow full poll plus a fast 500ms newest-first poll, and merged live from the prediction_event_metrics and prediction_trades Kafka streams with per-timeframe block/timestamp ordering.
No initial snapshot is pushed on subscribe. Clients seed local state from GET /polymarket/events and then apply deltas from this stream.
Subscription model
Each client has up to 8 active slots per room (4 cadences × 2 modes). Re-subscribing to the same(interval_ms, mode) pair replaces the previous subscription. Unsubscribe one slot with action: "unsubscribe" plus interval_ms and mode, or clear everything with action: "unsubscribe_all".
- Cadence (
interval_ms):500,1000,3000, or10000. Each cadence is a separate flush bucket. - Filter mode: evaluated in-memory on every flush against rows that actually changed since the last tick. Same validation as the REST list endpoint.
- Ids mode: filter by explicit
event_slugsand/orevent_ids. Max 500 ids per subscription.
latest_block >= cached, (b) a confirmed trade with block >= cached, (c) a slow-poll field diff, or (d) the fast newest-first poll discovering a brand-new event. Quiet events produce zero messages.
Subscribe
Message fields
Filter fields (mode=filter)
search is a case-insensitive substring match on title (3–100 chars). All other fields follow the same validation as the REST list endpoint (timeframe, list size caps).
Example — filter mode
Example — ids mode
Unsubscribe one slot
Response
Events
events_stream_update
Server-pushed event fired only for rows that changed AND matched this subscription since the last flush tick. data contains full PolymarketEvent rows — not deltas — so clients should merge by id.
Envelope
PolymarketEvent
SimpleTimeframeMetrics
PolymarketTag
EventMarket
EventMarketOutcome
PolymarketSeries
See the Markets Stream room for the
ClobReward shape — it is shared across both stream rooms.