Skip to main content
PolyNode streams Polymarket combo activity from on-chain combo transactions. The stream follows the same lifecycle as standard settlements: pending events come from mempool calldata, then confirmation events come from on-chain receipts.
This is the on-chain combo stream. Polymarket’s RFQ gateway is an off-chain maker/quoter channel. Use this stream to monitor combo executions, fills, confirmations, and enriched lifecycle actions as they hit Polygon.

Subscribe

The default combos preset emits: Every emitted combo includes its decoded structural legs. Cached market titles, slugs, images, outcomes, and token IDs are added when available, but a cache miss never makes a valid pending trade wait on Redis or an external API.

Trade model

combo_execution is intentionally shaped like the ordinary settlement stream:
  • Top-level taker_* fields describe the taker order.
  • trades[] contains every signed order from that order maker’s perspective.
  • size is always shares; amount_usdc is always dollars.
  • price is the actual fill price, including multi-maker price improvement.
  • order_hash is the ExchangeV3 EIP-712 hash computed directly from calldata.
After confirmation, the same fills are queryable through GET /v3/wallets/{address}/combos/trades. The static API adds block and log coordinates; the WebSocket adds pre-confirmation delivery, order hashes, and explicit dollar amounts.

Full combo surface

Advanced users can explicitly request lifecycle and approval events:
Lifecycle events are emitted when their on-chain structure is complete. AutoRedeemer redemption confirmations can also be emitted when they are condition-only, because the receipt provides the user wallet, condition ID, exact payout, normalized payout, and log index without requiring a follow-up lookup.

Redemption routing

The comprehensive redemptions stream identifies bridged AutoRedeemer events with data.source: AutoRedeemer.BinaryRedemption, AutoRedeemer.NegRiskRedemption, or AutoRedeemer.Redemption. A direct Conditional Tokens redemption has no AutoRedeemer source. If you subscribe to both surfaces, a generic combo AutoRedeemer payout can appear once as combo_lifecycle and once as normalized redemption. These are two representations of the same on-chain log; correlate or deduplicate them with tx_hash and log_index.

Covered on-chain surface

The combo stream covers the Polymarket on-chain contracts used for combo execution and position lifecycle activity: PositionManager approvals for ExchangeV3 and AutoRedeemer are available through combo_approval when requested explicitly. Collateral ERC20 allowance approvals are not part of the default combo stream.

Example

Install ws, save the example as combos.mjs, and run it with Node.js:

Filters

Combo subscriptions support the standard WebSocket filters plus combo-specific identifiers:
tokens and leg_position_ids both match combo position IDs and leg position IDs. Use leg_position_ids when you want the filter to be self-documenting. For combo subscriptions, side means the combo outcome (YES or NO), while direction means the requester’s order direction (BUY or SELL). status: "confirmed" selects receipt-backed combo_status_update events, including both successful and reverted receipts; use execution_status to distinguish CONFIRMED from FAILED. min_size is a minimum USDC value. To receive only combo lifecycle redemptions:

Event reference