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
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.sizeis always shares;amount_usdcis always dollars.priceis the actual fill price, including multi-maker price improvement.order_hashis the ExchangeV3 EIP-712 hash computed directly from calldata.
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: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
Installws, 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:

