> ## Documentation Index
> Fetch the complete documentation index at: https://docs.radion.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Channels

> Confirmed and mempool channels available on the Radion WebSocket.

A channel is a named stream of Polymarket activity. We read it from the chain and decode it for you. [Subscribe](/websockets/subscribe) to a channel by its name. Some channels accept [filters](/websockets/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](#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`](/websockets/channels/trading)       | Order fills, matches, cancels, preapprovals, and trading pauses.        | `wallets`, `market_ids`, `token_ids`, `min_usd` |
| [`fees`](/websockets/channels/fees)             | Exchange fees charged on trades.                                        | `wallets`, `token_ids`                          |
| [`oracle`](/websockets/channels/oracle)         | UMA Adapter and UMA Optimistic Oracle question events.                  | `market_ids`                                    |
| [`resolution`](/websockets/channels/resolution) | Condition resolutions, reported results, and resolution pauses.         | `market_ids`                                    |
| [`lifecycle`](/websockets/channels/lifecycle)   | Market, event, condition, and token preparation.                        | `market_ids`, `token_ids`                       |
| [`positions`](/websockets/channels/positions)   | CTF base-layer splits, merges, and payout redemptions.                  | `wallets`, `market_ids`, `token_ids`            |
| [`combos`](/websockets/channels/combos)         | Module, neg-risk, combinatorial, bridge, and migration position events. | `wallets`, `market_ids`, `token_ids`            |
| [`transfers`](/websockets/channels/transfers)   | ERC-1155 outcome-token transfers.                                       | `wallets`, `token_ids`                          |
| [`accounts`](/websockets/channels/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](/websockets/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](/websockets/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.               |

<Warning>
  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).
</Warning>

## 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](/websockets/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](/websockets/channels/clob) 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.

<Note>
  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`.
</Note>
