API REFERENCE

quantedTrader API

GEX, DEX, VEX and CEX (gamma, delta, vanna, charm exposure) by strike, walls, the gamma flip, vol and flow for 5,000+ US stocks & ETFs, over REST and MCP. The plan includes the quantedTrader dashboard.

Quickstart

  1. 1

    Get a key

    $79/month (includes the quantedTrader dashboard), or included with quantedUltra. Subscribe in one click, then create your key on your API dashboard.

    By continuing you agree to the API Terms — data for your own use, no redistribution.

  2. 2

    Make your first call

    curl -H "X-API-Key: $QO_TICKER_KEY" \
      https://api.quantedoptions.com/v1/ticker/NVDA/levels
  3. 3

    Or connect your agent

    Add the MCP server to Claude, ChatGPT or Cursor and ask in plain words. Set up MCP

Auth & limits

Send your key in the X-API-Key header (or Authorization: Bearer). Keys are never accepted in the URL.

Each account gets 50,000 requests a day, at up to 5 per second (bursts of 10). Every successful call counts once, MCP tool calls included. At the cap the API pauses until 00:00 UTC; nothing more is billed.

Only successful responses count toward your daily quota. Errors (for example an unknown symbol or a minute that was not captured), refusals and redirects are free. A bulk call that succeeds costs one request per symbol, even if some of its symbols return an error.

Two exceptions: /v1/ticker/bulk and the get_bulk_snapshot tool count one request per symbol, up to 50 symbols a call; /v1/ticker/{symbol}/history and the get_history tool count one request per 10 sessions returned, rounded up (20 sessions = 2 requests). A call that would go past the day's quota is refused before anything is counted. Every response says what it cost in X-Request-Cost.

A subscription is for one customer's own use: no sharing or resale of keys or data. Run it from as many of your own machines as you need, from up to 2 different addresses in any 10 minutes (say a server and a laptop); calls from AI apps (Claude, ChatGPT connectors) count as one address together. A third address gets a 429 until one of the others has been idle for 10 minutes.

Rate-limit and quota headers
X-RateLimit-Limit: 5
X-RateLimit-Burst: 10
X-Quota-Limit: 50000
X-Quota-Remaining: 49960
X-Quota-Reset: 2026-09-30T00:00:00.000Z
X-Request-Cost: 1
Error codes
401 api_key_required · invalid_key · key_revoked
Missing, unknown or revoked key.
403 not_entitled · wrong_key_type
No active plan (or quantedUltra), or a platform add-on key was used.
400 bad parameter
A missing, mistyped or out-of-range parameter, an invalid date or minute, or start after end. The body names the parameter and, where there is a fixed set, the allowed values.
404 not_found
Unknown endpoint or symbol, or a session or minute that was not captured (with the nearest ones). quantedFlow answers "No quantedFlow scan yet." before the first scan of the day and "… is not covered by quantedFlow." for a symbol outside its coverage.
501 not_available
A route that is not offered (for example /contract-bars).
503 not precomputed / storage
A minute that is still being built or storage that is briefly unreachable. Retry after Retry-After.
429 rate_limited
Too many requests: this key allows 5 requests per second sustained (bursts up to 10). Slow down and retry after the Retry-After interval.
429 daily_quota_exceeded
Daily limit reached: this account has used its 50,000 requests for today (MCP tool calls included). The quota resets at 00:00 UTC. There is no overage billing, so nothing further is charged.
429 too_many_locations
This account is in use from more than 2 addresses in the last 10 minutes. Calls from AI apps (Claude, ChatGPT connectors) count as one address together. A subscription is for one customer's own use; sharing or reselling access is not permitted.
429 too_many_failed_auths
More than 10 failed key checks from this address in 60 seconds. Check your key; the address is accepted again after the Retry-After interval.

Every error body has the same shape: {"error": "…", …}. Errors are not counted toward the quota. Every 429 and 503 includes Retry-After in seconds.

Data & history

Computed from options market data. SPX is included, computed from open interest as in quantedTicker. Cboe licensed SPX/VIX market maker data is available in quantedUltra ($399/month), which also includes this API. History from June 2026 onward, growing every trading day. Session fields are US/Eastern; quota fields are UTC. After a split or similar corporate action, answers for that symbol carry a corporate_action note (history: corporate_actions) for the days around it.

