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=1000updateIntervalMs 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 abasket, 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 global — 429 and 503 respectively.
→ Message protocol and field tables: API reference › WebSocket
Last updated
Was this helpful?

