For the complete documentation index, see llms.txt. This page is also available as Markdown.

Stream live state

Subscribe to a wallet's basket over WebSocket.

For live positions and orders, open a WebSocket instead of polling. The server pushes a full snapshot on connect, re-pushes it whenever the basket changes on-chain, and sends lightweight metric ticks in between.

Connect

wss://flashapi.trade/owner/{owner}/ws?updateIntervalMs=1000

updateIntervalMs sets the metric-tick cadence (default 1000, min 100, max 10000).

Handle the two message types

const ws = new WebSocket(`wss://flashapi.trade/owner/${owner}/ws?updateIntervalMs=1000`);

ws.onmessage = (ev) => {
  const msg = JSON.parse(ev.data);
  if (msg.type === "basket") {
    // Full snapshot: positionMetrics / orderMetrics keyed by market pubkey,
    // plus raw basketData (base64). Sent on connect and on every basket change.
    render(msg.data.positionMetrics, msg.data.orderMetrics);
  } else if (msg.type === "metrics") {
    // Metrics-only tick: positionMetrics keyed by market pubkey. Refresh PnL/liq.
    updateMetrics(msg.data);
  }
};
  • basket — full state; the first message is always a basket, so you have bytes before any tick.

  • metrics — position metrics only, on the oracle-tick cadence, so PnL/leverage/liq keep refreshing cheaply.

The server pings every 30s and closes the socket if no pong arrives within 10s. You don't need to send anything after connecting.

Limits

Max 5 connections per owner and 10,000 global429 and 503 respectively.

→ Message protocol and field tables: API reference › WebSocket

Last updated

Was this helpful?