Live SSE stream (one symbol per connection)
https://api.skylit.ai/v1/streamA Server-Sent Events (text/event-stream) feed of live per-strike
heatmap updates for one symbol. Open one connection per symbol.
Events:
connected— handshake, payload{symbol, creditsRemaining}.initial_data— current heatmap snapshot on connect.snapshot_update— full heatmap on each change.velocity_update— per-strike % change.credits— emitted every minute boundary, payload{remaining}.closed— stream terminates with{reason: "insufficient_credits" | "account_suspended" | "credit_check_failed"}.reconnect— server is recycling the connection (after ~1h), payload{reason: "max_duration"}. Reconnect to continue.: keepalivecomment every 30s for proxy keepalive.
Pricing. 1 credit on connect (charged before the SSE upgrade —
an under-funded client gets a clean 402 HTTP response, not a
half-open stream), then 1 credit per minute open. The per-minute
ticker emits event: credits {remaining: N} after each successful
debit so clients can budget the next minute.
Concurrency. Up to 5 concurrent streams per customer per pod.
Exceeding the cap returns 429 stream_limit_reached.
Expirations. Frames carry every expiration in the window (an
Expirations array plus one matrix column per expiration), so select
expirations client-side. The expirations parameter is snapshot-only —
sending it here returns 400 invalid_parameter rather than quietly
meaning something narrower than it does on /v1/heatmap.
OpenAPI is request/response-oriented and can't fully model an event stream. The connection costs 1 credit to open plus 1 per minute connected and closes after one hour; reconnect to continue.
Authorization
Authorization: Bearer <your API key>Required. A missing header returns 401; an invalid, revoked or expired key returns 403.
Query parameters
symbolstringrequiredSingle ticker to stream (e.g.
SPY). One symbol per connection.metricstringdefaultgammaWhich Greek exposure to return per strike.
gammavannamaxStrikesintegerdefault92min 1 · max 400Maximum number of strikes around spot to return.
maxExpirationsintegerdefault5min 1 · max 60How many of the nearest expirations to net into each strike's
value. Ignored whenexpirationsis set.
Responses
- 200
An SSE stream of heatmap events.
- 400
Request validation failed.
- 401
Missing or invalid API key.
- 403
The API key is invalid, revoked or expired, or the account is suspended.
- 404
Unknown symbol, no data available, or none of the requested
expirationsexist for the symbol (code: expiration_not_found). - 429
Per-minute rate limit exceeded.
Response fields
Returns string.
Last updated