Subject: DH-905 on POST /v2/charts/rollingoption (Expired Options Data) despite active Data API plan

Subject: DH-905 on POST /v2/charts/rollingoption (Expired Options Data) despite active Data API plan

Hi Dhan API team,

I get HTTP 400 with DH-905 (“Missing required fields, bad values for parameters etc.”) on every request to POST dhan api charts/ rollingoption, including the exact example payload from your documentation (NSE_FNO, OPTIDX, securityId 13, expiryFlag MONTH, expiryCode 1, strike ATM, drvOptionType CALL, requiredData open/high/low/close/volume, fromDate 2021-08-01, toDate 2021-09-01).

What I have verified:

  • GET /v2/profile returns 200: dataPlan Active, dataValidity 2026-11-07, token valid.
  • POST /v2/charts/intraday for the Nifty index (IDX_I, securityId 13) returns 200 with candles.
  • Only /charts/rollingoption fails, with the same DH-905 across WEEK and MONTH expiry, CALL and PUT, intervals 1 and 5, securityId as number and as text, interval as number and as text, and date windows from Sep 2025 to the last 7 days. I use the json= parameter in Python requests with headers access-token, client-id and Content-Type application/json.

I saw another user report similar DH-905 errors on historical and Nifty options data from 26 Oct 2026 (forum thread: Historcal data download issue).

Could you please confirm whether this endpoint is currently affected, or whether anything has changed in the required parameters for index options? My Client ID is [YOUR CLIENT ID]. Happy to share the full request bodies.

Thank you.

awaiting

Hey @Vipul_Goswami

Welcome to Madefortrade!

We’ve made improvements to the handling and processing of expired options data to ensure more reliable data retrieval and efficient request processing. Please note that you can now fetch up to 1 day of data per API request.

To retrieve data for multiple days, please iterate over the required date range and make a separate API request for each day, while adhering to the applicable rate limits.

Kindly regenerate your access token and retry the request.