Messages
{
"op": "subscribed",
"id": "tape-1",
"channel": "trades"
}{
"op": "event",
"id": "tape-1",
"channel": "trades",
"data": {
"id": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf:289",
"at": 1786718835000,
"maker": "0x95d955179a7cd45aeef394ed39f6a8d8b1bd1e09",
"isBuy": true,
"amountToken": 77.05662024406023,
"amountQuote": 0.000042612402192036,
"priceNative": 5.4747124708872e-7,
"volumeNative": 0.000042612402192036,
"volumeUsd": 0.08021081608014609,
"isProTrader": false,
"isSniper": false,
"isWash": null,
"preconfirmed": false,
"txHash": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf",
"block": 49964744,
"logIndex": 289,
"poolAddress": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64"
},
"asOf": 1786718835412
}{
"op": "subscribe",
"channel": "trades",
"id": "tape-1",
"params": {
"chain": "evm:8453",
"address": "0xb2000000000000000000007bf6d5cbb0e24cb301"
}
}Streams
Trades Stream
Every new trade for a token - all pools by default, or a pool subset - pushed as it lands. Events are the exact REST trades-tape shape, one event per trade.
WS channel: trades
Every new trade for a token - all pools by default, or a pool subset - pushed as it lands. Events are the exact REST trades-tape shape, one event per trade.
string
required
Public chain id -
evm:<id> or solana. Example: evm:8453string
required
Token address (EVM hex, case-insensitive; Solana base58). Example:
0xb2000000000000000000007bf6d5cbb0e24cb301string
Comma-separated pool addresses to restrict the tape. Default: token-wide (every pool of the token).
{
"op": "subscribe",
"channel": "trades",
"id": "tape-1",
"params": {
"chain": "evm:8453",
"address": "0xb2000000000000000000007bf6d5cbb0e24cb301"
}
}
{
"op": "subscribed",
"id": "tape-1",
"channel": "trades"
}
{
"op": "event",
"id": "tape-1",
"channel": "trades",
"data": {
"id": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf:289",
"at": 1786718835000,
"maker": "0x95d955179a7cd45aeef394ed39f6a8d8b1bd1e09",
"isBuy": true,
"amountToken": 77.05662024406023,
"amountQuote": 0.000042612402192036,
"quoteToken": { "address": "0x4200000000000000000000000000000000000006", "symbol": "WETH", "name": "Wrapped Ether", "decimals": 18 },
"priceNative": 5.4747124708872e-7,
"priceUsd": 0.00103052429,
"volumeNative": 0.000042612402192036,
"volumeUsd": 0.08021081608014609,
"feesNative": 0.000000841192,
"isProTrader": false,
"isSniper": false,
"isWash": null,
"preconfirmed": false,
"txHash": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf",
"block": 49964744,
"logIndex": 289,
"poolAddress": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64"
},
"asOf": 1786718835412
}
Events are the exact REST trades-tape
Trade shape, including the stable id for dedup. isWash is a boolean on Solana and null on EVM (no wash tagging there).Close codes
The connection can be closed with:4401 (auth failure - bad/missing/revoked key), 4402 (quota exceeded), 1008 (policy - subscription limits, floods, slow consumer), 1001 (idle timeout). On a close, backfill the gap over REST (/v1/token/trades with cursor + fromAt), then reconnect and re-subscribe.Messages
{
"op": "subscribed",
"id": "tape-1",
"channel": "trades"
}{
"op": "event",
"id": "tape-1",
"channel": "trades",
"data": {
"id": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf:289",
"at": 1786718835000,
"maker": "0x95d955179a7cd45aeef394ed39f6a8d8b1bd1e09",
"isBuy": true,
"amountToken": 77.05662024406023,
"amountQuote": 0.000042612402192036,
"priceNative": 5.4747124708872e-7,
"volumeNative": 0.000042612402192036,
"volumeUsd": 0.08021081608014609,
"isProTrader": false,
"isSniper": false,
"isWash": null,
"preconfirmed": false,
"txHash": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf",
"block": 49964744,
"logIndex": 289,
"poolAddress": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64"
},
"asOf": 1786718835412
}{
"op": "subscribe",
"channel": "trades",
"id": "tape-1",
"params": {
"chain": "evm:8453",
"address": "0xb2000000000000000000007bf6d5cbb0e24cb301"
}
}Ack
type:object
Server acknowledgement: the subscription is live.
Trade
type:object
Server push frame (Trade).
Subscribe
type:object
Client frame opening the subscription (additive, ack is explicit).