/v2/options/{contract}/greeks Implied volatility and greeks for one option contract
vol_getContractGreeks
The newest implied-volatility and greeks solve for one option contract, plus a one-minute history of it. Use it to track a single contract's IV, delta and gamma through the session.
Path parameters
contractstring requiredOption contract:
O:+ OSI symbol, e.g.O:SPY260925C00765000
Query parameters
sessionstring ISO dateKeep only the
seriessamples of one exchange session, ISOYYYY-MM-DD. Omit it for every retained sample.
Details
The contract is O: plus its OSI symbol, e.g. O:SPY260925C00765000. latest holds ts_ms, iv, delta, gamma, mark (the option price the solve used) and mark_source; bid, ask and spread are filled only while a live quote is held for the contract, and null otherwise. series is the same solve sampled once a minute (ts_ms = the minute), up to the last 390 minutes, optionally restricted to one session.
Units
ivis annualized, as a fraction (0.1286= 12.86%).mark,bid,askandspreadare dollars per share.strikeis in integer thousandths of a dollar;ts_msis epoch milliseconds.
Freshness
Updated with every new solve during market hours; outside them, the last solve is served.
Limits
No per-operation limit applies to requests with an API key.
Empty results
A well-formed contract on a registered underlying that has not been solved returns 200 with latest: null, series: [] and a meta.note. An unregistered underlying is 404 not_found.
Example
GET /v2/options/O:SPY260925C00765000/greeks{
"data": {
"contract": {
"underlying": "SPY",
"expiry": "2026-09-25",
"right": "call",
"strike": 765000
},
"latest": {
"ts_ms": 1790256746156,
"iv": 0.1286,
"delta": 0.466,
"gamma": 0.0455,
"mark": 4.735,
"mark_source": "options_trades",
"bid": null,
"ask": null,
"spread": null
},
"series": [
{
"ts_ms": 1790233380000,
"iv": 0.1286,
"delta": 0.611,
"gamma": 0.0436,
"mark": 4.735
}
]
}
}Response
Prices are dollars, timestamps epoch milliseconds, strikes integer thousandths of a dollar; null means unknown. Units →
200application/json
{contract, latest, series} in data; latest: null and empty series with a meta.note when the contract is not covered
object
A successful response: the payload consumers parse plus response metadata. data shapes are the platform types — never reshaped by the envelope.
data object required
contract object required
A single listed option contract, identified the way the OSI does: root symbol, expiry date, right, strike.
underlying is the OSI root (e.g. SPXW for SPX weeklies), stored unpadded and uppercase.
expiry string · date required ISO date right string required Call or put.
callputstrike integer · int64 required 1/1000 $ Strike in integer thousandths of a dollar (exact OSI unit)
underlying string required latest object nullable
The contract's newest solve.
ask number · double nullable bid number · double nullable Present only while a live quote is held for this contract.
delta number · double nullable gamma number · double nullable iv number · double nullable mark number · double required mark_source string required spread number · double nullable ask - bid, and null whenever either side is absent.
ts_ms integer · int64 required epoch ms series array<VolSample> required
delta number · double nullable gamma number · double nullable iv number · double nullable mark number · double required ts_ms integer · int64 required epoch ms The minute boundary this sample represents (epoch-ms).
meta object required
Response metadata.
caps object nullable
meta.caps — the entitlement caps that shaped this response. applied lists the caps that actually changed it (for example range_clamped).
applied array<string> required Which caps actually shaped this response (e.g. range_clamped). Empty = nothing was clamped.
darkpool boolean nullable Whether this account can use Off-Exchange in the site.
flow boolean nullable Whether the OPRA option-flow capability (flow) is granted to this principal in the app: site Pro plus a CBOE non-professional attestation (never on an itm_ key). Emitted explicitly — true and false — by the account endpoints, so the app reads the grant instead of inferring it from tier and attestation; absent on routes that do not report it.
gexDepth string nullable GEX data depth when the route reports it. Camel-cased to match the browser capability bundle; absent on unrelated routes.
tier string required The tier the request was served under.
cursor string nullable Opaque continuation cursor (pass back as ?cursor=); absent when there is nothing more to read.
plane string nullable Which serving tier answered the read (meta.plane). Informational provenance: treat it as an opaque label, because new values may appear.
Errors
Every error is the JSON error envelope; branch on error.code.
| Status | Meaning |
|---|---|
| 400 |
|
| 401 |
|
| 403 |
|
| 404 |
|