Endpoints

Each card shows a real response drawn as a chart. Open a card for parameters, code and the full JSON. The whole surface is also an OpenAPI 3.1 spec.

GET /v1/ticker/{symbol}/levelslive

Key levels at a minute: call and put walls (largest positive / most negative net GEX strike, either side of spot), gamma walls (call-only / put-only), zero gamma, the gamma flip the quantedTrader page draws, the regime, and the largest gamma nodes with their distance from spot. From 2026-10-05 also: max pain (the strike where the book’s open contracts would pay the least at settlement) and the highest call / put / total open interest strikes; hedge_flow, the shares and dollars dealers would trade to stay hedged for spot moves of ±0.5, ±1 and ±2% (each contract’s delta repriced at the moved spot from its own IV; dealers long calls and short puts as in GEX; negative = dealers sell, positive = buy) plus the charm drift to the 16:00 close (−CEX × minutes left / 1440); and front, the front expiry’s magnet (largest |net GEX| strike), max pain, pin score (0–100: net GEX within ±1% of spot ÷ the front expiry’s gross |net GEX|, floored at 0), share of the name’s gamma and 1-sigma expected move to settlement.

Levels → price chart
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
expiry string
"all" (default), "0dte" (alias "front"), "allx0" (all but the front expiry) or an expiry date YYYY-MM-DD listed for that symbol and minute. "0dte" / "front" is the front expiry: the nearest listed expiry on or after the session date, so it is a true 0DTE only for names with a daily expiry (SPX, SPY, QQQ, IWM); /levels names it in front_expiry. Named books are case-insensitive; anything else is a 400, an unlisted date a 404 with the listed ones.
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/levels"
Response

Loading…

GET /v1/ticker/{symbol}/exposure-bucketslive

GEX, DEX, VEX and CEX with call / put open interest by expiry bucket (0dte, 1-7d, 8-30d, 31-90d, 91d+: calendar days from the session date to expiry) and for every listed expiry, in one call, plus the front expiry’s share of gamma. Buckets sum to the totals up to rounding. Sessions from 2026-10-05 (earlier dates answer 404 with available_from).

Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
GET /v1/ticker/{symbol}/oi-changeslive

Open interest now vs the previous session’s close: call / put totals and changes, the strikes with the largest builds and unwinds (every live expiry summed) and the contracts that changed the most. Contracts that expired since are reported apart (expired_oi), not as unwinds. Open interest is settled once a day before the open: until it is published (early premarket) oi_updated is false and changes read 0. Sessions from 2026-10-05 (earlier dates answer 404 with available_from).

Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
GET /v1/ticker/{symbol}/exposureslive

GEX, DEX, VEX or CEX (gamma, delta, vanna, charm exposure) by strike (calls, puts, net), every minute. Dollars; units and signs under Definitions.

Exposures → strike profile
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
metric stringrequired
"gex", "dex", "vex" or "cex".
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
expiry string
"all" (default), "0dte" (alias "front"), "allx0" (all but the front expiry) or an expiry date YYYY-MM-DD listed for that symbol and minute. "0dte" / "front" is the front expiry: the nearest listed expiry on or after the session date, so it is a true 0DTE only for names with a daily expiry (SPX, SPY, QQQ, IWM); /levels names it in front_expiry. Named books are case-insensitive; anything else is a 400, an unlisted date a 404 with the listed ones.
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
band number
Strikes within ± this fraction of spot: 0.02, 0.05, 0.1 or 0.2. Default: every strike.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/exposures?metric=gex"
Response

Loading…

GET /v1/ticker/{symbol}/surfacelive

Implied volatility surface: IV by strike and expiry, skew and term structure.

Surface → term structure & skew
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
max_expiries number
12 (default), 24 or 60.
band number
Strikes within ± this fraction of spot: 0.1, 0.2 (default) or 0.5.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/surface"
Response

Loading…

GET /v1/ticker/{symbol}/iv-ranklive

IV rank and IV percentile with the ATM implied volatility they are computed from.

IV rank → gauge
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/iv-rank"
Response

