Subscribe message
Send a JSON message after connecting to start receiving events:action are optional.
Subscribe response
Successful subscriptions return an acknowledgement:Subscription types
Thetype field selects a preset of event types. If you also set filters.event_types, it overrides the preset.
Events: Example event:
settlement (reformatted as one flat event per fill)The simplest way to stream Polymarket trades. Each fill arrives as its own flat event with clear fields: user (the wallet whose fill this is), side, price, shares_normalized, token_label (outcome name), and title (market name). No arrays to iterate, no nested objects to unpack.Pre-confirmation delivery, 3-5 seconds before on-chain settlement. Same speed as settlements, just a cleaner format for per-trade tracking.block_number: null means pre-confirmation (detected before the block). Once confirmed, a status_update fires on the settlements subscription if you have one active. If you only need trades and don’t care about the confirmation lifecycle, fills is all you need.Events:
settlement, status_updatePending and confirmed Polymarket settlements. The default subscription type. Each event contains a trades[] array with all fills in the transaction. Use this when you need the full settlement lifecycle (pending detection, block confirmation via status_update, and all fills grouped by transaction).If you just want individual trades in a flat format, use fills instead.Events:
settlement, trade, status_updateAll trade activity including confirmed on-chain trades.Events:
settlement, tradePrice-moving events only. Useful for building price feeds.Events: See Combo Stream for the full field reference and filters.
combo_execution, combo_status_updatePolymarket combo executions and confirmations. Pending combo_execution events are decoded before on-chain confirmation; confirmed combo_status_update events include receipt-derived fills, transfers, fees, gas fields, and confirmation latency when the pending event was seen first.Combo events are enrichment-gated. Customer-facing combo executions and status updates include enriched legs[] metadata; events without enough leg metadata are held instead of emitted partially.Lifecycle and approval events are available by explicit request:Events: Real captured event (live data from April 9, 2026):In this event,
settlement (reformatted as per-fill flat events)Dome API-compatible feed. Each settlement is exploded into individual flat events — one per order fill — matching the exact field names and structure of Dome’s WebSocket API. Designed as a drop-in replacement for Dome with 3-5 second faster delivery. See Dome Migration for full field reference and copy trading examples.This is the simplest subscription type for per-wallet trade tracking. Each fill arrives as its own flat event with a user field. Filter incoming events by event.data.user === your_wallet to get the wallet’s actual trades — no array iteration, no maker/taker confusion.user is the wallet whose trade this is (0x0c6367b4...), and taker is the CTF Exchange contract (0x4bfb41d5...) — that pattern means this is the user’s own fill, not a counterparty fill. The user bought Astralis at 0.59 for 33.9 shares.The same transaction also produces a separate event for the counterparty (with user = counterparty_wallet, taker = real_taker_wallet). To track only the wallet you care about, filter by event.data.user === your_wallet and ignore everything else.Events:
blockNew Polygon block notifications with Polymarket-specific stats (settlement count, trade volume).Events:
settlement, trade, position_change, deposit, status_update, position_split, position_merge, positions_converted, redemptionAll activity for specific wallets. Best used with the wallets filter.Events:
settlement, trade, position_change, status_update, position_split, position_merge, positions_converted, redemptionAll activity for specific markets. Best used with tokens, slugs, or condition_ids filters.Events:
depositUSDC.e and Polymarket USD deposit/withdrawal activity involving known Polymarket contracts.Events:
settlement, tradeWhale alerts. Defaults to min_size: 1000 ($1K+) unless you set your own.Events:
settlement, trade, position_change, deposit, block, status_update, oracle, redemptionUnfiltered stream of the default public event set (firehose). High throughput — use with caution. This counts toward your plan’s firehose connection limit. Combo events are not included in global by default; use type: "combos" for combo activity.Firehose refers to any WebSocket subscription with no filters applied — receiving every event at full throughput. Filtered subscriptions (specifying wallets, tokens, slugs, or size thresholds) don’t count toward your firehose limit and use far less bandwidth.
Events:
oracleUMA Optimistic Oracle events: market resolutions, proposals, disputes, flags, and admin actions. See Oracle Event.Events:
price_feedReal-time crypto prices (~1 update/second per feed). 7 feeds available: BTC, ETH, SOL, BNB, XRP, DOGE, HYPE. Use the feeds filter to select specific feeds (e.g. ["BTC/USD", "ETH/USD"]). See Crypto Prices.Filters
All filters are optional. Omit thefilters object entirely to receive all events matching the subscription type.
Market identification
Filter by Polymarket conditional token IDs. Match if any token in the list appears in the event.
Filter by market URL slugs. Resolved to token IDs at subscribe time — zero performance cost after that.
Filter by Polymarket condition IDs. Resolved to token IDs at subscribe time.
Combo identification
These filters apply totype: "combos" subscriptions.
Filter by derived combo condition IDs.
Filter by constituent leg position IDs.
tokens also matches combo and leg position IDs, but leg_position_ids makes the intent explicit.Filter by combo leg event IDs when available.
Filter by combo module ID. Common values are
1 for binary, 2 for negative-risk, and 3 for combinatorial legs.Filter
combo_lifecycle events by lifecycle action. Values include Prepare, Split, Merge, HorizontalSplit, HorizontalMerge, Convert, Redeem, Wrap, Unwrap, Transfer, Compress, Extract, Inject, ConvertToYesBasket, and MergeFromYesBasket.Filter
combo_execution events by requester direction.Values: "BUY" or "SELL"For
type: "combos", condition_ids are matched directly against combo and leg condition IDs. They are not resolved through standard market metadata at subscription time.Wallet filtering
Filter by wallet addresses (case-insensitive). Matches if the wallet is involved as maker or taker.
Trade filtering
Filter by trade side. Case-insensitive.Values:
"BUY" or "SELL"Minimum trade size in USD. Events below this size are dropped.
Maximum trade size in USD. Events above this size are dropped.
Filter by settlement status.
| Value | Description |
|---|---|
"pending" | Only pre-chain detections |
"confirmed" | Only confirmed in a block |
"all" | Both pending and confirmed (default) |
Event control
Override the subscription type’s default event list. Valid values:
"settlement", "trade", "status_update", "block", "position_change", "deposit", "position_split", "position_merge", "positions_converted", "redemption", "oracle", "combo_execution", "combo_status_update", "combo_lifecycle", "combo_approval"Number of recent matching events to receive immediately after subscribing. Max varies by tier (free: 20, starter: 100, growth: 200, enterprise: 500).
UNIX timestamp in milliseconds. When set, the initial snapshot returns all events after this timestamp instead of just the most recent N events. Useful for gap-filling after a reconnect or cold start.The server keeps a rolling window of recent events in memory. Timestamps older than your tier’s lookback window are clamped to the window edge.
| Tier | Max lookback |
|---|---|
| Free | 30 seconds |
| Starter | 2 minutes |
| Growth | 5 minutes |
| Enterprise | 5 minutes |
since vs snapshot_count — these are two separate snapshot modes. Use snapshot_count when you just want the last N events (capped by tier). Use since when you need every event after a specific timestamp (e.g. reconnecting after a drop). If you pass both, since takes priority and snapshot_count is ignored. See tier limits for the full breakdown.Price feed filtering
Filter by price feed names. Only applies to Omit to receive all 7 feeds. See Crypto Prices for details.
chainlink subscriptions. Available feeds: BTC/USD, ETH/USD, SOL/USD, BNB/USD, XRP/USD, DOGE/USD, HYPE/USD.Matching logic
Filters use AND logic between different filter types and OR logic within each filter:- An event must match all active filter categories (wallets AND tokens AND side AND size range)
- Within a category, matching any value is sufficient (wallet A OR wallet B)
- Empty/omitted filters match everything in that category
Multiple subscriptions
You can send multiplesubscribe messages on the same connection — they stack. Each subscribe creates an independent subscription with its own filters. Events matching any of your active subscriptions are delivered, deduplicated so you never receive the same event twice.
Subscribe response
After subscribing, you receive two messages: 1. Snapshot — recent events matching your filters:subscription_id if you need to remove a specific subscription later.

