Skip to main content
WS channel: wallet-trades Enabled on your key on request: contact us. Every trade of the wallets you follow, pushed as it lands: one wallet or a list of up to 100 per subscription. Events carry the same fields as REST /v1/wallet/trades, plus the wallet. Use it for copy trading, wallet trackers and alerts. For the positions of a wallet kept up to date, see the Wallet Positions Stream; for their live value and PnL, the Wallet Portfolio Stream.

Delivery model

  • Events, as they land. There is no snapshot: the stream starts with the first trade that follows your subscription. Past trades are on REST.
  • One event per transaction, token and side. A routed swap never doubles volumes: same rule as REST. Routed intermediate legs are delivered and flagged isRoutingHop, so you choose to show or skip them.
  • One wallet on one chain per entry. A wallet followed on two chains is two entries.

Parameters

Give either chain and address, or wallets.
string
Public chain id, evm:<id> or solana. Required with address. Example: solana
string
The wallet address (EVM hex, case-insensitive; Solana base58). Example: DfMxre4cKmvogbLrPigxmibVTTQDuzjdXojWzjCXXhzj
object[]
A list of 1 to 100 wallets, [{ "chain": "...", "address": "..." }, ...], in place of chain and address. Each wallet counts as one subscription in the limit of your account. With a list, every message is "data": [trade, ...].
integer
Milliseconds, 0 to 60000, default 0 (every trade as it lands). Above 0, one message per period carries every trade of the period in order, as "data": [trade, ...], for 1 credit. The ack carries the value applied (snapped up to 0, 100, 250, 500, 1000, 2000, 5000, 10000, 30000, 60000). See Choosing your pace.

The trade

Resume

With a single wallet, every event carries a cursor. After a reconnect, subscribe again with "since": "<cursor of the last event you received>": you receive every trade after it (up to 5 minutes back), then live. Trades you may already have are flagged "replay": true: dedupe them by data.id. If the replay is not available, a REPLAY_TOO_OLD notice gives details.restFromMs: fetch /v1/wallet/trades back to there, the subscription keeps going. A list subscription takes no since: after a reconnect, subscribe again and read REST for each wallet over the time you were away. See Reconnect & resume.

Billing

1 credit per message delivered: one trade, or one batch of trades. A wallet that does not trade costs nothing, and the connection is free. GET /v1/usage/breakdown reports this channel under WS wallet-trades, where requests is the number of messages delivered.

Errors

Close codes

Ack
type:object

Server acknowledgement: the subscription is live.

Trade
type:object

Server push frame, one per trade of a followed wallet (a batch per period with updatePeriod): 1 credit per message.

Subscribe
type:object

Client frame opening the subscription (additive, ack is explicit).