Options Toolkit¶
This section covers the option chain endpoint, which returns the full strike ladder for an underlying along with Greeks and implied volatility in the same response.
| Request Type | Path | Description | Status |
|---|---|---|---|
| GET | /market/option-chain | Get the option chain for an underlying, including Greeks and IV | Live |
Option Chain¶
Retrieves the option chain for one underlying and one expiry. Each strike returns both the call (ce) and put (pe) leg with live price, open interest, volume, top-of-book bid/ask, implied volatility and Greeks — so a single call is enough to build a chain view or drive a strategy.
Endpoint
Query Parameters
| Parameter | Required | Description |
|---|---|---|
exchange | Yes | The exchange of the option contracts. Enum: NSE, BSE |
segment | Yes | The segment of the underlying, which determines where its underlying-scrip comes from. Enum: INDEX, EQUITY |
underlying-scrip | Yes | The SECURITY_ID of the underlying — not of an option contract. See Finding underlying-scrip. |
expiry | Yes | Contract expiry in YYYY-MM-DD format (e.g. 2026-08-18). |
strike_count | No | Number of strikes to return on each side of the at-the-money strike. Defaults to 10. |
Example Request¶
curl --location 'https://api.indstocks.com/market/option-chain?exchange=NSE&segment=INDEX&underlying-scrip=40000001&expiry=2026-08-18&strike_count=10' \
--header 'Authorization: YOUR_ACCESS_TOKEN'
Response Payload (Success)¶
{
"status": "success",
"data": {
"underlying_ltp": 24471.7,
"expiry": "2026-08-18",
"strikes": {
"24450": {
"ce": {
"security_id": "45108",
"trading_symbol": "NIFTY-Aug2026-24450-CE",
"last_price": 167.9,
"previous_close_price": 274.95,
"oi": 1608490,
"previous_oi": 1606988,
"volume": 9079330,
"top_bid_price": 166.05,
"top_bid_quantity": 195,
"top_ask_price": 167.5,
"top_ask_quantity": 130,
"iv": 10.5,
"greeks": {
"delta": 0.56,
"gamma": 0.0011,
"theta": -10.04,
"vega": 13.39
}
},
"pe": {
"security_id": "45109",
"trading_symbol": "NIFTY-Aug2026-24450-PE",
"last_price": 117.65,
"previous_close_price": 88.9,
"oi": 1579370,
"previous_oi": 1579129,
"volume": 11974495,
"top_bid_price": 117.65,
"top_bid_quantity": 195,
"top_ask_price": 119.4,
"top_ask_quantity": 195,
"iv": 10.4,
"greeks": {
"delta": -0.44,
"gamma": 0.0011,
"theta": -9.95,
"vega": 13.39
}
}
},
"24500": { "ce": { /* ... */ }, "pe": { /* ... */ } }
}
}
}
Response Fields
| Field | Description |
|---|---|
underlying_ltp | Last traded price of the underlying. |
expiry | The expiry the returned chain belongs to, YYYY-MM-DD. |
strikes | An object keyed by strike price, each holding a ce and a pe leg. |
Each ce / pe leg contains:
| Field | Description |
|---|---|
security_id | The contract's SECURITY_ID. Pass this straight to Place Order as security_id. |
trading_symbol | The contract's exchange trading symbol, matching TRADING_SYMBOL in the Instruments file. |
last_price | Last traded price of the contract. |
previous_close_price | Previous close of the contract. |
oi | Current open interest. |
previous_oi | Previous day's open interest — subtract to get the OI change. |
volume | Day's traded volume. |
top_bid_price / top_bid_quantity | Best bid and its quantity. |
top_ask_price / top_ask_quantity | Best ask and its quantity. |
iv | Implied volatility, as a percentage (e.g. 10.5 means 10.5%). |
greeks | Object containing delta, gamma, theta and vega. |
Response Notes
strikesis a JSON object keyed by strike price, not an array. JSON object key order is not guaranteed, so sort the keys numerically if you need an ordered ladder.strike_countis the number of strikes per side of the at-the-money strike, so the response contains(2 × strike_count) + 1strikes.strike_count=3returns 7 strikes; the default of10returns 21.ivis a percentage and is a sibling ofgreeks, not a member of it.greekscontains exactlydelta,gamma,thetaandvega. There is norho.- The response does not include an OI-change field, a put-call ratio, the list of other expiries, or
lot_size/tick_size. Compute OI change fromoiandprevious_oi; take lot and tick size from the Instruments file. - Market depth is top-of-book only (one bid and one ask). For 5-level depth on a specific contract, use Market Depth.
Finding underlying-scrip¶
underlying-scrip is the SECURITY_ID of the underlying, which you look up in the Instruments file. Which file depends on the segment you are querying:
segment | Instruments source | Example |
|---|---|---|
INDEX | /market/instruments?source=index | 40000001 — NIFTY 50 |
EQUITY | /market/instruments?source=equity | 2885 — RELIANCE on NSE |
Use the underlying's ID, not a contract's
A common mistake is passing the SECURITY_ID of an option or futures contract from source=fno. That is the contract's ID, not the underlying's, and it will be rejected. For a stock underlying use its cash-market row from source=equity.
Example — RELIANCE option chain
curl --location 'https://api.indstocks.com/market/option-chain?exchange=NSE&segment=EQUITY&underlying-scrip=2885&expiry=2026-08-25&strike_count=5' \
--header 'Authorization: YOUR_ACCESS_TOKEN'
Errors¶
| Condition | HTTP | Response |
|---|---|---|
Any of exchange, segment, underlying-scrip or expiry is missing or invalid | 400 | {"message": "Bad Request", "debug_info": "Invalid exchange, segment, underlying-scrip or expiry passed"} |
Authorization header not sent | 400 | {"message": "authorization not sent in request. Please try again.", "success": false} |
| Rate limit exceeded | 429 | {"error": "Rate limit exceeded", "success": false} |
Error shapes on this endpoint differ from the standard envelope
This endpoint does not use the {"status": "error", "error_type": "..."} envelope described in the Error Bucket. Check the HTTP status code first, then read whichever of debug_info, message or error is present. Note also that an invalid expiry format (for example 20260818 instead of 2026-08-18) produces the same 400 as an unknown underlying, so validate the format on your side before calling.
See Also¶
- Instruments — look up the
SECURITY_IDused asunderlying-scrip - Market Quotes — live quotes and 5-level depth for a specific contract
- Order Management — place an order using a leg's
security_id - Glossary & Constants —
segmentvalues and instrument code formats - Error Bucket — error shapes and retry guidance