Skip to main content
Every frame carries the subscription id (WebSocket), the channel, the channel’s parameters, a type and, for data frames, data. Examples below are real frames, shortened.

trades

Parameters: chain, token.
Trades in the snapshot are not sent again as trade. On Solana, trades come straight from the chain: two wallets that sign one transaction are two trades, and a trade the server reads again after a gap in its feed is not sent a second time when it also arrives live. On EVM chains, trades come from an indexer’s push feed, one per swap log, so one wallet can have several in one transaction. Rows have no id, and one wallet can have several rows in one transaction (see Trades). Append trade frames as they come; do not deduplicate them on signature or on signature + wallet. After lagged, a fresh snapshot follows and replaces your list.

retract

On Solana a block can lose its fork after its trades went out live: they never happened there. The trades channel can then send one retract frame per lost slot, after the trades it names, usually 10 to 40 s after them:
  • Remove every row of your list with that signature and wallet. reason is dead (the validator marked the slot dead), abandoned (the confirmed chain does not descend from it) or other; the rows go either way.
  • A transaction that landed in another block comes again later as a new trade, with the same signature and that block’s amounts and time. Append it like any other trade.
  • REST pages and later snapshots no longer hold the removed rows.
  • Never handle a frame type you do not know as a trade: a client that ignores retract keeps the rows until its list is replaced by a snapshot.

candles

Parameters: chain, token, interval (1s … 1w, default 1m), unit (usd or marketCap).
A candle with the same time as your last one replaces it; a later time starts a new candle, which opens at the previous close. Candles are built from the trades of the trades channel, so chart and tape agree. With no trade there is no frame. When a Solana block loses its fork (see retract), the channel can send a fresh snapshot, its candles built again without that block’s trades: it replaces what you hold. token, launchpad and wallet send nothing new for it.

token

Parameters: chain, token.
liquidityUsd on a tick is set only when the trade was in the token’s main pool; otherwise keep the last value you have. The periodic snapshot refreshes holders, stats and liquidity; it is triggered by trades, so a token that does not trade sends nothing.

launchpad

Parameters: board (new, graduating, graduated), chain (optional; omitted, every chain).
Key rows on chain + address. A token moving from graduating to graduated is a remove on one board and an add on the other. Updates are coalesced: at most two per second per token. Under heavy load the server coalesces further, to at most one frame per token every 1 to 2 s: the frame carries the latest values, and a token that joined and left the board within that window sends nothing. After lagged, a fresh snapshot follows.

prices

No parameters.

wallet

Parameters: wallet (a Solana address); chain is sol and may be omitted. tokenSymbol and tokenImage are filled in the snapshot and may be null on live trade frames: look the token up once with Get many tokens. The channel is Solana-only; on EVM chains use the REST route.

lagged

You read slower than frames arrived and lost dropped of them. The channel catches up on its own: trades and launchpad send a fresh snapshot right after; candles, token and wallet send one as soon as they have read it again; prices sends an update with all three prices. A snapshot replaces what you hold.