Skip to main content
The User Realtime WebSocket is the one persistent connection a trader-facing app opens to receive every change to its own accounts — order transitions, fills, position updates, balance changes, and projection updates — with no per-account subscription protocol.
This stream is for trader JWT clients (the Tradara terminal and custom trader-facing apps). Prop firm integrators monitoring traders use /v1/firm-ws instead. Firm API keys are denied on /v1/ws.

What it replaces

There are no SSE endpoints in the Trading API. Every “live” surface — order status, fill stream, position updates — is delivered as a typed envelope on this WebSocket. The REST endpoints under Orders, Fills, Positions, Trades, and Balances are used for hydration and point-in-time reads, not polling.

Endpoint

Connection model

Unlike the firm stream, there is no scope.set. Scope is implicit: all events for the authenticated user, across every account the user owns, are delivered on one connection. Client-side code filters by account_id in the envelope when the UI is scoped to a single account.

Hydration is required

The stream is delta-only. Open the WebSocket only after — or in parallel with — the REST hydration reads below, and on every reconnect re-run hydration before resuming live consumption. See Reconnection for the full re-sync loop.

Next steps

Authentication

JWT session cookie, bearer token, or the bearer subprotocol.

Event catalog

Envelope schema plus every entity.event published on /v1/ws.

Client control

ping, pong, and optional news opt-in for terminal-class clients.

Examples

Browser / Node connect + hydration loop.