Skip to main content
GET
A resumable Server-Sent Events stream of the live feed envelopes the platform broadcasts: whale-trade pulses and other public and insider feed events. This is a long-lived text/event-stream response. Keep the connection open and read frames as they arrive. It forwards the same backend-owned envelope shape as the internal feed, with no provider data recomputed. Authenticate with your oxi_sk Bearer key like every other /api/v1 endpoint. Connection counts are limited per API key and across the cluster. When either cap is exceeded you get 429 with a Retry-After. You get 503 with a Retry-After if the admission backend is briefly unavailable.
Every frame carries an SSE id equal to the envelope sequence. To resume after a disconnect, reconnect with the Last-Event-ID header. Use the last_event_id or seq query fallback when you cannot set the header. The stream replays the strictly-newer window before resuming live. If your resume point predates the retained window, the stream emits one event: resync marker instead of silently skipping frames. Idle connections receive periodic : keep-alive comment lines.

Authorizations

Authorization
string
header
required

API key authentication. Send your key in the Authorization header as Bearer oxi_sk_live_.... Live keys require an active Pro subscription and return live data.

Headers

Last-Event-ID
string

Sequence id of the last frame the client successfully processed. The stream replays the strictly-newer window before resuming live. Browser EventSource clients send this automatically on reconnect. Omit to attach live from now.

Query Parameters

last_event_id
string

Query-string fallback for the Last-Event-ID resume cursor when the client cannot set the request header. Numeric sequence id; non-numeric or absent attaches live with no replay.

seq
string

Alias for last_event_id. Numeric sequence id to resume after; non-numeric or absent attaches live with no replay.

event
string

Optional per-connection subscribe-time filter. Comma-separated list of frame wire types (the SSE 'type' discriminator, e.g. WhaleTradesInserted,wallet_grade_changed); a frame passes only when its type is in the set. An unknown token returns HTTP 400 naming the offending value. An empty/all-whitespace value is treated as absent (no constraint). Applied to BOTH the replay window and live frames, and always AFTER the per-subscriber privacy gate, so it can never widen visibility beyond what the key may already see. Combines with condition_id and min_grade as a logical AND; an absent param adds no constraint.

condition_id
string

Optional per-connection subscribe-time filter. Raw provider condition_id or mkt_-prefixed market id (normalized the same way the other v1 market endpoints normalize). A frame passes only when it carries a matching condition_id field; frames that carry no condition_id (e.g. whale-pulse events) are EXCLUDED while this is set. An empty value after normalization returns HTTP 400. Combines with event and min_grade as a logical AND; an absent param adds no constraint.

min_grade
enum<string>

Optional per-connection subscribe-time filter. A frame passes only when it carries a grade field whose grade is better-or-equal to this minimum (S is best). Frames that carry no grade field (every frame except wallet_grade_changed) are EXCLUDED while this is set. An invalid grade returns HTTP 400. Combines with event and condition_id as a logical AND; an absent param adds no constraint.

Available options:
S,
A,
B,
C,
D,
F

Response

Open Server-Sent Events stream. The body is an unbounded text/event-stream of frames; each data frame is a JSON feed envelope (with seq, published_at, type, and event-specific fields) and carries an SSE id equal to seq. resync marker frames use event: resync.

Newline-delimited SSE frames: 'id: \ndata: \n\n' for events, 'event: resync\nid: \ndata: \n\n' for resync markers, and ': keep-alive' comment lines while idle.