Loading…

GET /v1/ticker/{symbol}/flowlive

Options flow: premium and volume by side, unusual prints, call/put balance through the session.

Flow → call / put premium
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
expiry string
"all" (default), "0dte" (alias "front"), "allx0" (all but the front expiry) or an expiry date YYYY-MM-DD listed for that symbol and minute. "0dte" / "front" is the front expiry: the nearest listed expiry on or after the session date, so it is a true 0DTE only for names with a daily expiry (SPX, SPY, QQQ, IWM); /levels names it in front_expiry. Named books are case-insensitive; anything else is a 400, an unlisted date a 404 with the listed ones.
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
window minutes
Look-back window for the premium split and top contracts: 5, 15 (default), 30 or 60.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/flow"
Response

Loading…

GET /v1/ticker/{symbol}/timelinelive

Minute-by-minute series for the session: spot, net GEX, net DEX and session call / put premium (fields ts, spot, gex, dex, call_prem, put_prem). Levels at any minute: /levels with date and minute (or the get_session_story tool).

Timeline → the session minute by minute
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/timeline"
Response

Loading…

GET /v1/ticker/{symbol}/signalslive

quantedFlow for one symbol: the contracts trading above their open interest (at least 500 contracts) at the latest scan, their premium by side, the dollars traded in the last 5, 30 and 60 minutes, and the top strikes.

quantedFlow → premium and timing
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
timestamp HH:MM
The latest quantedFlow scan at or before this minute (ET), on date (default: today). Alias: minute. Default: the latest scan.
limit number
Signals listed: 10, 25 (default), 50, 100 or 200.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/signals"
Response

Loading…

GET /v1/flow/signalslive

The quantedFlow Flow Signals board across all names: 50 contracts, at most 2 per ticker, index names excluded, ranked by volume / open interest, premium or the volume added in the latest scan. Each row also compares that latest burst with the contract’s own pace over the previous 30 minutes.

Flow Signals → the board
Parameters
sort string
"voi" (default), "premium" or "delta_vol".
dte string
"all" (default), "0", "7", "30", "90" or "90p".
sector string
Sector slug: comm, cons_disc, cons_stap, energy, fin, health, industrial, materials, realestate, tech or utilities.
baseline boolean
true (default) adds each row’s pace over the previous 30 minutes.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
timestamp HH:MM
The latest quantedFlow scan at or before this minute (ET), on date (default: today). Alias: minute. Default: the latest scan.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/flow/signals?sort=voi"
Response

Loading…

GET /v1/flow/premiumlive

Names ranked by quantedFlow premium: today, the last 5 sessions, or the dollars traded in the last hour.

quantedFlow premium → ranking
Parameters
period string
"day" (default) or "week".
metric string
"premium" (default) or "flow_1h" (day only).
side string
"all" (default), "C" or "P".
limit number
10, 25 (default), 50, 100, 250, 500 or 1000 names.
include_index boolean
false (default) keeps index names out.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
timestamp HH:MM
The latest quantedFlow scan at or before this minute (ET), on date (default: today). Alias: minute. Default: the latest scan. With period "week" it sets the last session’s scan; the 4 earlier sessions count their last scan.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/flow/premium?period=day"
Response

Loading…

GET /v1/screenlive

Screen every covered symbol from a snapshot refreshed every minute: net GEX, distance to zero gamma, walls and the largest node, IV, IV rank, skew (wings failing the sanity check read null), term slope, session premium and quantedFlow premium. What changed: net GEX vs the open (first capture at or after 09:30 ET) and vs the previous close in dollars and %, whether spot crossed the zero-gamma flip since the open, wall moves since the open and the previous close’s walls. Realized vol (rv10, rv20 from session closes: our /history closes, else the daily IV history’s; rv_source says which) and iv_rv_spread (iv30 − rv20). Gamma by expiry: front, within 7 days (net_gex_week), later, and the front expiry’s share. Front expiry and open interest: max_pain_front and max_pain_dist_pct, pin_score (0–100), oi_chg_total and oi_chg_pct (open interest vs the previous close).

