Options Analytics API - Developer Access
Last reviewed: by Options Analysis Suite Research.
API Access
The core pricing, Greeks, calibration, exposure, and market-data surfaces in the webapp are also available as a REST API and WebSocket streaming service. The data-api serves 17 pricing models with webapp-aligned parameter names for the public pricing surface (10 standard plus 7 exotic: Barrier, Asian, Lookback, Digital, Compound, Chooser, Multi-Asset), auto-calibration for 5 of them against live chain data, real-time Greek exposure analytics, and pre-computed market data, programmatically, for devs and quants.
📖 Interactive API Documentation
Browse all endpoints, inspect request/response schemas, and try live requests directly from your browser:
data.optionsanalysissuite.com/docs →The docs site includes full OpenAPI 3.0 specs, example requests, authentication details, and a "Try it" playground that makes real API calls with your key.
What the API offers
- 17 pricing models: 10 standard (Black-Scholes, Heston, SABR, FFT (Carr-Madan with 6 processes), Variance Gamma, Jump Diffusion (Kou/Bates/Merton), Binomial, PDE, Monte Carlo, Local Volatility (PDE with Dupire/eSSVI surface calibration)) plus 7 exotic (Barrier, Asian, Lookback, Digital, Compound, Chooser, Multi-Asset)
- All 17 Greeks for every pricing model (exotics included): Delta, Gamma, Theta, Vega, Rho, Epsilon, Vanna, Charm, Vomma, Veta, Speed, Zomma, Color, Ultima, DcharmDvol, Lambda, Phi. Analytical where possible (BS, FFT, VG), finite-difference for the rest (including Monte Carlo via parallel bump-and-reprice).
- Exotic strategy insights: set
includeInsight: trueon/v1/compute/greekswith an exotic model to get the Strategy-page comparison card: DCA advantage, barrier level sensitivity, timing premium, implied probability, wait value, capital efficiency, or correlation effect, depending on the model. - Ticker auto-fill: pass
symbol: "AAPL"+expiry: "YYYY-MM-DD"(or rawtin years) on/v1/compute/priceor/greeksand the API fills spot, sigma, dividend, risk-free rate, and tenor from cached market data. Tenor is always required, the API never invents one. MultiAsset supportsmodelParams.tickers: [...]for automatic 5-year correlation + HV resolution across the basket. Opt in to auto-calibration (Heston/SABR/VG/JD/LocalVol) withresolve.calibration: true. - Auto-calibration: Heston, SABR, VG, JD, and Local Vol calibrate against live broker chain data and return calibration IDs for reuse. Typical fit time is 1–15 seconds; Heston precise mode and Bates JD (full Heston-plus-jumps) can take up to ~60 seconds.
- Greek exposure analytics: one exposure endpoint returning GEX, DEX, VEX, Vanna, Charm, Vomma with gamma flip, call/put walls, dealer positioning regime
- Real-time WebSocket streaming: live quotes, Greeks, and computed exposure snapshots pushed on significant price ticks
- Historical market data: spot price, call/put volume, call/put OI, put/call ratio, ATM IV, ATM IV 30d, volume/OI ratio, Greeks time series per symbol
- FINRA / SEC regulatory data: failure-to-deliver, short volume, ATS/OTC weekly, threshold list history
- Calendars: economic events, IPO, dividend, stock splits
- Asset-page data: news, fundamentals, earnings history, analyst ratings, insider trading, company profile
- Fed / Treasury / Bonds: FRED series, Treasury auctions, bond ETFs, TRACE aggregates, sentiment
- Pre-computed analytics: market regime, IV surfaces, daily snapshots, scanner, max pain, expected move, risk-neutral + lognormal probability distributions
BYOK broker credentials
The API uses Bring Your Own Key for market data. Calibration and streaming endpoints accept your own Tradier or TastyTrade credentials via HTTP headers. You pay broker fees directly (often $0), and we handle all the compute on our end. Static compute endpoints (pricing, Greeks, analytics on passed-in data) don't require any broker credentials.
Authentication
All /v1/* endpoints require an API key: Authorization: Bearer oas_live_... or
X-API-Key header. Generate keys from your Account page once you're on the API tier.
Quotas and Fair Use
API tier limits are enforced per-user (not per-key), and split into a few different pools:
- Rate limits: 120 data requests per minute + 120 compute requests per minute (sliding window, 60-second bucket)
- Concurrency caps: 6 concurrent "cheap" compute (BS, binomial, exposure, max pain) · 2 concurrent "expensive" compute (MC, PDE, Heston, SABR, JD, VG, FFT, Local Vol) · 1 concurrent calibration
- Calibration quota: hard-capped at 500 per day per user, which prevents Bates calibration loops from exhausting compute budget
- No monthly call cap. Fair-use limits only.
- WebSocket streaming: 5 concurrent sessions · 50 symbols max per session · 30 messages/sec max per session (token bucket; control events are exempt)
When a limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header
pointing to the next reset. Calibration quota resets at midnight UTC.
Fair-use clause: We reserve the right to throttle or suspend accounts exhibiting sustained usage patterns that disproportionately consume compute resources, even if technically within the documented limits (e.g., continuous calibration loops, indefinite WS sessions at max message rate). See the Acceptable Use Policy and Terms of Service §16.2 for details.
Best Practices (especially for LLM-driven agents)
If you're wiring the API into an LLM agent (ChatGPT, Claude, Cursor, Windsurf, a custom MCP server), a handful of patterns keep your calls efficient and well under fair-use thresholds:
-
Calibrate once, then persist the fitted params — not the
calibrationId. ThecalibrationIdreturned by/v1/compute/calibrateis a short-lived handle into a 30-second in-memory cache; it works for immediate follow-up/priceand/greekscalls but is not durable. For reuse across sessions or minutes later, save the fitted parameters from the calibration response and pass them asmodelParamson subsequent calls. Either path avoids the 500/day calibration quota. Do not setresolve.calibration: trueon every call for the same symbol — that re-fits each time and burns your daily cap. -
Prefer
/v1/data/*over recomputing. Greeks history, IV surfaces, snapshot metrics, metrics-batch, scanner rankings, and regime classifications are precomputed or cached where available — typically much faster than recomputing from scratch. Don't call/v1/compute/greeksin a loop to reconstruct what/v1/data/greeks-history/:symbolalready returns. -
Use batch endpoints where they exist.
/v1/data/metrics/batchaccepts multiple symbols in one call. Pricing and Greeks endpoints accept ticker lists viamodelParams.tickersfor MultiAsset. One batch call beats a loop of N single-symbol calls on rpm, latency, and cost. -
Use ticker auto-fill instead of fabricated numerics. LLMs sometimes hallucinate
S,sigma,r,tfrom stale training data. Passsymbol+expiryand let the API resolve from cached market data — the response'sresolvedblock tells you exactly which fields were filled from which source (snapshot,atmIv-expiry,hv-30d,fred-DGS3MO, etc.) so you can audit. -
Always inspect
warningsandresolvedbefore acting. When ticker auto-fill runs, the response includes aresolvedblock (what was filled and from where) and a top-levelwarningsarray (stale quotes, missing fields, fallbacks used). Agents that ignore these can take action on a price computed with a one-week-old spot or a missing-dividend fallback. Check both before forwarding numbers downstream. -
Honor
Retry-Afteron 429. When you hit a rate limit, the response includesRetry-Afterin seconds. Agents that retry instantly in a tight loop just bounce off the same limit and waste tokens. Sleep the suggested duration, then proceed. -
Don't repoll faster than the underlying data updates. Most
/v1/data/*endpoints back tables that refresh once a day (or on a documented cron). If you're hitting/v1/data/history/:symbolevery 30 seconds, you're getting the same bytes. The cache handles this server-side, but skipping the call entirely saves your rpm budget. Data responses includeX-Cache-Status(values includeHIT,MISS,DEDUP,NO_REDIS, and error/fallback statuses) — if you're seeing all HITs, you're polling too fast. -
Stream live data over WebSocket, don't poll REST. If you need intraday quote or
exposure updates, the
/v1/wsendpoint delivers them at up to 30 msg/sec across 50 symbols per session. Polling a REST endpoint every second for the same data burns your rpm and still has multi-second staleness. - Match model to task. Black-Scholes and Binomial are sub-100ms and correct for vanilla European/American options. Reserve Heston, SABR, Local Vol, Jump Diffusion, and Monte Carlo for cases where skew, jumps, or path-dependence actually matter. An agent that defaults to Heston for every price/Greeks call is paying 10×–100× the latency for the same answer.
- Scope and secure keys. Create separate keys for compute-only, data-only, and streaming use cases — scopes limit blast radius if a key leaks. Never embed keys in client-side JS, browser extensions, public repos, or LLM tool manifests that get logged or shared.
This page is part of the Options Analysis Suite documentation hub. Browse the glossary for term definitions.