A channel is a named stream of Polymarket activity. We read it from the chain and decode it for you. Subscribe to a channel by its name. Some channels accept filters; the two filter channels require one.
There are three kinds of channel:
- Topic channels carry a fixed set of decoded events. Every decoded event routes to exactly one topic channel, so you can always tell which channel an event arrives on.
- Filter channels (
wallets, markets) are cross-cutting. They carry the same events as the topic channels, but scoped to the wallets, markets, or tokens you name.
- CLOB channels (
clob.*) are a separate family. They carry the Polymarket order-book feed — book, prices, trades, midpoint — proxied over the same socket. See CLOB channels below.
Confirmed channels
A confirmed channel sends you events after the transaction is in a block. This is final, on-chain truth.
| Channel | Events it carries | Accepted filters |
|---|
trading | Order fills, matches, cancels, preapprovals, and trading pauses. | wallets, market_ids, token_ids, min_usd |
fees | Exchange fees charged on trades. | wallets, token_ids |
oracle | UMA Adapter and UMA Optimistic Oracle question events. | market_ids |
resolution | Condition resolutions, reported results, and resolution pauses. | market_ids |
lifecycle | Market, event, condition, and token preparation. | market_ids, token_ids |
positions | CTF base-layer splits, merges, and payout redemptions. | wallets, market_ids, token_ids |
combos | Module, neg-risk, combinatorial, bridge, and migration position events. | wallets, market_ids, token_ids |
transfers | ERC-1155 outcome-token transfers. | wallets, token_ids |
accounts | Proxy and deposit wallet creation. | wallets |
wallets (filter channel) | Any event that touches one or more wallet addresses. | wallets (required, min 1) |
markets (filter channel) | Any event for the given market ids or token ids. | market_ids or token_ids (min 1) |
An empty filter (or one you leave out) means the whole channel. A filter a channel does not accept is ignored — it is not an error. See Filters for the combination rule.
Pending feed
Every channel has a pending feed. Set confirmed: false on the subscribe message to get pending transactions before they are in a block, on the same bare channel name. These are guesses, not final truth. See Mempool for the frame shape and how to handle them.
Channel (with confirmed: false) | Description |
|---|
trading | Pending transactions sent to Polymarket exchange contracts. |
fees | Pending exchange transactions that charge a fee. |
oracle | Pending transactions sent to UMA oracle contracts. |
resolution | Pending transactions sent to resolution and settlement paths. |
lifecycle | Pending transactions sent to market lifecycle contracts. |
positions | Pending transactions sent to CTF and collateral-adapter split, merge, and redemption paths. |
combos | Pending transactions sent to module, combinatorial, bridge, and migration contracts. |
transfers | Pending ERC-1155 transfer transactions. |
accounts | Pending wallet-factory transactions. |
wallets | Pending transactions that involve a wallets address (sender, recipient, or decoded from calldata). |
markets | Pending transactions that involve a market_ids or token_ids decoded from calldata. |
Pending messages are guesses. A pending transaction can be dropped, replaced,
reordered, or reverted. For final on-chain truth, use the confirmed feed
(confirmed: true, the default).
Filter availability
This table shows which filters each channel accepts. A filter a channel does not accept is ignored:
| Channel | wallets | market_ids | token_ids | min_usd |
|---|
trading | ✓ | ✓ | ✓ | ✓ |
fees | ✓ | — | ✓ | — |
oracle | — | ✓ | — | — |
resolution | — | ✓ | — | — |
lifecycle | — | ✓ | ✓ | — |
positions | ✓ | ✓ | ✓ | — |
combos | ✓ | ✓ | ✓ | — |
transfers | ✓ | — | ✓ | — |
accounts | ✓ | — | — | — |
wallets | required | — | — | — |
markets | — | required* | required* | — |
* The markets channel needs at least one of market_ids or token_ids. See Filters for the full reference, including how filters work on mempool.
CLOB channels
The clob.* channels are a separate family from the topic and filter channels above. They carry the Polymarket CLOB (order-book) feed — proxied over the same Radion WebSocket — instead of decoded on-chain events.
| Channel | Sends | Accepted filters |
|---|
clob.book | Full order-book snapshot (bid and ask levels). | token_ids (required) |
clob.prices | Price-change batches with new best bid/ask. | token_ids (required) |
clob.last_trade | Last trade price and size. | token_ids (required) |
clob.midpoint | Midpoint between best bid and ask. | token_ids (required) |
clob.tick_size | Tick-size changes. | token_ids (required) |
clob.best_bid_ask | Best bid and best ask. | token_ids (required) |
They differ from the topic channels: each requires a token_ids filter, the data payload has no type discriminator, and they have no pending feed (confirmed: false does not apply). See CLOB channels for the payload shapes.
Filter channels
wallets and markets are not new event types. They are scoped views of the same events the topic channels already send. If you subscribe to wallets with a wallets filter, you get the exact same payload shapes as trading, positions, and the rest, but only for events that touch your watched addresses.
wallets — sends any confirmed event where a watched address is a sender, recipient, or decoded participant. It requires at least one address, or the subscribe fails. For payload shapes, see the topic channel pages.
markets — sends events that match the market_ids or token_ids you pass. It requires at least one id. Same payload shapes as the topic channels.
The global channel was removed. To watch everything, subscribe to each topic
channel you care about. To scope across all topics at once, use wallets or
markets.