Documentation Index
Fetch the complete documentation index at: https://polynode.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Subscribe message
Send a JSON message after connecting to start receiving events:action are optional.
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: 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:
settlement, tradeWhale alerts. Defaults to min_size: 1000 ($1K+) unless you set your own.Events: all types including
redemption, except position_split, position_merge, and positions_convertedUnfiltered stream of every event (firehose, full data stream), including oracle and redemption events. High throughput — use with caution. This counts toward your plan’s firehose connection limit. To include position_split/position_merge/positions_converted, add them explicitly via the event_types filter override.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.
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"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.