Screen → ranked table
Parameters
filter string
Comma-separated conditions, e.g. "iv_rank>=80,net_gex<0,sector=tech" or "flip_crossed_today=above_to_below,iv_rv_spread>0.05". Operators >= <= > < = !=; every numeric field is filterable. String fields take = or !=: sector, type, regime, spot_vs_flip, spot_vs_flip_open (above | below), flip_crossed_today (above_to_below | below_to_above | none), rv_source (history | ivhistory | mixed).
sort string
Field to rank by (default net_gex), e.g. net_gex_chg_open, net_gex_chg_prev_pct, rv20, iv_rv_spread, gex_0dte_share. /v1/screen?describe=true lists every field and its definition.
order string
"desc" (default) or "asc".
limit number
1–500, default 50.
date YYYY-MM-DD
A past session (or today with timestamp): the screen as stored then. Stored on the hour 10:00–15:00 ET and at the 16:00 close; without timestamp a past date is its close. The body’s as_of names the stored snapshot. Default: the live screen.
timestamp HH:MM
With date (default: today): the latest stored snapshot at or before this minute (ET). Alias: minute. None stored then: 404 with the times stored that day.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/screen?filter=iv_rank%3E%3D80%2Cnet_gex%3C0&sort=net_gex&limit=20"
Response

Loading…

GET /v1/screen/sectorslive

The same snapshot summarised by sector (ETFs and indexes as their own buckets): names, total and median net GEX, share of names in negative gamma, median IV rank, median iv_rv_spread, session call / put premium and quantedFlow premium. Sorted by total net GEX; describe=true lists the fields.

Parameters
date YYYY-MM-DD
A past session (or today with timestamp): the screen as stored then. Stored on the hour 10:00–15:00 ET and at the 16:00 close; without timestamp a past date is its close. The body’s as_of names the stored snapshot. Default: the live screen.
timestamp HH:MM
With date (default: today): the latest stored snapshot at or before this minute (ET). Alias: minute. None stored then: 404 with the times stored that day.
GET /v1/ticker/{symbol}/term-structurelive

Per expiry: ATM IV, the 1-sigma expected move and range, and the 25-delta risk reversal, skew and butterfly; the shape (iv7 vs iv30); wings dropped by the sanity check are listed in dropped_wings.

Term structure → expected move
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
minute HH:MM
A single minute (ET), for today or any session since 2026-06-12. Default: the latest minute: the newest published capture of the 16:00 minute or earlier (a few seconds after each minute, at most 5 minutes behind; after the close, 16:00). A minute that was not captured answers 404 with the nearest minutes; a past minute costs one request like any other.
max_expiries number
6, 12, 24 (default) or 60.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/term-structure"
Response

Loading…

GET /v1/ticker/{symbol}/historylive

One row per session (its last capture at or before 16:00 ET; market holidays are not sessions): spot, net GEX and DEX, zero gamma, walls, largest node, IV30, skew, IV rank and premium by side (walls as in /levels: largest positive / most negative net GEX strike). zero_gamma starts 2026-09-08 (earlier captures carry no per-contract IV); before that IV30, skew and IV rank come from the daily IV history. When the last row is today’s session still in progress, "partial" names its date (else null).

History → session by session
Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.
start YYYY-MM-DD
First session.
end YYYY-MM-DD
Last session (start after end is a 400).
limit number
1–120 sessions, default 20. Counts one request per 10 sessions returned (rounded up).
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/NVDA/history?limit=20"
Response

Loading…

GET /v1/ticker/bulklive

Levels, exposures, vol, flow or quantedFlow signals for up to 50 symbols in one call, with a result or an error per symbol. Counts as one request per symbol.

