This stream is for prop firm integrators (firm API keys) and staff dashboards (session JWT). It is not the trader terminal stream and does not carry market data.
When to use it
The
type strings on the stream are identical to webhook event_types — anything you can subscribe to via POST /v1/firm-control/webhooks is also emitted here.
What you get
- One socket per firm scope. Open the connection, send
scope.set, and receive a filtered firehose of everything that scope covers. - Three subscription tiers —
firm,user,account— translated server-side into NATS wildcards. Add an optionalentityfilter to narrow further (e.g. onlytrades). - Sequenced events. Every envelope carries a JetStream
seq; persist the highest you’ve processed and pass it as?last_seq=on reconnect for replay. - ~24h retention in the JetStream buffer. Gaps longer than that require HTTP hydration.
- Stable envelope (
schema: ws.firm.v1) across every domain — one parser handles all event types.
High-level flow
Endpoints
The optional
?last_seq=<uint> query parameter requests replay from a specific JetStream sequence — use it after close code 4002 or any reconnect where you want exactly-once continuity within the retention window.
Source of truth
The machine-readable contract is the AsyncAPI document attradara-core/services/firm-ws/api/asyncapi.yaml. When this site disagrees with the spec, the spec wins. The FirmEventType enum there is the canonical list of event type values.
Next steps
Connect & authenticate
Headers, URL, and close codes.
Subscription scopes
Pick firm, user, or account and optionally filter by entity.
Try it: playground
Open a live WebSocket session generated from the AsyncAPI spec.
Event catalog
All 40+ event types grouped by domain.
Examples
wscat, Node, and Python.

