Every chart below is a live demo of what you can build with the CryptoVol API. CryptoVIX-style IV index, arbitrage-free 3D surfaces, term structure across sessions, smile comparison — all from public REST endpoints. Click View API call under any panel to see the exact request that powers it. Sign up free to start querying.
# Daily 30-day implied vol index, one row per (asset, date) curl -H "X-CryptoVol-Key: cvk_live_..." \ "https://cryptovol-api-nbakzshi6q-uc.a.run.app/v1/vol-index?ccy=BTC&tenor=30D&start_date=2025-12-01" # Python SDK — pip install cryptovol from cryptovol import CryptoVol cv = CryptoVol(api_key="cvk_live_...") idx = cv.vol_index(ccy="BTC", tenor="30D", start_date="2025-12-01") print(idx.data[-1].date, idx.data[-1].value) # → 2026-05-30 42.18
# Full arbitrage-free surface — all expiries × all strikes for one session curl -H "X-CryptoVol-Key: cvk_live_..." \ "https://cryptovol-api-nbakzshi6q-uc.a.run.app/v1/vol-surface/full?ccy=BTC&session=us" # Python SDK surf = cv.vol_surface_full(ccy="BTC", session="us") for exp in surf.expiries: print(exp.expiry, exp.forward, len(exp.strikes), "strikes")
# Get the full surface, then pick ATM (moneyness=1.0) at each tenor curl -H "X-CryptoVol-Key: cvk_live_..." \ "https://cryptovol-api-nbakzshi6q-uc.a.run.app/v1/vol-surface/full?ccy=BTC&session=us" # Python SDK — one call per session, pluck ATM row at each tenor for sess in ["asia", "london", "us"]: s = cv.vol_surface_full(ccy="BTC", session=sess) term = [(e.tenor, e.atm_vol) for e in s.expiries]
# Compare smile across the three daily sessions for one expiry for sess in ["asia", "london", "us"]: surf = cv.vol_surface_full(ccy="BTC", session=sess) smile = next(e for e in surf.expiries if e.expiry == "2026-06-27") print(sess, smile.atm_vol, smile.rr_25d, smile.bf_25d)
Everything you see above is built on top of the public CryptoVol API. Sign up for a free BASIC account (no card) and pull the same numbers into your backtester, dashboard, or trading bot.