Bulk → many symbols in one call
Parameters
resource stringrequired
"levels", "exposures", "vol", "flow" or "signals".
symbols stringrequired
Up to 50 comma-separated tickers.
date YYYY-MM-DD
Session date (ET). Default: the current or most recent session. Every session from 2026-06-12 on, minute by minute (with minute / timestamp); without a minute a past date returns that session’s close (its last capture of the 16:00 minute).
expiry string
"all" (default), "0dte" (alias "front"), "allx0" (all but the front expiry) or an expiry date YYYY-MM-DD listed for that symbol and minute. "0dte" / "front" is the front expiry: the nearest listed expiry on or after the session date, so it is a true 0DTE only for names with a daily expiry (SPX, SPY, QQQ, IWM); /levels names it in front_expiry. Named books are case-insensitive; anything else is a 400, an unlisted date a 404 with the listed ones.
metric string
exposures: "gex" (default), "dex", "vex" or "cex".
band number
exposures: 0.02, 0.05, 0.1 (default) or 0.2.
window minutes
flow: 5, 15 (default), 30 or 60.
limit number
signals: 10 (default), 25, 50, 100 or 200.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/bulk?resource=levels&symbols=NVDA%2CAMD%2CTSLA"
Response

Loading…

GET /v1/ticker/universelive

Every covered symbol (5,000+ US stocks & ETFs); with detail=true, its name, type (stock, adr, etf, etn, fund or index; null when unknown), sector, first available date and latest capture.

Universe → every covered symbol
Parameters
detail boolean
true adds name, type, sector, first and latest capture per symbol.
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/universe"
Response

Loading…

GET /v1/statuslive

Service status, read from the reference symbol SPY: the latest session, its last published minute, lag and the history stored. Your remaining quota is in every response's X-Quota-Remaining header.

Status → freshness
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/status"
Response

Loading…

GET /v1/ticker/statuslive

The same service status (reference SPY), plus when the screener snapshot was last built. For one symbol’s freshness use /v1/ticker/{symbol}/status.

Status → freshness
Code
curl -H "X-API-Key: $QO_TICKER_KEY" \
  "https://api.quantedoptions.com/v1/ticker/status"
Response

Loading…

GET /v1/ticker/{symbol}/statuslive

One symbol’s freshness: its latest session, last published minute, lag in minutes and the sessions stored.

Parameters
symbol pathrequired
Ticker, e.g. NVDA, SPY, SPX. See /v1/ticker/universe.

Definitions

How the numbers are built, in plain terms.

Walls

call_wall is the strike with the largest positive net GEX in the book, put_wall the strike with the most negative net GEX: the walls the quantedTrader page and the TradingView indicator draw. They are not tied to a side of spot (a put wall can sit above price when put gamma dominates there) and are null when the book has no positive (or no negative) strike. gamma_call_wall and gamma_put_wall are the strikes with the largest call-only and the most negative put-only GEX (the page’s “Gamma walls” toggle); on books where both sides pile onto one strike they can be the same strike.

Zero gamma

The price at which the total dealer gamma of the chain, repriced at that hypothetical spot from each contract’s own IV and open interest, crosses zero; the crossing nearest to spot within ±15%. When there is none, zero_gamma is null and zero_gamma_note says why (gamma keeps one sign across the range).

Gamma flip

gamma_flip: walk the strikes in price order, find neighbouring strikes whose net GEX changes sign, interpolate between them and keep the crossing nearest spot. It is the level the quantedTrader page, the TradingView indicator and the desktop add-ons draw. It is a local level on the strike ladder and is not a regime boundary. Like zero gamma it is bounded: when the nearest crossing is more than 15% from spot (or there is none), gamma_flip is null and gamma_flip_note says why.

Regime

regime.sign is the sign of net GEX summed over every strike of the book (positive, negative, or zero when it is exactly 0); regime.spot_vs_zero_gamma says whether spot is above or below zero_gamma. They usually agree; when they do not (the book is near its crossing), regime.note says so.

Units and signs

All exposures are in dollars (not millions), summed over open interest × 100 shares per contract. GEX = gamma × OI × 100 × spot² × 0.01: dollars per 1% move, calls +, puts − (dealer convention). DEX = delta × OI × 100 × spot: dollars of underlying, natural delta sign (calls +, puts −), no dealer flip. It is the delta notional of every open contract, deep in-the-money ones included (box-spread and conversion legs), so on index options such as SPX the level is dominated by deep in-the-money call open interest (about +$1.4T): read its change through the session, not its level (the page’s Net Delta chart rebases it to the open for the same reason). VEX = vanna × OI × 100 × spot × 0.01: dollars per vol point, calls +, puts −. CEX = charm × OI × 100 × spot / 365.25: dollars per day, calls +, puts −.

