---
title: "Implied volatility surface for BTC/ETH (Deribit) — $0.03/call"
method: GET
path: "/api/v1/options-iv/{asset}"
tags: ["options", "implied-volatility", "paid"]
---

# Implied volatility surface for BTC/ETH (Deribit) — $0.03/call

`GET /api/v1/options-iv/{asset}`

## Request

- Base URL: `https://kronossignals.com` (the document declares no server; this is the origin it was published from)
- URL: `https://kronossignals.com/api/v1/options-iv/{asset}`
- Auth: none declared

Returns the implied volatility surface for BTC or ETH from Deribit public options data (no auth). Fields: ATM IV (annualized %), IV rank and IV percentile (from Kronos iv_history table, daily cron), term structure (weekly/1m/3m ATM IV) with contango/backwardation/flat shape label, proper 25-delta risk reversal (BS-approximated strikes, put IV − call IV), 10-delta wing IVs, max-pain strike across top-5 expiries, and a vol-regime label (compression/normal/event-risk/expansion). IV rank/percentile return null with iv_history_status:'accumulating' until ≥20 days of history. Falls back to OKX options if Deribit is unreachable. Returns available:false if both fail. 1-hour in-memory cache. $0.03 USDC on Base mainnet via x402. BTC and ETH only.

## Path parameters

- `asset` 'btc' | 'eth', required

## Response `200`

Options IV surface returned (payment verified)

- object
  - `available` boolean, required
  - `asset` string, required
  - `underlying_price` number, nullable
  - `data_source` 'deribit' | 'okx', required
  - `atm_iv` number, nullable, required: OI-weighted ATM implied volatility, annualized in %.
  - `iv_rank` number, nullable: Where current ATM IV sits within the trailing 1y min–max range (0–100). null while accumulating <20 days of history.
  - `iv_percentile` number, nullable: % of historical days with ATM IV strictly below current. null while accumulating.
  - `iv_rank_note` string: Explains iv_rank/iv_percentile computation or the accumulating status.
  - `iv_history_days` integer, nullable: Number of days of ATM IV history in iv_history table (trailing 1y). null if Supabase unavailable.
  - `term_structure` object[], required: ATM IV by expiry bucket (weekly ≤14d, 1m 15-50d, 3m 51-130d). Present buckets only.
    - `label` 'weekly' | '1m' | '3m'
    - `expiry` string
    - `days_to_expiry` integer
    - `atm_iv` number, nullable
  - `term_structure_shape` 'contango' | 'backwardation' | 'flat' | 'insufficient_data': Shape of the ATM IV term structure. contango = longer-tenor IV > shorter (normal); backwardation = inverted (front IV elevated, event risk); flat = within ±1.5 vol pts.
  - `skew_25d` number, nullable: 25-delta risk reversal = put IV − call IV at BS-approximated 25-delta strikes for the front expiry. Positive = put-side premium (downside hedging demand). Falls back to OTM-band median if approximation fails.
  - `wing_10d_call_iv` number, nullable: IV at the nearest call strike to the BS-approximated 10-delta level (front expiry). null if insufficient data.
  - `wing_10d_put_iv` number, nullable: IV at the nearest put strike to the BS-approximated 10-delta level (front expiry). null if insufficient data.
  - `skew_note` string: Describes how skew_25d was computed, including the strikes used and any approximation caveats.
  - `max_pain_strike` number, nullable: Strike minimising total option-writer payout across top-5 nearest expiries.
  - `vol_regime` 'compression' | 'normal' | 'event-risk' | 'expansion', required
  - `vol_regime_note` string
  - `realized_vol` number, nullable: Realized volatility (annualized %, same basis as atm_iv) from Binance 30d daily close-to-close log returns. null if Binance fetch fails.
  - `vrp` number, nullable: Variance risk premium: atm_iv − realized_vol (annualized percentage points). Positive = options priced above trailing realized vol.
  - `vol_regime_iv_band` 'LOW' | 'MID' | 'HIGH' | 'insufficient_data': Static-band heuristic classification of atm_iv level, distinct from vol_regime (term-structure based). See vol_regime_iv_band_note.
  - `vol_regime_iv_band_note` string: Explains the static thresholds used to classify vol_regime_iv_band.
  - `methodology_vrp` string: Explains the unit conversion between atm_iv (Deribit) and the realized-vol estimator used for vrp.
  - `as_of` string, date-time, required
  - `disclaimer` string, required

## Other responses

- `400`: Unsupported asset (only btc and eth are supported).
- `402`: Payment Required — x402 micropayment instructions in response body.
- `503`: Both Deribit and OKX options APIs were unreachable.

---

[API](https://skmtc.dev/kronossignals/apis/kronos-crypto-data-api.md) · [All operations](https://skmtc.dev/kronossignals/apis/kronos-crypto-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kronossignals/apis/kronos-crypto-data-api/revisions/bfdcf7230e93?raw)
