- API
- Volatility API
Volatility API
Implied volatility,
as an endpoint.
IV rank, IV percentile, the 52-week range, the vol cone, the term structure and the premium over realized. Each one is a GET that returns the number the terminal draws.
A real response
This is what
comes back.
Captured from the live endpoint on 2026-09-08, lists cut to a few rows so it fits on a page. The shape is exactly what your code receives. Run it on your own ticker from the endpoint page.
{
"current_iv": 34.43,
"data_source": "iv_rank_1y",
"historical_data_points": 252,
"is_full_year": true,
"iv30d": 33.05,
"iv_basis": "vendor_ivrank_series",
"iv_max_52w": 48.38,
"iv_mean": 38.53,
"iv_median": 38.39,
"iv_min_52w": 32.01,
"iv_percentile": 12.0,
"iv_percentile_1m": 66.67,
"iv_percentile_1y": 12,
"iv_percentile_source": "cores_ivPctile1y",
"iv_rank": 14.79,
"iv_rank_1m": 54.08,
"iv_rank_1y": 14.79,
"iv_state": "VERY_LOW",
"iv_std": 3.31,
"iv_stdv_from_mean": -1.49,
"iv_units": "percentage_points",
"lookback_days": 252,
"ticker": "NVDA",
"timestamp": "2026-09-08T05:06:35.749922"
}
Every response is wrapped as {"success": true, "data": {...}}. Errors use the same envelope with an error string and a status code that means what it says.
Call it three ways. Same token, same JSON.
curl -H "Authorization: Bearer avmcp_YOUR_TOKEN" \
"https://apexvol.com/api/mcp/data/iv-rank/NVDA"
import requests
headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
r = requests.get("https://apexvol.com/api/mcp/data/iv-rank/NVDA", headers=headers)
r.raise_for_status()
data = r.json()["data"]
print(data["iv_rank"])
What is NVDA's IV rank and percentile right now?
The assistant calls get_iv_rank and answers from the JSON above.More prompts for this family in the prompt library. Set the server up in Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, Windsurf or Gemini CLI.
The family
12 endpoints,
one prefix.
All under https://apexvol.com/api/mcp/data. Each card opens a page with the parameters and their bounds, every response field, a real captured response and a console that runs it on your ticker.
GET /hv-regimes/{ticker}
What realized-vol regime is NVDA in, and are the short windows above or below the long ones?
Historical volatility across windows, its term structure and the regime crossovers.
Premium
GET /iv-opportunities/{ticker}
Is NVDA's IV stretched far enough from its mean to expect reversion?
IV mean-reversion read: z-score, reversion target and the expected IV change.
Premium
GET /iv-rank/{ticker}
Is NVDA's implied volatility high or low for NVDA right now?
IV rank and IV percentile against the last year, with the range they were measured on.
Premium
GET /monies/{ticker}
What does the smoothed vol surface say about SPY at each delta and expiration?
The market-implied vol surface, the forecast surface, or the comparison between the two.
Pro
GET /skew/{ticker}
How steep is NVDA's put skew today compared with its own history and its sector?
Put-call skew slope, curvature and the percentile of today's skew.
Pro
GET /term-structure/{ticker}
Is SPY's IV curve in contango or inverted, and what move does each expiration price?
At-the-money IV by expiration, with the straddle-implied move for each one.
Premium
GET /vix
Where is the VIX right now and how much did it move today?
VIX level, change and the day's range.
Premium
GET /volatility-cone/{ticker}
How does NVDA's implied vol at each tenor compare with what the stock has actually realized over the same windows?
A realized-volatility cone per tenor next to the chain IV at the same tenor.
Premium
GET /vrp/{ticker}
Is NVDA's implied vol paying more than the stock actually moves?
Volatility risk premium: 30-day IV minus realized vol over a matching window, with an ex-earnings version.
Premium
GET /vrp/{ticker}/expirations
Where on NVDA's curve is the premium over realized sitting?
The volatility risk premium broken down by expiration.
Premium
GET /vrp/{ticker}/timeseries
How has the gap between NVDA's implied and realized vol moved over the last few months?
Daily IV, realized vol and their difference through time.
Premium
GET /batch/iv-rank
What is the IV rank of every name on my watchlist, in one call?
IV rank and percentile for up to 25 symbols in a single request.
Premium
Field by field
What each
number means.
iv_rank- Where today's IV sits between the 52-week low (0) and high (100).
iv_percentile- The share of the last year's days that closed with IV below today's.
current_iv- The IV the rank was computed from, in percentage points.
iv30d- The platform's 30-day constant-maturity IV, the basis for the VRP endpoints.
iv_min_52w, iv_max_52w- The bounds the rank is measured against.
iv_state- A label from VERY_LOW to VERY_HIGH so a caller can branch without thresholds.
iv_stdv_from_mean- How many standard deviations today's IV is from its one-year mean.
iv_basis, iv_units- Which series the numbers come from and their units. Every volatility endpoint carries both.
The same data, in plain English
7 MCP tools
wrap this family.
Connect the ApexVol MCP server and an assistant can call these by name. One URL, a sign-in, no token to paste.
- get_iv_rank
- get_volatility_cone
- get_volatility_risk_premium
- get_term_structure
- find_iv_opportunities
- get_vix_snapshot
- get_monies_surface
Set it up in:
What people build
Three things
this is for.
Recipes that use this family:
Access
- Auth
- Bearer token, prefix
avmcp_, created under Account, then API Access. Shown once, hashed at rest, rotates in one click. - Limits
- 60 requests a minute and 1,000 an hour per token, plus a monthly allowance by plan. Every response carries the remaining counts in headers.
- Plans
- Included with every paid or trial plan from $55 a month. Each endpoint follows the tier of its web feature; the cards above show which.
- Spec
- OpenAPI 3.1 at /docs/api/openapi.json, this family as one Markdown file, the whole reference at /llms-full.txt. Shared conventions, the error model and the changelog.
Questions
Asked before
the first call.
What is the difference between iv_rank and iv_percentile in the response?
iv_rank places today's IV between the 52-week low and high on a 0 to 100 scale. iv_percentile is the share of trading days in the lookback that closed with IV below today's level. A single spike can push the rank down for a year while barely moving the percentile, which is why both are returned.
Which IV series is the rank built on?
The response says so: iv_basis names the series and data_source names the lookback. The rank uses the vendor's IV-rank series, and iv30d is the 30-day constant-maturity IV the VRP endpoints use. The two can differ by a point or two, and the fields are labelled so a caller never has to guess.
How fresh is the data?
Live during US market hours, from the same feed the ApexVol terminal reads. Each response carries a timestamp. The historical arrays behind the rank and the cone are refreshed daily after the close.
What units are volatility numbers in?
Percentage points throughout: an IV of 34.43 means 34.43 percent annualized. Where a field is decimal instead (the chain's per-contract IV), the response says iv_units: decimal next to it.
Included with
every paid plan.
From $55 a month, tier-matched: your token queries the data your plan includes and Pro unlocks the full surface.
Real market data, not a sandbox. See it live on AAPL.