API Reference

Strategy Building, Simulation & Spreads

The Strategy Lab back end: Black-Scholes chain re-pricing, probability of profit, template strategy building and optimization (Basic via the simulator key), plus the Pro-tier calendar-spread analyzers and the coming-soon iron-condor scanner.

These endpoints use session-cookie auth (the platform UI). For programmatic access with a long-lived API token, see the Bearer-token surface on the MCP / Claude integration page.

Simulator (/api/simulator)

Feature key: simulator (Basic). POST bodies are JSON.

POST /api/simulator/simulate_chain
Basic simulator

Re-prices an entire chain with Black-Scholes at a hypothetical underlying price, DTE, and IV shift. Preserves each row's bid/ask spread width and returns recalculated prices and Greeks per strike. Uses the live 10-year Treasury rate.

Parameters

JSON: chain (array of chain rows), sim_price (number), sim_dte (number), iv_adjustment (%, default 0, e.g. -50…+50)

# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/simulator/simulate_chain" \
     -H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
     -d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/simulator/simulate_chain",
          headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
POST /api/simulator/pop
Basic simulator

Probability of profit for a set of option legs. {probability_of_profit, legs_count}.

Parameters

JSON: legs [{type call|put, action buy|sell, strike, iv, price, quantity}], stock_price, days_to_exp

# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/simulator/pop" \
     -H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
     -d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/simulator/pop",
          headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.

Strategy builder (/api/strategy)

Feature key: simulator (Basic).

POST /api/strategy/build
Basic simulator

Builds a named strategy from live chain data and returns the legs (with premiums and Greeks) plus full analysis (max profit/loss, breakevens, POP).

Parameters

JSON: ticker, strategy_type (required), params {expiration, width, target_delta, …}

# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/strategy/build" \
     -H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
     -d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/strategy/build",
          headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
POST /api/strategy/optimize
Basic simulator

Searches strikes for the optimal configuration of the strategy and returns the winning legs, its analysis, and the score.

Parameters

JSON: ticker, strategy_type (required), optimization_target ∈ max_profit | max_pop | best_risk_reward

# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/strategy/optimize" \
     -H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
     -d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/strategy/optimize",
          headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.

Calendar spreads (/api/calendar-spread)

Analysis endpoints use feature key calendar_spread_analyzer (Pro); the live ratio endpoints use calendar_ratio (Pro).

GET /api/calendar-spread/analysis/<ticker>
Pro calendar_spread_analyzer

Full calendar-spread IV-ratio analysis across front/back pairs.

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/calendar-spread/analysis/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/calendar-spread/analysis/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/calendar-spread/pair/<ticker>
Pro calendar_spread_analyzer

Detailed view of one front/back expiration pair.

Parameters

front, back (expirations, required)

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/calendar-spread/pair/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/calendar-spread/pair/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/calendar-spread/pair-greeks/<ticker>
Pro calendar_spread_analyzer

Greeks by strike for a front/back pair.

Parameters

front, back (required)

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/calendar-spread/pair-greeks/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/calendar-spread/pair-greeks/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/calendar-spread/ratio/<ticker>
Pro calendar_ratio

Live IV ratio between two DTE-defined expirations for entry timing. Returns current ratio, intraday series, and day statistics.

Parameters

front_dte (default 0), back_dte (default 1; must exceed front_dte), delta (smile point, default 50 = ATM; valid deltas per provider), delta2 (optional), history_days (≤20, default 5)

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/calendar-spread/ratio/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/calendar-spread/ratio/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/calendar-spread/ratio-history/<ticker>
Pro calendar_ratio

Hourly IV-ratio history from stored vol-surface snapshots, falling back to daily our institutional data feed history. Response includes source: snapshots | daily.

Parameters

front_dte, back_dte, delta, days (≤90, default 30), resolution (pass 'daily' to force EOD data)

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/calendar-spread/ratio-history/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/calendar-spread/ratio-history/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.

Iron condor scanner (coming soon)

Feature key iron_condor_scanner is unpublished with coming_soon=True; page requests redirect to a teaser and the API routes themselves return 503.

GET|POST /api/iron-condor/scan
Login + Pro [Coming soon]

Multi-ticker iron-condor scan.

# fetch a CSRF token, then GET|POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X GET|POST "https://apexvol.com/api/iron-condor/scan" \
     -H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
     -d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.get|post("https://apexvol.com/api/iron-condor/scan",
          headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/iron-condor/scan/<ticker>
Login + Pro [Coming soon]

Single-ticker scan.

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/iron-condor/scan/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/iron-condor/scan/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/iron-condor/universe
Login + Pro [Coming soon]

Scan universe.

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/iron-condor/universe"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/iron-condor/universe")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/iron-condor/config
Login + Pro [Coming soon]

Scanner configuration.

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/iron-condor/config"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/iron-condor/config")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
GET /api/iron-condor/quick
Login + Pro [Coming soon]

Quick scan.

# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/iron-condor/quick"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/iron-condor/quick")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Build an iron condor on SPY."

# Claude routes the request to the matching MCP tool — no HTTP required.
7 days free, cancel anytime Card required · no charge for 7 days
Start trial →