Skip to main content

Message Types

The server sends messages with a type discriminator. All SDKs parse these into typed objects.

hello_ok

Sent once immediately after the WebSocket opens. Contains the session ID and tier limits.

pong

Response to a client ping. Use for latency measurement.

error

Server side error notification. Check the code to determine severity.

balance_update

Emitted when a token balance changes in a tracked wallet (new arrivals, transfers, sells).

position_opened

A new position has been detected and tracking has begun.

position_closed

A position has been removed from tracking.

exit_signal_with_tx

The most important event. Sent when a position meets your exit criteria. Includes a pre built unsigned transaction ready for signing.

mirror_buy_signal

Sent when a watched wallet opens a position on a supported market and the stream builds an unsigned buy transaction for your wallet. Sign and submit this transaction to mirror the trade.

mirror_buy_failed

Sent when a mirror buy cannot be executed. Common reasons include insufficient balance, no route found, or pool liquidity below the minimum threshold.

mirror_wallet_auto_disabled

Sent when a watched wallet is automatically disabled by the consecutive loss breaker. After receiving this event the stream will no longer mirror trades from this wallet until you re-enable it.

pnl_update

Periodic profit and loss snapshot for a tracked position.
pnl_update messages are delivered at the interval defined by limits.pnl_flush_ms. When using lane splitting, they flow through the low priority channel.

liquidity_snapshot

Tier 1+ only. Liquidity snapshots are delivered to Professional and Advanced tier subscribers. Free tier sessions receive pnl_update messages only.
Real time slippage bands and liquidity trend for a tracked position. Delivered alongside pnl_update at the same flush interval. Use this data to understand how much of a position can be sold at a given slippage threshold and whether pool liquidity is growing, stable, or draining. See the announcement blog post for background and examples.

SlippageBandMsg

Each entry in the bands array:

Interpreting slippage bands

Slippage bands answer the question: “How much can I sell without exceeding X% slippage?” For example, if the 500 bps band shows max_tokens: 3000000 and coverage_pct: 60.0, you can sell up to 3,000,000 tokens (60% of your position) with no more than 5% price impact. Use session.getSlippageBands(positionId) or session.getMaxSellAtSlippage(positionId, slippageBps) in any SDK to query the latest snapshot.

Liquidity trend

The liquidity_trend field tracks how pool liquidity is changing over recent observations:
  • "growing": Liquidity is increasing. Sell conditions are improving.
  • "stable": Liquidity is steady. No significant change.
  • "draining": Liquidity is decreasing. Consider exiting sooner if selling a large position.
Use session.getLiquidityTrend(positionId) in any SDK to read the trend.

trade_tick

Real-time notification when a trade occurs on a tracked position’s token. Useful for monitoring trading activity on tokens you hold.