POST /api/v1/options/sentiment
Tier: point · Delivery: sync
Request
| Field | Type |
|---|---|
underlying_ticker | string |
date | string |
include_spread_analysis | boolean |
expiration_filter | string |
max_contracts | number |
Response
The response is the two-key envelope{ finterm, data }, where data is the finterm.result:OptionsSentiment/v1 contract:
| Field | Description |
|---|---|
ticker | The underlying stock ticker symbol, uppercased (e.g. “AAPL”). |
as_of_date | The date the sentiment is reported for, in YYYY-MM-DD format. |
sentiment | Put/call sentiment for the day: put_call_volume_ratio (put volume ÷ call volume; below 0.7 = bullish, 0.7–1.0 = neutral, above 1.0 = bearish), the interpretation label, total_call_volume, total_put_volume, avg_spread_percent (average bid/ask spread as a percent of midpoint), and liquidity_grade (A best to D worst). Ratio, interpretation, spread, and grade are null when there is no volume to read or spread analysis was not requested. |
data_quality | Sample-quality verdict: status (“ok”, “no_data” for a day with no traded contracts, or “thin_sample” for a low-volume sample), contracts_analyzed, contracts_with_volume, and total_volume. Use it to weight or discard the reading. |
contracts | Contract-count summary for the analyzed sample: total_calls, total_puts, contracts_with_volume, and the list of expirations covered (YYYY-MM-DD). |