Front expiry (0dte)

expiry=0dte (alias front) is the front expiry: the nearest listed expiry on or after the session date. It is a true 0DTE only for names with a daily expiry (SPX, SPY, QQQ, IWM); for others it is the next weekly or monthly. /levels names it in front_expiry; allx0 is every expiry but that one.

Max pain and highest open interest

max_pain is the strike where the book’s open contracts would pay the least intrinsic value if the underlying settled there: for each strike K*, call OI × max(0, K* − K) + put OI × max(0, K − K*) summed over the strikes; the smallest total wins (ties: the lower strike). It is usually read on the front expiry (front.max_pain); the all book sums every expiry. highest_oi gives the strikes with the most call, put and call + put open interest.

Magnet and pin score

front.magnet is the front expiry’s strike with the largest absolute net GEX. front.pin_score (0–100) = the net GEX of the front expiry’s strikes within ±1% of spot (always including the strike nearest spot) ÷ the sum of absolute net GEX over all its strikes × 100, floored at 0. High when dealers are long gamma close to price; 0 when they are net short gamma there or the front expiry has no gamma. pin_net_gex and gross_gex are the two sums.

Dealer hedge

hedge_flow: for spot moves of −2, −1, −0.5, +0.5, +1 and +2%, the shares dealers would trade to stay delta-hedged and their value at the moved price. Dealers are taken to be long the calls and short the puts (the GEX convention); each contract’s delta is repriced at the moved spot with its own implied volatility (the zero-gamma repricing). Negative = dealers sell, positive = dealers buy: with positive gamma they sell rallies and buy dips. For small moves hedge_usd ≈ −net GEX × move %. charm_to_close: the minutes to 16:00 ET and −CEX × minutes / 1440, the hedge time decay alone implies at the current rate.

Exposure buckets and open interest change

/exposure-buckets sums each listed expiry’s GEX, DEX, VEX, CEX and open interest into 0dte, 1-7d, 8-30d, 31-90d and 91d+ by calendar days from the session date. /oi-changes compares each contract’s open interest with the previous session’s close capture over contracts that have not expired (expired_oi is reported apart); until the day’s settled open interest is published before the open, oi_updated is false and changes read 0.

quantedFlow qualifying set

Contracts whose volume today is at least their open interest and at least 500 contracts. Index names (SPX, SPY, QQQ, IWM, NDX, RUT, VIX) are kept off the cross-name board and ranked in their own group.

Qualifying premium vs flow

premium is volume × mid × 100 summed over the qualifying set at a scan: it measures how big that set is today. flow is the volume each contract added since the previous scan × mid × 100, summed over the scans inside a window (5, 30 or 60 minutes): it tells you when the money traded. Use flow for timing.

Latest burst vs pace

On the Flow Signals board, size_vs_baseline is the volume a contract added in the latest scan divided by its average per-scan addition over the previous 30 minutes.

Term structure shape

One definition everywhere (term-structure, the bulk vol item and the MCP tools): the 7-day against the 30-day constant-maturity ATM IV. Inverted when iv7 > 1.02 × iv30, upward when iv7 < 0.98 × iv30, flat in between.

Before the open

Before 09:30 ET the options are not trading, so the vol answers (iv-rank, term-structure, surface, the bulk vol item) use the previous session’s close capture and say so: vol_asof names its date and minute, with a note. From the open vol_asof is absent (null in the surface).

Expected move

1 sigma per expiry = spot × ATM IV × √(days to expiry / 365); the range is spot ± that amount. It is derived from ATM IV, not from the straddle price.

25-delta wings

call25 and put25 are the IVs at |delta| = 0.25 on each side. Risk reversal RR25 = call25 − put25 (negative when puts are richer); skew25 = put25 − call25; butterfly BF25 = (call25 + put25) / 2 − ATM IV. A wing IV more than 3× or less than a third of the same expiry’s ATM IV is treated as a bad quote: it reads null and is listed in dropped_wings. The 30-day skew25 is then null with skew25_note; the screener and /history apply the same rule.

IV rank and percentile

