Skip to main content
A subscription is { id, channel, confirmed?, filters? }. The id is your own string. The server sends it back on every event, so you can tell your subscriptions apart. channel is a channel name. confirmed defaults to true (the final on-chain feed); set it to false for the pending (mempool) feed of the same channel. filters are optional and run on the server.
radion.realtime.subscribe({ id: "trading", channel: "trading" });

radion.realtime.subscribe({
  id: "whales",
  channel: "trading",
  filters: { min_usd: 10_000 },
});

radion.realtime.unsubscribe("whales");
If you subscribe again with an id you already use, the new subscription replaces the old one on that id. To stop, unsubscribe with the same id.

Filters

ChannelFilters narrows a channel on the server:
FilterTypeUsed by
walletsstring[]wallets (required); trading, fees, positions, combos, transfers, accounts
market_idsstring[]markets (one of market/token ids); trading, oracle, resolution, lifecycle, positions, combos
token_idsstring[]markets; trading, fees, lifecycle, positions, combos, transfers
min_usdnumbertrading
Only the two filter channels need a filter. wallets needs wallets. markets needs at least one of market_ids / token_ids. If you subscribe to either without its filter, you get an error. On topic channels, filters are optional — an empty filter means the whole channel.

Pending feed

Set confirmed: false on a subscription to get pending transactions before they land in a block. These are not final yet. Every event carries a confirmed flag, so you route on that (and tell subscriptions apart by id):
radion.realtime.subscribe({
  id: "pending",
  channel: "trading",
  confirmed: false,
});
radion.realtime.subscribe({ id: "confirmed", channel: "trading" });

radion.realtime.onAnyChannel((e) => {
  if (!e.confirmed) {
    // pending
  }
});
See the WebSockets filters and mempool references for how this works under the hood.
Last modified on July 5, 2026