Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: 'Options-analytics API (token surface). Auth: `Authorization: Bearer avmcp_` on every request; tokens are issued to any paid or trial plan from Basic, and each endpoint follows the same tier as the web app. Rate limits: 60/min and 1,000/hr per token, plus a monthly allowance per account measured in upstream data requests, by plan. The remaining counts come back in the X-RateLimit-* and X-Monthly-Budget-Remaining headers on every response, and GET /api/mcp/data/me/usage returns the month''s meter with a per-endpoint breakdown. IV values are percentage points unless a payload says otherwise (`iv_units`). The same endpoints power the ApexVol MCP server for AI assistants: `pipx install apexvol-mcp` (PyPI), setup at https://apexvol.com/mcp. Docs: https://apexvol.com/docs/api.'
title: ApexVol Options Greeks API
version: '1.30'
servers:
- url: https://apexvol.com
security:
- bearerAuth: []
tags:
- name: Options Greeks
paths:
/api/mcp/data/charm/{ticker}:
get:
description: 'Charm (delta-decay) exposure.
**Query parameters:** expiration (optional)
**Response shape:**
```json
{
"success": true,
"data": {
"call_charm": 10023682.817,
"charm_by_strike": [
{
"charm_exposure": 18249098.4446,
"oi": 2372,
"strike": 769
},
{
"charm_exposure": 16525084.9209,
"oi": 9544,
"strike": 770
},
{
"charm_exposure": -28726617.7301,
"oi": 4457,
"strike": 771
}
],
"data_status": "LIVE",
"detailed": [
{
"charm": 17.7856,
"charm_exposure": 10989702.8596,
"iv": 0.0568,
"oi": 6179,
"strike": 770,
"type": "C"
},
{
"charm": 16.4499,
"charm_exposure": 5535382.0614,
"iv": 0.0615,
"oi": 3365,
"strike": 770,
"type": "P"
},
{
"charm": -67.7526,
"charm_exposure": -9824127.9754,
"iv": 0.0556,
"oi": 1450,
"strike": 771,
"type": "C"
}
],
"dte": 0,
"expiration": "2026-09-08",
"put_charm": -4591755.8741,
"stock_price": 770.25,
"ticker": "SPY",
"total_charm": 5431926.943
}
}
```'
operationId: get_charm_by_ticker
parameters:
- in: path
name: ticker
required: true
schema:
type: string
- description: 'Which expiration to use. Defaults to the nearest one. Range: YYYY-MM-DD, a listed expiration.'
in: query
name: expiration
required: false
schema:
default: nearest
format: date
type: string
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/GetCharmByTickerResponse'
success:
type: boolean
type: object
description: 'Success: payload under `data` with `success: true`.'
'400':
description: A parameter is malformed; the error names it.
'401':
description: Missing, invalid, expired or revoked token.
'403':
description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
'404':
description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
'424':
description: The data feed did not answer for this symbol; retry.
'429':
description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
summary: Charm (delta-decay) exposure
tags:
- Options Greeks
/api/mcp/data/greeks-heatmap/{ticker}:
get:
description: 'Greeks heatmap across strikes and expirations (all Greeks; pick the one you need from the result).
**Query parameters:** option_type (default calls)
**Response shape:**
```json
{
"success": true,
"data": {
"aggregates": {
"charm": {
"by_expiration": [
-92401.1106,
-242908.5109,
-7145.8524
],
"by_strike": [
5190.4907,
76.8262,
9861.3066
]
},
"delta": {
"by_expiration": [
3546428.01,
10557890.51,
727504.27
],
"by_strike": [
1090601.21,
15281.14,
2807343.01
]
},
"gamma": {
"by_expiration": [
375676.8438,
725053.3309,
53555.5989
],
"by_strike": [
251.0156,
2.0766,
1635.0796
]
},
"rho": {
"by_expiration": [
108122.08,
337183.04,
38718.26
],
"by_strike": [
71678.42,
670.55,
198218.26
]
},
"theta": {
"by_expiration": [
-2007981.62,
-4739399.08,
-290533.85
],
"by_strike": [
-4464.65,
-29.7,
-22074.51
]
},
"vanna": {
"by_expiration": [
657303.858,
4607537.5648,
228262.6166
],
"by_strike": [
-145440.2013,
-1200.6728,
-370078.0536
]
},
"vega": {
"by_expiration": [
725724.59,
2246953.63,
211792.29
],
"by_strike": [
2597.99,
13.2,
12797.51
]
}
},
"as_of": "2026-09-08T07:49:22.291337+00:00",
"data_points": 192,
"earnings_date": null,
"expirations": [
"Sep 09 (1 DTE)",
"Sep 11 (3 DTE)",
"Sep 14 (6 DTE)"
],
"expirations_raw": [
"2026-09-09",
"2026-09-11",
"2026-09-14"
],
"greek_matrices": {
"charm": [
[
0.035,
0.0008,
0.0367
],
[
0.0242,
0.0287,
0.0065
],
[
0.0158,
null,
0.0059
]
],
"delta": [
[
0.9998,
0.9998,
0.9998
],
[
1.0,
1.0,
1.0
],
[
0.9976,
null,
0.9923
]
],
"gamma": [
[
0.0,
0.0,
0.0
],
[
0.0,
0.0,
0.0
],
[
0.0007,
null,
0.0014
]
],
"iv": [
[
1.9166,
1.0773,
1.6971
],
[
1.4744,
1.5669,
0.85
],
[
1.4007,
null,
0.6896
]
],
"rho": [
[
0.0253,
0.0257,
0.026
],
[
0.0,
0.0,
0.0
],
[
0.0077,
null,
0.0157
]
],
"theta": [
[
-0.0,
-0.0,
-0.0
],
[
-0.0,
-0.0,
-0.0
],
[
-0.0055,
null,
-0.017
]
],
"vanna": [
[
-0.0366,
-0.0016,
-0.0433
],
[
-0.099,
-0.1104,
-0.0459
],
[
-0.1363,
null,
-0.1033
]
],
"vega": [
[
0.0,
0.0,
0.0
],
[
0.0,
0.0,
0.0
],
[
0.003,
null,
0.0073
]
]
},
"greek_matrix": [
[
0.9998,
0.9998,
0.9998
],
[
1.0,
1.0,
1.0
],
[
0.9976,
null,
0.9923
]
],
"greek_type": "delta",
"levels": {
"max_pain": 222.5,
"max_pain_expiration": "2026-09-09",
"oi_call_wall": 240.0,
"oi_put_wall": 200.0
},
"option_type": "calls",
"stock_price": 230.3,
"strikes": [
185.0,
187.5,
190.0
],
"ticker": "NVDA"
}
}
```'
operationId: get_greeks_heatmap_by_ticker
parameters:
- in: path
name: ticker
required: true
schema:
type: string
- description: 'Which side to grid; net is calls minus puts. Range: calls, puts or net.'
in: query
name: option_type
required: false
schema:
default: calls
type: string
- description: 'The Greek returned as greek_matrix and greek_type. Under compact detail only its matrix and aggregates are kept. Range: delta, gamma, theta, vega, rho, vanna, charm or iv.'
in: query
name: greek
required: false
schema:
default: delta
type: string
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/GetGreeksHeatmapByTickerResponse'
success:
type: boolean
type: object
description: 'Success: payload under `data` with `success: true`.'
'400':
description: A parameter is malformed; the error names it.
'401':
description: Missing, invalid, expired or revoked token.
'403':
description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
'404':
description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
'424':
description: The data feed did not answer for this symbol; retry.
'429':
description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
summary: Greeks heatmap across strikes and expirations (all Greeks; pick the one you…
tags:
- Options Greeks
/api/mcp/data/third-order-greeks/{ticker}:
get:
description: 'Speed, zomma, color, vomma, ultima.
**Query parameters:** expiration (optional)
**Response shape:**
```json
{
"success": true,
"data": {
"data_status": "LIVE",
"definitions": {
"charm": "dDelta/dTime - Delta decay over time",
"color": "dGamma/dTime - How gamma changes as time passes",
"speed": "dGamma/dSpot - Rate of change of gamma with spot price",
"ultima": "dVomma/dVol - Third derivative wrt volatility",
"vanna": "dDelta/dVol - Delta sensitivity to volatility",
"vomma": "dVega/dVol - Convexity of vega (volga)",
"zomma": "dGamma/dVol - Sensitivity of gamma to volatility changes"
},
"detailed": [
{
"charm": 17.7874,
"color": -87.5795,
"iv": 0.0568,
"speed": -0.0285,
"strike": 770,
"type": "C",
"ultima": -3.5317,
"vanna": -1.2757,
"vomma": 0.0677,
"zomma": -4.129
},
{
"charm": 16.4516,
"color": -81.4013,
"iv": 0.0615,
"speed": -0.0226,
"strike": 770,
"type": "P",
"ultima": -2.5843,
"vanna": -1.0907,
"vomma": 0.0535,
"zomma": -3.552
},
{
"charm": -67.758,
"color": -65.5505,
"iv": 0.0556,
"speed": 0.0641,
"strike": 771,
"type": "C",
"ultima": -18.3207,
"vanna": 2.8936,
"vomma": 0.3634,
"zomma": -3.3136
}
],
"dte": 0,
"expiration": "2026-09-08",
"greeks_by_strike": [
{
"charm": 76.9258,
"color": -30.0987,
"speed": -0.0772,
"strike": 769,
"ultima": -32.2742,
"vanna": -3.7337,
"vomma": 0.8049,
"zomma": -1.2163
},
{
"charm": 17.1195,
"color": -84.4904,
"speed": -0.0256,
"strike": 770,
"ultima": -3.058,
"vanna": -1.1832,
"vomma": 0.0606,
"zomma": -3.8405
},
{
"charm": -65.3123,
"color": -64.6529,
"speed": 0.0567,
"strike": 771,
"ultima": -15.6858,
"vanna": 2.6714,
"vomma": 0.3219,
"zomma": -3.1162
}
],
"stock_price": 770.25,
"ticker": "SPY"
}
}
```'
operationId: get_third_order_greeks_by_ticker
parameters:
- in: path
name: ticker
required: true
schema:
type: string
- description: 'Which expiration to use. Defaults to the nearest one. Range: YYYY-MM-DD, a listed expiration.'
in: query
name: expiration
required: false
schema:
default: nearest
format: date
type: string
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/GetThirdOrderGreeksByTickerResponse'
success:
type: boolean
type: object
description: 'Success: payload under `data` with `success: true`.'
'400':
description: A parameter is malformed; the error names it.
'401':
description: Missing, invalid, expired or revoked token.
'403':
description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
'404':
description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
'424':
description: The data feed did not answer for this symbol; retry.
'429':
description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
summary: Speed, zomma, color, vomma, ultima
tags:
- Options Greeks
components:
schemas:
GetCharmByTickerResponse:
properties:
call_charm:
type: number
charm_by_strike:
items:
properties:
charm_exposure:
type: number
oi:
type: integer
strike:
type: integer
type: object
type: array
data_status:
type: string
detailed:
items:
properties:
charm:
type: number
charm_exposure:
type: number
iv:
type: number
oi:
type: integer
strike:
type: integer
type:
type: string
type: object
type: array
dte:
type: integer
expiration:
type: string
put_charm:
type: number
stock_price:
type: number
ticker:
type: string
total_charm:
type: number
type: object
GetThirdOrderGreeksByTickerResponse:
properties:
data_status:
type: string
definitions:
properties:
charm:
type: string
color:
type: string
speed:
type: string
ultima:
type: string
vanna:
type: string
vomma:
type: string
zomma:
type: string
type: object
detailed:
items:
properties:
charm:
type: number
color:
type: number
iv:
type: number
speed:
type: number
strike:
type: integer
type:
type: string
ultima:
type: number
vanna:
type: number
vomma:
type: number
zomma:
type: number
type: object
type: array
dte:
type: integer
expiration:
type: string
greeks_by_strike:
items:
properties:
charm:
type: number
color:
type: number
speed:
type: number
strike:
type: integer
ultima:
type: number
vanna:
type: number
vomma:
type: number
zomma:
type: number
type: object
type: array
stock_price:
type: number
ticker:
type: string
type: object
GetGreeksHeatmapByTickerResponse:
properties:
aggregates:
properties:
charm:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
delta:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
gamma:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
rho:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
theta:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
vanna:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
vega:
properties:
by_expiration:
items:
type: number
type: array
by_strike:
items:
type: number
type: array
type: object
type: object
as_of:
type: string
data_points:
type: integer
earnings_date:
type:
- string
- 'null'
expirations:
items:
type: string
type: array
expirations_raw:
items:
type: string
type: array
greek_matrices:
properties:
charm:
items:
items:
type: number
type: array
type: array
delta:
items:
items:
type: number
type: array
type: array
gamma:
items:
items:
type: number
type: array
type: array
iv:
items:
items:
type: number
type: array
type: array
rho:
items:
items:
type: number
type: array
type: array
theta:
items:
items:
type: number
type: array
type: array
vanna:
items:
items:
type: number
type: array
type: array
vega:
items:
items:
type: number
type: array
type: array
type: object
greek_matrix:
items:
items:
type: number
type: array
type: array
greek_type:
type: string
levels:
properties:
max_pain:
type: number
max_pain_expiration:
type: string
oi_call_wall:
type: number
oi_put_wall:
type: number
type: object
option_type:
type: string
stock_price:
type: number
strikes:
items:
type: number
type: array
ticker:
type: string
type: object
securitySchemes:
bearerAuth:
description: ApexVol API token (avmcp_...) from apexvol.com/account, API Access.
scheme: bearer
type: http