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 Account and index API
version: '1.30'
servers:
- url: https://apexvol.com
security:
- bearerAuth: []
tags:
- name: Account and index
paths:
/api/mcp/data/:
get:
description: 'Endpoint index: every endpoint with its method, path, plan, parameter summary, docs URL and a working example request, plus the family list and links to the OpenAPI spec and the Markdown reference. Read from the endpoint records behind the developer pages. No market-data cost.
**Query parameters:** —
**Response shape:**
```json
{
"success": true,
"data": {
"docs": "https://apexvol.com/docs/api",
"endpoint_count": 64,
"endpoints": [
{
"docs": "https://apexvol.com/developers/implied-volatility-api/hv-regimes",
"example": "GET /api/mcp/data/hv-regimes/NVDA",
"family": "implied-volatility-api",
"method": "GET",
"one_liner": "Historical volatility across windows, its term structure and the regime crossovers.",
"params": "view=dashboard, days=252",
"path": "/api/mcp/data/hv-regimes/{ticker}",
"tier": "premium"
},
{
"docs": "https://apexvol.com/developers/implied-volatility-api/iv-opportunities",
"example": "GET /api/mcp/data/iv-opportunities/NVDA",
"family": "implied-volatility-api",
"method": "GET",
"one_liner": "IV mean-reversion read: z-score, reversion target and the expected IV change.",
"params": "",
"path": "/api/mcp/data/iv-opportunities/{ticker}",
"tier": "premium"
},
{
"docs": "https://apexvol.com/developers/implied-volatility-api/iv-rank",
"example": "GET /api/mcp/data/iv-rank/NVDA",
"family": "implied-volatility-api",
"method": "GET",
"one_liner": "IV rank and IV percentile against the last year, with the range they were measured on.",
"params": "lookback_days=252",
"path": "/api/mcp/data/iv-rank/{ticker}",
"tier": "premium"
}
],
"families": [
{
"docs": "https://apexvol.com/developers/implied-volatility-api",
"endpoint_count": 12,
"name": "Implied volatility",
"slug": "implied-volatility-api"
},
{
"docs": "https://apexvol.com/developers/options-chain-api",
"endpoint_count": 8,
"name": "Options chain",
"slug": "options-chain-api"
},
{
"docs": "https://apexvol.com/developers/options-greeks-api",
"endpoint_count": 3,
"name": "Options Greeks",
"slug": "options-greeks-api"
}
],
"markdown": "https://apexvol.com/llms-full.txt",
"openapi": "https://apexvol.com/docs/api/openapi.json",
"updated": "2026-09-08",
"version": 1
}
}
```'
operationId: get_root
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/GetRootResponse'
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: 'Endpoint index: every endpoint with its method, path, plan, parameter summary…'
tags:
- Account and index
/api/mcp/data/me/usage:
get:
description: 'The caller''s own meter: data requests used this month, the plan''s allowance, remaining, percent used and the reset time (first of next month, UTC); the live rate-limit position for this token; calls per endpoint this month with each endpoint''s docs page; active tokens on the account; the unknown paths this token hit in the last seven days. Costs nothing against the allowance. Any paid plan.
**Query parameters:** —
**Response shape:**
```json
{
"success": true,
"data": {
"calls_this_month": 0,
"docs": "https://apexvol.com/docs/api/guides/rate-limits",
"endpoints": [],
"limit": 10000,
"month": "2026-09",
"percent_used": 0.2,
"plan": "pro",
"rate_limits": {
"per_hour": 1000,
"per_minute": 60,
"remaining_hour": 1000,
"remaining_minute": 60
},
"remaining": 9981,
"resets_at": "2026-10-01T00:00:00+00:00",
"this_token": {
"label": "local capture 2026-09-08",
"token_id": "CAP4F1221",
"unknown_paths_7d": {}
},
"tokens_active": 1,
"unit": "data_requests",
"used": 19
}
}
```'
operationId: get_me_usage
responses:
'200':
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/GetMeUsageResponse'
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: 'The caller''s own meter: data requests used this month, the plan''s allowance…'
tags:
- Account and index
components:
schemas:
GetMeUsageResponse:
properties:
calls_this_month:
type: integer
docs:
type: string
endpoints:
items: {}
type: array
limit:
type: integer
month:
type: string
percent_used:
type: number
plan:
type: string
rate_limits:
properties:
per_hour:
type: integer
per_minute:
type: integer
remaining_hour:
type: integer
remaining_minute:
type: integer
type: object
remaining:
type: integer
resets_at:
type: string
this_token:
properties:
label:
type: string
token_id:
type: string
unknown_paths_7d:
properties: {}
type: object
type: object
tokens_active:
type: integer
unit:
type: string
used:
type: integer
type: object
GetRootResponse:
properties:
docs:
type: string
endpoint_count:
type: integer
endpoints:
items:
properties:
docs:
type: string
example:
type: string
family:
type: string
method:
type: string
one_liner:
type: string
params:
type: string
path:
type: string
tier:
type: string
type: object
type: array
families:
items:
properties:
docs:
type: string
endpoint_count:
type: integer
name:
type: string
slug:
type: string
type: object
type: array
markdown:
type: string
openapi:
type: string
updated:
type: string
version:
type: integer
type: object
securitySchemes:
bearerAuth:
description: ApexVol API token (avmcp_...) from apexvol.com/account, API Access.
scheme: bearer
type: http