Heatseeker/API Reference/Heatmap

Key levels (classified nodes) for one or more symbols

GEThttps://api.skylit.ai/v1/gex/levels

The strikes Skylit classifies as nodes (king, gatekeeper, pika, barney, significant) for up to 10 symbols, strongest first, with each level's distance from spot. Same live source, filters and 5-second cache as /v1/heatmap; 1 credit per request.

Each symbol also carries summary: total net exposure, the strongest positive and negative strikes (the walls), and the flip level where cumulative net exposure changes sign. It is computed from the strikes this request returned, so widen maxStrikes for a wider view.

A call that cannot finish within 20 seconds answers 504 gateway_timeout (refunded); retry, or request fewer symbols.

Authorization

Authorization: Bearer <your API key>

Required. A missing header returns 401; an invalid, revoked or expired key returns 403.

Query parameters

  • symbolsstringrequired

    One ticker, or a comma-separated list for a single cross-asset call (e.g. SPY or SPXW,SPY,QQQ). Each is returned as an element of data.symbols. At most 10 distinct symbols (more → 400 invalid_parameter). Unknown symbols in a list are omitted; if none is available → 404 symbol_not_found.

    Index options are served per option root, and the roots hold different contracts. SPXW is the PM-settled S&P 500 options (every daily and weekly expiration, 0DTE included), the board the Skylit app's Trinity view uses. SPX is only the AM-settled monthlies, so it has no 0DTE or weekly gamma and reads very differently from SPXW. The same split applies to NDXP / NDX and RUTW / RUT. To match the app's Trinity or read 0DTE, request SPXW,SPY,QQQ.

  • metricstringdefault gamma

    Which Greek exposure to return per strike.

    gammavanna
  • maxStrikesdefault 92

    Maximum number of strikes around spot to return: an integer from 1 to 1000, or all for every strike the snapshot lists (SPXW lists about 730). Values above 1000 return 400 invalid_parameter; they are never silently reduced. Values below 1 are treated as 1. The single-symbol stream (/v1/stream?symbol=) accepts at most 400 and no all.

  • maxExpirationsdefault 5

    How many of the nearest expirations to net into each strike's value: an integer from 1 to 60, or all. Values above 60 return 400 invalid_parameter. Ignored when expirations is set.

  • includeEmptybooleandefault false

    By default, an interior strike whose every returned cell is below 50 in absolute value (listed but effectively untraded) is left out, judged on the selected metric alone. So gamma and vanna for the same instant can return different strike lists. The outermost strikes are never removed. true keeps every strike in the window, so the list is the snapshot's own contiguous ladder and is identical for gamma and vanna. Not supported on the single-symbol stream (symbol=).

  • expirationsstring

    Net each strike over exactly these expirations (YYYY-MM-DD, comma-separated) — one for a single-expiration heatmap (2026-05-22) or several for a custom set (2026-05-22,2026-06-19). Supersedes maxExpirations, and reaches any expiration the snapshot has, not just the nearest ones. Requested dates the symbol does not have are ignored; the expirations array in the response lists what was actually used. If none of them match, the response is 404 with code: expiration_not_found and the available dates in the message. On /v1/heatmap, expirations that have already expired are not available (they are trimmed from the live snapshot) — replay them with /v1/historical instead.

Responses

  • 200

    Levels per symbol.

  • 400

    Request validation failed.

  • 401

    Missing API key (unauthorized), sent by the gateway.

  • 402

    Out of credits (insufficient_credits).

  • 403

    Unknown, revoked or expired key (forbidden, from the gateway), or an admin-suspended account (account_suspended).

  • 404

    Unknown symbol, no data available, or none of the requested expirations exist for the symbol (code: expiration_not_found).

  • 429

    Per-minute rate limit exceeded.

  • 503

    Heatmap data is temporarily unavailable.

  • 504

    The request did not finish in time (gateway_timeout). Refunded; retry, or narrow the request.

Response fields

  • dataobject
    • symbolsobject[]
  • metaobject
    • metricstringrequired
      gammavanna
    • resolutionstringrequired

      Time resolution of the data served: "1s" when every symbol came from 1-second data, "1m" when any came from minute-resolution history.

      1s1m
    • modestringrequired
      livehistorical
    • cachedbooleanrequired

      True if served from the in-process cache.

    • delayedboolean

      True when your plan's data is delayed and this latest-data request was served as of delayMinutes ago (mode is then historical). Absent on real-time plans.

    • delayMinutesinteger

      The delay applied when delayed is true.

    • attribution

      How to credit this data. Most routes send the short form {text, url, terms} ("Data: Skylit"). Routes whose data class the licensing design (TERMS.md §5) tags explicitly — today, /v1/options/* — send the full licensing shape instead. Can be absent; do not infer sharing rules from the short form or from its absence.

Last updated

Was this page helpful?