# Ticker Interval flow `GET` `https://api.unusualwhales.com/api/socket/interval_flow` **NOTE:** This is the documentation for websocket channel `interval_flow`. Websocket access for personal use is only available through the [Advanced plan](https://unusualwhales.com/pricing?product=api). The data on this channel is the exact same data shown on [https://unusualwhales.com/ticker-interval-flow](https://unusualwhales.com/ticker-interval-flow). Ticker Interval flow shows you summary stats about option transactions for a given ticker in a 5min window. It shows the options volume, transactions count, greek exposure, net premium, implied move change and many more stats. This is very useful if you want to build an alerting system that alerts if there is a volume spike or some other sort of spike in a ticker in a short time frame. 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: `interval_flow` for live per-interval option flow statistics. Each message carries a single ticker in its `ticker` field; subscribers receive updates for all tickers across the channel. Payload format: ``` [ "interval_flow", { "ticker": "CVNA", "interval_type": "All", "start_time": "2026-04-27T14:25:00Z", "tape_time": "2026-04-27T14:27:54.391Z", "call_vol": 76, "put_vol": 155, "transactions": 73, "call_vol_ask_side": 38, "call_vol_bid_side": 37, "call_vol_neutral_side": 1, "put_vol_ask_side": 28, "put_vol_bid_side": 107, "put_vol_neutral_side": 20, "call_sweep_vol": 0, "put_sweep_vol": 0, "call_floor_vol": 0, "put_floor_vol": 0, "call_cross_vol": 0, "put_cross_vol": 0, "call_multi_vol": 22, "put_multi_vol": 12, "cum_net_call_delta": 200, "cum_net_put_delta": -149, "avg_dte": "4", "avg_otm": "0.697458", "avg_size": "1", "avg_prem": "54", "net_call_prem": 16424, "net_put_prem": -10344, "open": "407", "close": "406.322", "implied_move_perc_30d_open": 165, "implied_move_perc_30d_close": 165, "volatility_30d_open": 849, "volatility_30d_close": 855, "delta_flow": 1243, "gamma_flow": 11, "vega_flow": 6780, "dir_delta_flow": 8, "dir_gamma_flow": -38, "dir_vega_flow": -892 } ] ``` ### Field reference Each message describes a 5-minute window of option flow for a single ticker. Two messages are emitted per ticker per interval, distinguished by `interval_type`: one rolls up all contracts, the other restricts to OTM contracts. | Field | Type | Description | |---|---|---| | `ticker` | string | Underlying ticker. | | `interval_type` | `"All"` \| `"OtmOnly"` | `"All"` includes every contract; `"OtmOnly"` restricts to OTM. | | `start_time` | ISO 8601 string | Start of the 5-minute window (UTC). | | `tape_time` | ISO 8601 string | Time of the snapshot within the window. The same window may emit multiple messages as the window fills; only the latest is current. | | `call_vol` / `put_vol` | int | Total call / put volume in the window. | | `transactions` | int | Distinct option transactions in the window. | | `call_vol_ask_side`, `call_vol_bid_side`, `call_vol_neutral_side` | int | Call volume by trade-side classification. | | `put_vol_ask_side`, `put_vol_bid_side`, `put_vol_neutral_side` | int | Put volume by trade-side classification. | | `call_sweep_vol` / `put_sweep_vol` | int | Volume tagged as sweep (multi-exchange print). | | `call_floor_vol` / `put_floor_vol` | int | Volume tagged as floor trade. | | `call_cross_vol` / `put_cross_vol` | int | Volume from cross trades. | | `call_multi_vol` / `put_multi_vol` | int | Volume from multi-leg trades. | | `cum_net_call_delta` / `cum_net_put_delta` | int | Session-cumulative net delta from calls / puts (signed by side). | | `avg_dte` | decimal string \| null | Average days-to-expiration across the window's trades. | | `avg_otm` | decimal string \| null | Average OTM percentage across the window. | | `avg_size` | decimal string \| null | Average trade size in contracts. | | `avg_prem` | decimal string \| null | Average per-trade premium in dollars. | | `net_call_prem` / `net_put_prem` | int | Net call / put premium in the window (`ask_side - bid_side`), in dollars. | | `open` / `close` | decimal string \| null | Underlying price at the start / end of the window. | | `implied_move_perc_30d_open` / `implied_move_perc_30d_close` | int | 30-day implied move at window open / close, in basis points. | | `volatility_30d_open` / `volatility_30d_close` | int | 30-day implied volatility at window open / close, in basis points. | | `delta_flow` / `gamma_flow` / `vega_flow` | int | Absolute Greek flow in the window. | | `dir_delta_flow` / `dir_gamma_flow` / `dir_vega_flow` | int | Directional (signed by side) Greek flow in the window. | ## Authentication ``` Authorization: Bearer YOUR_API_KEY ``` ## Example ### curl ```bash curl -X GET "https://api.unusualwhales.com/api/socket/interval_flow" \ -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/interval_flow", headers=headers) response = conn.getresponse() print(response.read().decode("utf-8")) ``` ## Response Example ```json { "data": [] } ```