Scope
A session is available on the Order Creation Stream only — no other stream is session-aware yet.Starting a Session
Add an optionalsessionId (UUID) query parameter to the connection URL. Generate one value and reuse it across reconnects to keep the same session:
sessionId to skip starting a session — the connection behaves as a one-off, with no missed messages backfilled and no Summary Message sent.
Resumed vs. Fresh Sessions
Whether a session continued or started over is reported as aresumed field on the Summary Message.
A session can be resumed for up to 1 minute after a disconnect. Reconnecting with the same sessionId within that window continues the session: resumed is true, and the backfill covers whatever was missed since the last message delivered on the prior connection.
resumed is false when either:
- The connection uses a
sessionIdthat hasn’t been seen before, or - The connection reuses a
sessionIdfrom a prior session, but reconnects after the 1-minute window has elapsed
emit requests on the relevant streams.
Backfill
WhensessionId is supplied and the connection is subscribed to the Order Creation Stream, backfill runs automatically on connect: any missed messages are delivered first, followed by a sessionBackfill message summarizing the session.
Summary Message
See Order Creation Stream (or the Options equivalent) for the exact message shape.Limits
Backfill is capped at 500 missed events per market (or per contract, for Options). For each market or contract with at least one missed event:- If 500 or fewer events accumulated while disconnected, all of them are backfilled and the market (or contract) is listed in
backfilledMarkets - If more than 500 accumulated, none are backfilled and the market (or contract) is listed in
expiredMarketsinstead — reconcile that market’s order state from scratch via the REST API oremitrequests on the relevant streams