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

# Channels

> What each live channel sends, with real frames.

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

| `type` | `data` |
| - | - |
| `snapshot` | The last 100 [trades](/api-reference/tokens/trades), newest first |
| `trade` | One new trade |
| `retract` | Solana: trades already sent whose block lost its fork; remove them (see below) |

```json theme={null}
{
  "id": "tape", "channel": "trades", "chain": "sol", "token": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump",
  "type": "trade",
  "data": {
    "chain": "sol", "token": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump",
    "signature": "658yeJAmHj2x7oKzi25nhtk62i1FLpkmLNK7zY7xDFT6AskMXpxnQQhofofmBjDRqVP4wUk1L9uVbMFP3RdwuTBT",
    "time": 1790813482436, "side": "buy", "wallet": "…",
    "amount": 31100.17, "volumeUsd": 20.0, "priceUsd": 0.000643083,
    "quoteAmount": 20, "quoteSymbol": "USDC",
    "pool": "mnnen34cBuJJ7Pvfdb2PN7WHgRvCMzcTej4bAgUiXob", "dex": "Pumpswap",
    "tags": ["bundle"]
  }
}
```

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](/get-started/conventions#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:

```json theme={null}
{
  "id": "tape", "channel": "trades", "chain": "sol", "token": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump",
  "type": "retract",
  "data": [
    { "signature": "…", "wallet": "…", "slot": 452995200, "reason": "abandoned" }
  ]
}
```

* 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`).

| `type` | `data` |
| - | - |
| `snapshot` | The last 300 [candles](/api-reference/tokens/candles), oldest first |
| `candle` | The forming candle, after every trade |

```json theme={null}
{
  "id": "chart", "channel": "candles", "chain": "sol", "token": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump",
  "interval": "1s", "unit": "usd",
  "type": "candle",
  "data": { "time": 1790813481000, "open": 0.00062699892, "high": 0.00063716686, "low": 0.00062699892, "close": 0.00063716686, "volume": 1.27 }
}
```

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](#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`.

| `type` | `data` |
| - | - |
| `snapshot` | The full [token](/api-reference/tokens/get); again at most every 15 s while it trades |
| `tick` | Price and market cap after every trade |

```json theme={null}
{
  "id": "head", "channel": "token", "chain": "sol", "token": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump",
  "type": "tick",
  "data": { "chain": "sol", "address": "DvNcJZTiSMD1RBCtZ2J31mh7s42CVCwrzGapv1Lypump", "time": 1790813481790, "priceUsd": 0.00063716686, "marketCapUsd": 609059.65, "liquidityUsd": null }
}
```

`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).

| `type` | `data` |
| - | - |
| `snapshot` | Up to 100 [token summaries](/api-reference/discovery/launchpad) of the board |
| `add` | A token joined the board (a launch, a curve passing 50%, a graduation) |
| `update` | Price, market cap, holders or curve progress of a token on the board changed |
| `remove` | A token left the board: it moved to another board, stopped trading (`graduating`), or newer tokens pushed it out |

```json theme={null}
{
  "id": "new", "channel": "launchpad", "board": "new", "chain": "sol",
  "type": "add",
  "data": {
    "chain": "sol", "address": "HMQ7EjbPsgSRjd4yabyXLNry82sSZiFkSpebqW2Spump",
    "name": "…", "symbol": "…", "image": null,
    "createdAt": 1790813482446, "creator": "4KffyoCJpM8LRir1pxs1BYET9vXPVxAz3eqbpCq2TDjc",
    "priceUsd": null, "marketCapUsd": null, "liquidityUsd": 13.84, "holders": null,
    "launchpad": { "name": "Pump Mayhem", "progressPercent": 0, "graduated": false, "graduatedAt": null, "graduatedPool": null },
    "socials": { "twitter": null, "telegram": null, "website": null, "discord": null }
  }
}
```

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.

| `type` | `data` |
| - | - |
| `snapshot` | `{sol, eth, bnb}`, each `{usd, updatedAt}` |
| `update` | The same object, after any of them changed |

```json theme={null}
{
  "id": "s1", "channel": "prices", "type": "update",
  "data": {
    "sol": { "usd": 117.88, "updatedAt": 1790813473000 },
    "eth": { "usd": 2681.73, "updatedAt": 1790813471000 },
    "bnb": { "usd": 768.0, "updatedAt": 1790813481000 }
  }
}
```

## wallet

Parameters: `wallet` (a Solana address); `chain` is `sol` and may be omitted.

| `type` | `data` |
| - | - |
| `snapshot` | The wallet's last 50 [swaps](/api-reference/wallets/trades), newest first |
| `trade` | Every new swap of the wallet, on any token |

`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](/api-reference/tokens/batch). The channel is Solana-only; on EVM chains use the REST route.

## lagged

```json theme={null}
{ "id": "tape", "channel": "trades", "chain": "sol", "token": "…", "type": "lagged", "dropped": 37 }
```

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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.