> ## Documentation Index
> Fetch the complete documentation index at: https://api.unusualwhales.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> API requests use the base URL https://api.unusualwhales.com and require a bearer token in the `Authorization` header (`Authorization: Bearer <API_KEY>`). Create and manage API tokens at https://unusualwhales.com/dashboard/api.
> For live market data inside an AI tool, use the Unusual Whales MCP server at https://unusualwhales.com/public-api/mcp.
> Instructions for agents using Unusual Whales tools: https://unusualwhales.com/skill.md

# OptionState

> Daily stats for Option contracts for the given date. Contracts are being pushed any time there is a volume or open interest update is available.

Message
fields**49**
topic[option-states](/docs/kafka/topics/option-states.md)

**Proto definition**

```protobuf schema.proto theme={null}
message OptionState {
  string option_symbol = 1;
  int32 channel_id = 2;
  string nbbo_ask = 3;
  int64 nbbo_ask_size = 4;
  string nbbo_bid = 5;
  int64 nbbo_bid_size = 6;
  int64 last_tape_time = 7;
  string date = 8;
  int32 open_interest = 9;
  int64 volume = 10;
  string expires = 11;
  string option_type = 12;
  string underlying_symbol = 13;
  string strike = 14;
  string high_price = 15;
  string low_price = 16;
  string last_price = 17;
  string implied_volatility = 18;
  string delta = 19;
  string theta = 20;
  string gamma = 21;
  string vega = 22;
  string rho = 23;
  string theo = 24;
  string iv_low = 25;
  string iv_high = 26;
  int64 floor_volume = 27;
  int64 multi_leg_volume = 28;
  int64 stock_multi_leg_volume = 29;
  int64 cross_volume = 30;
  int64 sweep_volume = 31;
  int64 trades = 32;
  int64 ask_volume = 33;
  int64 bid_volume = 34;
  int64 mid_volume = 35;
  int64 neutral_volume = 36;
  int64 total_bid_changes = 37;
  int64 total_ask_changes = 38;
  int64 canceled_volume = 39;
  string total_premium = 40;
  string avg_price = 41;
  string open_price = 42;
  int32 option_symbol_id = 43;
  int32 ticker_id = 44;
  int32 root_ticker_id = 45;
  optional OptionExchange nbbo_bid_exchange = 46;
  optional OptionExchange nbbo_ask_exchange = 47;
  optional OptionContractQuote nbbo_bid_quote = 48;
  optional OptionContractQuote nbbo_ask_quote = 49;
}
```

## Fields

The number on the right of each row is the protobuf field number.

option\_symbol
string
1

The option symbol in OSI format SPY241227C00480000

channel\_id
int32
2

Internal, ignore.

nbbo\_ask
string
3

Current ask

nbbo\_ask\_size
int64
4

Current ask size

nbbo\_bid
string
5

Current bid

nbbo\_bid\_size
int64
6

Current bid size

last\_tape\_time
int64
7

Timestamp in milliseconds that this data represents

date
string
8

The trading date in YYYY-MM-DD format

open\_interest
int32
9

The OI of the chain

volume
int64
10

The cumulative volume for the day till this tape time. Note the volume between 2 ticks can be lower and does not necessary increase all the time if there was a cancel. A chain might have 10,000 volume at 9:32 and then at 9:33 it might have 8,000 volume as a transaction with the size of 2,000 had been canceled. The canceled volume is also tracked in the canceled field.

expires
string
11

The expiry of the chain in YYYY-MM-DD

option\_type
string
12

The option type either call or put

underlying\_symbol
string
13

The ticker of the chain. Note this is not the root symbol: For instance for NDXP260116C25250000 the underlying symbol would be NDXP and not NDX.

strike
string
14

The strike as a decimal number.

high\_price
string
15

The highest price at which there was a trade for the chain for the current trading day

low\_price
string
16

The lowest price at which there was a trade for the chain for the current trading day

last\_price
string
17

The last price at which a trade executed for this chain

implied\_volatility
string
18

Iv for the contract

delta
string
19

Delta for the contract

theta
string
20

Theta for the contract

gamma
string
21

Gamma for the contract

vega
string
22

Vega for the contract

rho
string
23

Rho for the contract

theo
string
24

Theo for the contract

iv\_low
string
25

Iv low for the contract for the session

iv\_high
string
26

Iv high for the contract for the session

floor\_volume
int64
27

Total amount of volume that came based on trade codes from the floor. If there is a canceled transaction this field is as of now not being adjusted.

multi\_leg\_volume
int64
28

Total amount of volume that based on trade codes was part of a multi leg trade. If there is a canceled transaction this field is as of now not being adjusted.

stock\_multi\_leg\_volume
int64
29

Total amount of volume that based on trade codes was part of a stock multi leg trade. If there is a canceled transaction this field is as of now not being adjusted.

cross\_volume
int64
30

Total amount of volume that based on trade codes was part of a cross trade. If there is a canceled transaction this field is as of now not being adjusted.

sweep\_volume
int64
31

Total amount of volume that based on trade codes was based on sweep transactions. If there is a canceled transaction this field is as of now not being adjusted.

trades
int64
32

Count of all transactions

ask\_volume
int64
33

Total amount of volume that transacted on the ask side of the spread. If there is a canceled transaction this field is as of now not being adjusted.

bid\_volume
int64
34

Total amount of volume that transacted on the bid side of the spread. If there is a canceled transaction this field is as of now not being adjusted.

mid\_volume
int64
35

Total amount of volume that transacted on the mid side of the spread. If there is a canceled transaction this field is as of now not being adjusted.

neutral\_volume
int64
36

Total amount of volume that has been marked as neutral (cross, out of sequence, late) If there is a canceled transaction this field is as of now not being adjusted.

total\_bid\_changes
int64
37

Total amount of NBBO bid changes of this chain. This can be used as a potential volatility proxy.

total\_ask\_changes
int64
38

Total amount of NBBO ask changes of this chain. This can be used as a potential volatility proxy.

canceled\_volume
int64
39

Total amount of volume of transactions that had been canceled

total\_premium
string
40

Total amount of premium that transacted

avg\_price
string
41

Volume weighted avg price of all transactions

open\_price
string
42

The first price at which a trade transacted for this chain.

option\_symbol\_id
int32
43

Unique id for the option symbol

ticker\_id
int32
44

Unique id for the underlying symbol. These IDs are consistent across different topics and can be used to merge data together.

root\_ticker\_id
int32
45

Unique ID for the root ticker. In most cases root\_ticker\_id will be the same as ticker\_id but for chains like SPXW260109P06810000 ticker\_id would be the ID for SPXW and root\_ticker\_id would be the id for SPX.

nbbo\_bid\_exchange
[OptionExchange](/docs/kafka/types/OptionExchange.md)
optional
46

The exchange currently publishing the NBBO bid.

nbbo\_ask\_exchange
[OptionExchange](/docs/kafka/types/OptionExchange.md)
optional
47

The exchange currently publishing the NBBO ask.

nbbo\_bid\_quote
[OptionContractQuote](/docs/kafka/types/OptionContractQuote.md)
optional
48

The current NBBO bid and its last update time.

nbbo\_ask\_quote
[OptionContractQuote](/docs/kafka/types/OptionContractQuote.md)
optional
49

The current NBBO ask and its last update time.