Today’s 30-day ATM IV against the previous 252 sessions (or all sessions we have, if fewer): rank = (IV30 − low) / (high − low) × 100, with today’s IV30 included in the low and high, so it stays within 0–100; percentile = the share of those sessions with a lower IV30. Both are null with fewer than 20 sessions of history.

MCP

Point any MCP client at https://api.quantedoptions.com/v1/mcp with your key. The assistant picks the tool; each call is one request from the same daily quota. In claude.ai and ChatGPT, add a custom connector with that URL instead and sign in with your quantedOptions account (OAuth): no key to paste, and the app shows up under Connected apps on your API dashboard.

{
  "mcpServers": {
    "quantedticker": {
      "url": "https://api.quantedoptions.com/v1/mcp",
      "headers": { "X-API-Key": "qo_tk_••••" }
    }
  }
}
  • get_levelsliveWalls, zero gamma and the largest gamma nodes for a symbol, relative to spot, with max pain, the highest open interest strikes, the front expiry’s magnet and pin score, and the dealer hedge for a 1% move.
  • get_0dteliveThe front expiry (0DTE on names with daily expiries): walls, zero gamma, magnet, max pain, pin score (0–100), expected move to settlement, its share of the name’s gamma and the dealer hedge for ±0.5% and ±1%.
  • get_hedge_flowliveWhat dealers would buy or sell to stay hedged if spot moved ±0.5, ±1 or ±2% (shares and dollars, contracts repriced from their own IV), and the charm drift to the close.
  • get_exposure_by_expiryliveGEX, DEX, VEX and CEX with open interest by expiry bucket (0dte, 1-7d, 8-30d, 31-90d, 91d+) and per expiry, in one call.
  • get_oi_changesliveOpen interest vs the previous close: totals by side, the strikes with the largest builds and unwinds, and the contracts that changed most.
  • get_exposure_profileliveGEX, DEX, VEX or CEX by strike for a symbol and expiry.
  • get_vol_snapshotliveATM IV, IV rank, skew and the term structure shape (iv7 vs iv30, as in term-structure) in one call, with the front expected move.
  • get_flowliveThe session’s options flow: premium by side and the notable prints.
  • get_session_storyliveHow the positioning changed through a session (today or any session since 2026-06-12), minute by minute, summarised; optionally for a window (start / end HH:MM).
  • compare_symbolsliveSide-by-side gamma positioning for up to 6 tickers: net GEX, zero gamma and walls vs spot (extra tickers are listed as not compared). For vol across names use get_bulk_snapshot with resource vol.
  • scan_universeliveScreen every covered symbol by gamma (net GEX, distance to the flip, largest node), IV and IV rank, flow premium, what changed since the open or the previous close, realized vol vs IV, or gamma by expiry bucket.
  • get_sector_summaryliveGamma, IV rank, IV vs realized vol and premium by sector across every covered symbol.
  • get_historylivePast sessions for a symbol (from June 2026 onward): each session’s close, one request per 10 sessions returned; or the same minute of each session (minute = HH:MM, up to 20 sessions), one request per session.
  • find_symbolsliveLook up covered tickers by name or sector.
  • get_quantedflowlivequantedFlow for one symbol: qualifying premium by side, flow over the last 5/30/60 minutes, top strikes.
  • get_flow_signalsliveThe quantedFlow Flow Signals board across all names.
  • get_flow_premiumliveNames ranked by quantedFlow premium, today or over the last 5 sessions.
  • get_term_structureliveATM IV, expected move and 25-delta risk reversal per expiry.
  • get_bulk_snapshotliveLevels, vol, flow or quantedFlow for up to 50 symbols at once (one request per symbol).
  • get_vol_surfaceliveThe implied volatility surface (strikes × expiries) for a symbol at any minute: IV at fixed distances from spot per expiry, the ±5% skew and the constant-maturity ATM IVs; the structured answer carries every point.
  • get_accountliveYour plan, requests used and remaining today, when the quota resets, the rate limit and how fresh the data is. Free (not counted).

Starter prompts

