# IV term structure `GET` `https://api.unusualwhales.com/api/socket/iv_term_structure` **NOTE:** This is the documentation for websocket channels `iv_term_structure` and `iv_term_structure:`. Websocket access for personal use is only available through the [Advanced plan](https://unusualwhales.com/pricing?product=api). You can find fully-functional examples that stream data from many channels here: - Python: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output) - Javascript: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs) Connect to the websocket URI: `wss://api.unusualwhales.com/socket?token=` then `join` the channel you wish to stream, for example `iv_term_structure:AAPL` for live term-structure updates for AAPL. Omit the ticker suffix (`iv_term_structure`) to receive the updates for every ticker. Each message carries the ATM implied volatility and expected move for one real option expiry, the raw per-expiry entries that the `interpolated_iv` channels interpolate onto fixed horizons. This is the live counterpart of the [`/stock/:ticker/volatility/term-structure`](https://api.unusualwhales.com/docs/operations/PublicApi.TickerController.implied_volatility_term_structure) endpoint. A ticker updates at most every ~5 seconds, with one message per expiry whose values changed. Payload format: ``` [ "iv_term_structure:AAPL", { "ticker": "AAPL", "date": "2026-08-20", "expiry": "2026-09-18", "volatility": 0.299, "implied_move": 12.345, "implied_move_perc": 0.058 } ] ``` ### Field reference | Field | Type | Description | |---------------------|--------|-------------| | `ticker` | string | Ticker of the underlying. | | `date` | string | The trading date in `YYYY-MM-DD` format. | | `expiry` | string | The option expiry this entry belongs to, in `YYYY-MM-DD` format. | | `volatility` | number | The ATM implied volatility for this expiry, as a decimal (e.g. `0.299` = 29.9%). Average of the ATM call and put IVs. | | `implied_move` | number | The expected absolute move of the underlying in dollars by this expiry. | | `implied_move_perc` | number | The expected move as a fraction of the underlying price by this expiry. | ## Authentication ``` Authorization: Bearer YOUR_API_KEY ``` ## Example ### curl ```bash curl -X GET "https://api.unusualwhales.com/api/socket/iv_term_structure" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json" ``` ### Python ```python import http.client conn = http.client.HTTPSConnection("api.unusualwhales.com") headers = {"Authorization": "Bearer YOUR_API_KEY", "Accept": "application/json"} conn.request("GET", "/api/socket/iv_term_structure", headers=headers) response = conn.getresponse() print(response.read().decode("utf-8")) ``` ## Response Example ```json { "data": [] } ```