Skip to main content
Radion WebSockets send you Polymarket events live. You get each event the moment it is confirmed on the blockchain. You can also get pending transactions from the Polygon mempool, before they land in a block. One open connection can hold many subscriptions at once, and you can mix confirmed and pending subscriptions. So you get only the data you want, and you never have to poll.

Use cases

Mirror a wallet

Follow a wallet and copy its moves in real time. See its trades the moment they land onchain.

Wallet alerts

Get a signal whenever a wallet you watch buys, sells, or moves money.

Whale watching

See big trades. Stream only fills above a USD amount you pick.

Market monitoring

Watch open interest, liquidity, and price ticks for every market. No need to poll the REST API.

Resolution tracking

Listen for oracle events to know the second a market resolves.

Mempool / early visibility

Get pending transactions from the Polygon mempool, before they are in a block.

Endpoint

wss://api.radion.app/ws
Put your API key in the X-API-Key header of the WebSocket upgrade request. See Authentication for the details and safety tips.
One connection can hold many subscriptions, and you can mix confirmed and pending subscriptions. How many connections and subscriptions you may open depends on your plan.

Quickstart

import WebSocket from "ws";

const ws = new WebSocket("wss://api.radion.app/ws", {
  headers: { "X-API-Key": process.env.RADION_API_KEY },
});

ws.on("open", () => {
  ws.send(
    JSON.stringify({ action: "subscribe", id: "s1", channel: "trading" })
  );
});

ws.on("message", (raw) => {
  const frame = JSON.parse(raw.toString());
  console.log(frame.type, frame.channel, frame.data);
});
  1. Connect — open the socket with your X-API-Key header.
  2. Subscribe — send a subscribe message with the channel name (and filters if you want).
  3. Receive — read the JSON frames that come back. Each one has a type, a channel, and a data payload.
See Subscribe for every message shape, and Frames for the full frame reference.

Channels at a glance

ChannelPurpose
tradingOrder fills, matches, cancels, preapprovals, and trading pauses.
feesExchange fees charged on trades.
oracleUMA Adapter and UMA Optimistic Oracle question events.
resolutionCondition resolutions, reported results, and resolution pauses.
lifecycleMarket, event, condition, and token preparation.
positionsCTF base-layer splits, merges, and payout redemptions.
combosModule, neg-risk, combinatorial, bridge, and migration position events.
transfersERC-1155 outcome-token transfers.
accountsProxy and deposit wallet creation.
walletsEvents that touch one or more wallet addresses.
marketsEvents that touch market ids or token ids.
Use filters to narrow a channel down to certain wallets, markets, tokens, or trade sizes. Watching big trades? Subscribe to trading with a min_usd filter.

Connection lifecycle

  1. Open — start the WebSocket connection with your API key in the upgrade header.
  2. Authenticate — Radion checks the key and accepts the connection. A bad key returns HTTP 401.
  3. Subscribe — send one or more subscribe messages to start getting frames on the channels you name.
  4. Receive frames — handle the JSON event and control frames until you are done or an error happens.
  5. Reconnect — if the connection drops, connect again with exponential back-off, then send your subscriptions again. See Connection state for heartbeat and reconnect tips.

Further reading

Examples

Ready-to-run Node.js + TypeScript examples for every channel.

Authentication

Put your API key in the upgrade request.

Subscribe

Subscribe, unsubscribe, and ping messages.

Channels

Full channel list with typed schemas.

Filters

Narrow a channel to wallets, markets, tokens, or size.

Frames

Event, control, and error frame shapes.

Mempool

Pending transactions before they are in a block.

Connection state

Reconnect, heartbeats, and the health endpoint.

Rate limits

Connection and subscription limits per plan.

Limitations

What the WebSocket streams do and do not promise.
Last modified on July 5, 2026