The server also lists ready-made questions (MCP prompts). claude.ai, ChatGPT, Cursor and other clients show them as starters: pick one, fill in a ticker or two, and it tells the assistant which tools to call. Opening a prompt is free; the tool calls it leads to count as usual. The answers are your own analysis of the data, not advice.

  • morning_gamma_brief(symbols?)Levels, gamma regime and the change since the prior close for a watchlist (default SPY, QQQ, IWM and the largest names).
  • negative_gamma_near_flip(sector?)Names in negative gamma trading within about 2% of their zero-gamma flip.
  • high_iv_rank_screen(min_rank? (70), regime?)IV rank screen with skew and term structure context.
  • unusual_flow_today(dte?)quantedFlow signals and premium leaders, each with its gamma context.
  • symbol_deep_dive(symbol)Levels, exposure by strike, vol, term structure, flow and the session story for one name.
  • what_changed_since_open(symbol)The session story and the levels now versus the open.
  • compare_watchlist(symbols)Gamma positioning and vol side by side for a list of tickers.
  • sector_overviewThe market-wide screen grouped by sector: regime, flip distance, IV rank and flow.

Client setup

Coding and desktop clients connect with your API key in the X-API-Key header. Replace qo_tk_YOUR_KEY with your key; it never goes in the URL or in a prompt.

Claude Code

Run once in a terminal (add --scope user to use it in every project).

claude mcp add --transport http quantedtrader https://api.quantedoptions.com/v1/mcp \
  --header "X-API-Key: qo_tk_YOUR_KEY"
Claude Desktop

claude_desktop_config.json (Settings → Developer → Edit config). Needs Node.js; mcp-remote bridges the key header.

{
  "mcpServers": {
    "quantedtrader": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.quantedoptions.com/v1/mcp",
        "--header",
        "X-API-Key:${QO_KEY}"
      ],
      "env": {
        "QO_KEY": "qo_tk_YOUR_KEY"
      }
    }
  }
}
Cursor

~/.cursor/mcp.json (or .cursor/mcp.json in a project).

{
  "mcpServers": {
    "quantedtrader": {
      "url": "https://api.quantedoptions.com/v1/mcp",
      "headers": {
        "X-API-Key": "qo_tk_YOUR_KEY"
      }
    }
  }
}
VS Code

.vscode/mcp.json in your workspace (Copilot agent mode). VS Code asks for the key once and stores it.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "qo-key",
      "description": "quantedTrader API key",
      "password": true
    }
  ],
  "servers": {
    "quantedtrader": {
      "type": "http",
      "url": "https://api.quantedoptions.com/v1/mcp",
      "headers": {
        "X-API-Key": "${input:qo-key}"
      }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json.

{
  "mcpServers": {
    "quantedtrader": {
      "serverUrl": "https://api.quantedoptions.com/v1/mcp",
      "headers": {
        "X-API-Key": "qo_tk_YOUR_KEY"
      }
    }
  }
}
Any MCP client

Streamable HTTP at the URL below; send the key in the X-API-Key header (or Authorization: Bearer).

{
  "mcpServers": {
    "quantedtrader": {
      "type": "http",
      "url": "https://api.quantedoptions.com/v1/mcp",
      "headers": {
        "X-API-Key": "qo_tk_YOUR_KEY"
      }
    }
  }
}

For agents

Every tool answers with short readable text (ending with “Data as of HH:MM ET, lag N min”) and the same numbers as structured JSON (MCP structuredContent), described by the tool’s outputSchema. get_account shows your requests used and remaining today and costs nothing.

The server also serves reference docs as MCP resources (free to read), so an agent can look up a field or a definition without leaving the conversation:

  • quantedoptions://docs/fieldsEvery field the tools return (levels, exposures, vol, flow, quantedFlow, screener, sector summary) with its definition and unit.
  • quantedoptions://docs/methodologyHow GEX, DEX, VEX and CEX, walls, zero gamma, the gamma flip, IV, IV rank, realized vol and quantedFlow are computed.
  • quantedoptions://docs/limitsDaily quota, rate limit, what each tool call costs, fair-use and credential rules.
  • quantedoptions://coverageUniverse size, capture cadence, history start and current data freshness.

Machine-readable docs: the OpenAPI 3.1 spec, llms.txt and llms-full.txt (every endpoint, tool, resource and definition in one file).

quantedTrader API reference | quantedOptions