Starting August 3, 2026, the exchange is introducing the Closing Auction Session (CAS) for F&O-eligible equity shares.
While the general mechanics, trading rules, and stock eligibility are detailed in our Z-Connect Post, here's a quick summary of the API-level changes:
Market Orders via API: Market orders, which currently aren't allowed via the API, will now be accepted only between 3:20 PM and 3:25 PM.
Circuit Limits during CAS: The exchange refreshes price bands by 3:20 PM based on the reference price, and these updated circuit limits will be served via the /quote endpoint. During CAS, the price band is +/-3% of the reference price.
If you have technical questions related to CAS, feel free to post them in this thread.
The exchange starts sharing the following information on a continuous basis: (a) indicative equilibrium price (b) total buy/sell quantities (c) imbalance quantities (d) indicative index value
Will this information be available through the Quote API? If so, in what format will it be provided?
Additionally, will this information continue to be shared between 3:25 PM and 3:30 PM, until the session closes at a randomly selected time?
Hi, I haven't fully understood the CAS stuff yet, so I might be mistaken. But won't this information be available on the WebSocket? Or do we need to fetch it periodically from the quote endpoint instead?
other CAS-related fields will be added in the coming weeks.
Could you please share as much detail as possible about the changes you're planning to implement in the coming weeks? This would help me prepare my strategy and code accordingly. It would be a big help, thank you.
Could you please share as much detail as possible about the changes you're planning to implement in the coming weeks?
This is currently in the testing phase. If we introduce any new fields that result in a breaking change, we will communicate the changes well in advance so that everyone has sufficient time to make the necessary updates.
@Nivas I can see the following items in the quote. Could you please confirm whether these values are reliable (stable update), and If I can use this information in my code?
I can see the following items in the quote. Could you please confirm whether these values are reliable (stable update), and If I can use this information in my code?
@KamalChhirang We are reviewing this internally and will provide an update as soon as possible.
After the recent CAS rollout, has there been any change in how Previous Close is populated in the Kite Connect Quote/LTP APIs?
We observed some unexpected differences in the opening market data and wanted to confirm whether the Previous Close value is immediately available and stable from market open, or if there are any known changes or delays after CAS.
After the recent CAS rollout, has there been any change in how Previous Close is populated in the Kite Connect Quote/LTP APIs?
@adi_mantra There shouldn't be any change in the close price field via the Quote/LTP API. If you encounter any issues, please let us know; we'll check at our end.
Order Entry Session I is opened. One can place both market and limit orders during this time. The exchange starts sharing the following information on a continuous basis:
(a) indicative equilibrium price (b) total buy/sell quantities (c) imbalance quantities (d) indicative index value
But any of four days, I am unable to find these values. Where can I see these values ?
Why there is no Dedicated elements as like OHLC in zerodha app or api. These cas elements must be in the zerodha have during the cas session: - indicative equilibrium price - indicative volume quantities - imbalance quantities
Due to these options are not available in the application or in the api, how the user will see that at which price he is buying or selling that is completely GAMBLING not TRADING, because the execution will happen at that price which is not visible to the trader. when we are using the zerodha platform we must have a dedicated options for indicative equilibrium price, indicative volume quantity and imbalance quantities as like open high low close upper circuit lower circuit these kinds of things are there, but the cas element is not there, which is already implemented on 3rd of August I think not late for implementing this
I am begging deodhar team to please add dedicated iep indicated quantity as well as imbalance quantity section in the app as like ohlc
@adi_mantra We couldn't identify any abnormalities on our end. If you encounter this issue again or notice any similar behaviour in the future, please let us know along with the relevant details.
Could you confirm that the behaviour of the volume field has been changed during CAS? If so, this seems like a poor design decision.
Previously, volume always represented the cumulative volume for the full trading day. Now, from 15:20 until the CAS closes at 15:30, it instead reflects the indicative traded volume of the auction session. This means the day's total volume is effectively lost during that window, users now have to either cache it before 15:20 or fetch it separately from the historical data API.
A far better approach would be to introduce a dedicated field for this, e.g. indicative_volume, and leave the behaviour of the existing volume field untouched.
Also, as far as I can tell, this change was never announced anywhere. It broke my code without warning, and I only discovered it now, four trading sessions after the rollout.
Could you confirm that the behaviour of the volume field has been changed during CAS? If so, this seems like a poor design decision.
Hey Kamal. We're working on chaning this to add a separate indicative volume field to the stream. The change in the value was made by the exchange where they send the regular volume for the day and the indicative volume for the CAS section in the same field.
What does indicative_close_price indicates ? Why does it keep changing even after 153000? What does it mean before 151500 ? What the numerical value here 5314.58 denotes ?
@zhkas, The indicative_close_price field is intended to provide the Indicative Equilibrium Price (IEP) during the CAS session. However, this functionality is still being rolled out and is not fully available yet.
Until the rollout is complete, we recommend ignoring this field, as its value may not be consistent. We'll notify users here once the field is fully supported.
Why is it so difficult to roll this out? The field is cleanly available in broadcast streams and should be a one line change to send from 1520. This is pretty important for even charting tools to display otherwise retail is gambling.. needs to be prioritised heavily
@alphamurho@zhkas@deepak163299@KamalChhirang you can now use indicative_close_price field that is intended to provide the Indicative Equilibrium Price (IEP) during the CAS session.
@zhkas, we stream the market data received directly from the exchange via WebSocket without processing or modifying the feed on our end.
Typically, the exchange updates the Sensex LTP only once after 3:15 PM. We did not observe the reported behaviour today.
If you encounter this again, please flag it on the same day with the relevant details. We'll investigate it and, if required, take it up with the exchange.
Currently, the data vendor streams indicative volume only for NSE CAS stocks to us. We are already coordinating with them to enable the same for BSE, but this will take some time.
When I am pulling the 'day' candle data at EOD, the Kite API is returning the price before CAS i.e. as of 3:15pm, not the final closing price. For e.g. see below (all data for 11th Aug for NSE)
ABB -> Kite API close price (7577.00) -> Actual NSE closing price (7611.50) CGPOWER -> Kite API close price (877.00) -> Actual NSE closing price (881.00) BEL -> Kite API close price (403.85) -> Actual NSE closing price (405.85) BOSCHLTD -> Kite API close price (45250.00) -> Actual NSE closing price (45185.00)
There are many more examples like this.
Do we need to refer to some other field? I am using the kite.historical_data() function
@akash_quanttrader The day candle close price for the instruments is updated at midnight, as before. You have to fetch the candle data the next morning to get the close price.
How can I get indicative imbalance from market orders only?
@alphamurho, currently, indicative imbalance from market orders is unavailable via API. This will take time.
Also, why is total_imbalance streaming as a constant 0? These fields are essential to do anything meaningful.. and exchange is already sending these
We’ll review this during today’s CAS session and share an update.
Any update on the CAS fields? 1. imbalance is 0 for all instruments for the past 2 days. 2. Market order imbalance missing from quotes. 3. Will the CAS fields be available in websocket (near future) or only through the quote endpoint?
1. imbalance is 0 for all instruments for the past 2 days.
1. The field name has been changed from total_imbalance to total_imbalance_qty. Could you please check this updated field today?
2. Market order imbalance missing from quotes. 3. Will the CAS fields be available in websocket (near future) or only through the quote endpoint?
2. We’re following up with the vendors on this. This may take some time. 3. Steaming the CAS fields via Websocket is on our to-do list, but we don't have a concrete ETA at this stage. For now, please use the quote endpoint.
@Nivas, today as well, BSE sent two SENSEX index ticks after 15:15:15. Please raise this issue with the concerned exchange. It appears that this issue occurs specifically on expiry days.
@HowUTrade@zhkas The exchange has clarified that multiple LTP updates can be expected during the order-matching phase, which typically runs after 3:28 PM, and does not indicate an issue with the market data feed.
@Nivas Thank you for resolving my earlier query. I have one more issue though. When I am pulling 15minute candles from the kite api, the 3:15-3:30 pm candles for previous days are entirely missing. I understand these candles don't have typical open, high, low values..but the close values and volumes are important especially if one is trying to look at volume averages, and other price moving averages at their end. Request you to kindly share an update on this. Thanks.
@akash_quanttrader From August 3, candle data for CAS-eligible stocks will be available only up to the end of the continuous trading session at 3:15 PM. The CAS session begins thereafter. Since there is no continuous trading during the CAS session, there won't be regular LTP movement during this period.
If you need to track the CAS session, you can use the Quote API to monitor the Indicative Close Price, Indicative Volume, and Total Imbalance Quantity. We don't recommend incorporating these values into the candle data, as candles are derived from LTP movements during the continuous trading session, whereas CAS data represents the price discovery process after continuous trading has ended.
Subject: Intraday EQ (CAS) auto-squared-off at 3:05:05 PM instead of documented 3:12 PM — penalty charged
As per your published auto square-off policy:
Segment | Auto square-off time
Equity Cash — CAS | 3:12 PM Equity Cash — Non-CAS | 3:25 PM Equity/Index Derivatives | 3:26 PM Commodities | 10 minutes before close
My intraday EQ CAS position (e.g., Reliance) placed via the Kite Connect API was auto-squared-off at 3:05:05 PM, which is about 7 minutes earlier than the documented 3:12 PM cutoff for CAS. I was also charged a penalty of ₹50 + 18% GST for this square-off.
Could you please clarify: 1. Why was the position squared off at 3:05:05 PM instead of the stated 3:12 PM for CAS? 2. Is the auto square-off time different for orders placed via the Kite Connect API compared to the Kite web/app terminal? 3. Since the square-off happened earlier than your documented time, will the penalty be reversed?
A couple of things worth double-checking before you send it: confirm the exact symbol was indeed under CAS (not Non-CAS or ASM/GSM, which can have different or additional square-off rules)?
Hi @Nivas , I’m currently receiving real-time data until 3:15 PM. After 3:15 PM, the NIFTY 50 cash-stock feed stops, but the WebSocket should continue fetching after the CAS session; it is unable to fetch the 3:30 PM closing data.
Could you please let me know by what time you expect to implement the correction/change on your side so api should sync post-close CAS system closing data? This will help me sync my current setup and code with the new setup accordingly.
Additionally, will this information continue to be shared between 3:25 PM and 3:30 PM, until the session closes at a randomly selected time?
/quoteendpoint, and other CAS-related fields will be added in the coming weeks.I haven't fully understood the CAS stuff yet, so I might be mistaken. But won't this information be available on the WebSocket? Or do we need to fetch it periodically from the quote endpoint instead?
I can see the following items in the quote. Could you please confirm whether these values are reliable (stable update), and If I can use this information in my code?
'reference_limit_price': 1157.9,
'indicative_close_price': 1172,
'total_imbalance': 4294961084,
reference_limit_priceright now.After the recent CAS rollout, has there been any change in how Previous Close is populated in the Kite Connect Quote/LTP APIs?
We observed some unexpected differences in the opening market data and wanted to confirm whether the Previous Close value is immediately available and stable from market open, or if there are any known changes or delays after CAS.
Thanks.
Thanks for the clarification.
We observed an issue today around market open and wanted to check if it's related to Kite Connect or if it was just a temporary issue.
We started our application before market open, but for the first few minutes after 09:15, the API repeatedly failed with:
requests.exceptions.ReadTimeout:
HTTPSConnectionPool(host='api.kite.trade', port=443):
Read timed out. (read timeout=7)
The timeout occurred while calling:
kite.instruments("NSE")
The request finally succeeded around 09:19 AM, after which our application continued normally.
Was there any known issue, increased latency, or higher API load around market open today? Or was this likely an isolated timeout on our side?
Thanks.
Order Entry Session I is opened. One can place both market and limit orders during this time. The exchange starts sharing the following information on a continuous basis:
(a) indicative equilibrium price
(b) total buy/sell quantities
(c) imbalance quantities
(d) indicative index value
But any of four days, I am unable to find these values.
Where can I see these values ?
These cas elements must be in the zerodha have during the cas session:
- indicative equilibrium price
- indicative volume quantities
- imbalance quantities
Due to these options are not available in the application or in the api, how the user will see that at which price he is buying or selling that is completely GAMBLING not TRADING, because the execution will happen at that price which is not visible to the trader. when we are using the zerodha platform we must have a dedicated options for indicative equilibrium price, indicative volume quantity and imbalance quantities as like open high low close upper circuit lower circuit these kinds of things are there, but the cas element is not there, which is already implemented on 3rd of August I think not late for implementing this
I am begging deodhar team to please add dedicated iep indicated quantity as well as imbalance quantity section in the app as like ohlc
- `total_imbalance` – Indicates the total order imbalance.
- `volume` – Represents the indicative traded volume during the CAS session for NSE CAS stocks.
- `buy_quantity` and `sell_quantity` – Represent the total buy and sell order quantities, respectively.
Support for the Indicative Equilibrium Price/Indicative index value will be made available shortly.Could you confirm that the behaviour of the volume field has been changed during CAS? If so, this seems like a poor design decision.
Previously, volume always represented the cumulative volume for the full trading day. Now, from 15:20 until the CAS closes at 15:30, it instead reflects the indicative traded volume of the auction session. This means the day's total volume is effectively lost during that window, users now have to either cache it before 15:20 or fetch it separately from the historical data API.
A far better approach would be to introduce a dedicated field for this, e.g. indicative_volume, and leave the behaviour of the existing volume field untouched.
Also, as far as I can tell, this change was never announced anywhere. It broke my code without warning, and I only discovered it now, four trading sessions after the rollout.
kite.trade docs connect v3 market-quotes
it is much helpful to read that
@zhkas, yes, it will be incorporated.
Why does it keep changing even after 153000?
What does it mean before 151500 ?
What the numerical value here 5314.58 denotes ?
quote response:
Until the rollout is complete, we recommend ignoring this field, as its value may not be consistent. We'll notify users here once the field is fully supported.
@Nivas
I have another query, I was checking logs for 6 Aug 2026 for SENSEX
from web-socket , I received I haven't seen this dual price change on any other day for either NIFTY or SENSEX
any error , or can this happen ?
Please help
Typically, the exchange updates the Sensex LTP only once after 3:15 PM. We did not observe the reported behaviour today.
If you encounter this again, please flag it on the same day with the relevant details. We'll investigate it and, if required, take it up with the exchange.
Please note that the volume field will revert to representing the total volume traded for the day after the market closes.
@nivas What about BSE ?
ABB -> Kite API close price (7577.00) -> Actual NSE closing price (7611.50)
CGPOWER -> Kite API close price (877.00) -> Actual NSE closing price (881.00)
BEL -> Kite API close price (403.85) -> Actual NSE closing price (405.85)
BOSCHLTD -> Kite API close price (45250.00) -> Actual NSE closing price (45185.00)
There are many more examples like this.
Do we need to refer to some other field? I am using the kite.historical_data() function
indicative imbalance from market ordersis unavailable via API. This will take time. We’ll review this during today’s CAS session and share an update.1. imbalance is 0 for all instruments for the past 2 days.
2. Market order imbalance missing from quotes.
3. Will the CAS fields be available in websocket (near future) or only through the quote endpoint?
total_imbalancetototal_imbalance_qty. Could you please check this updated field today? 2. We’re following up with the vendors on this. This may take some time.3. Steaming the CAS fields via Websocket is on our to-do list, but we don't have a concrete ETA at this stage. For now, please use the quote endpoint.
Please also refer to the earlier conversation with @zhkas:
https://kite.trade/forum/discussion/comment/52745/#Comment_52745
If you need to track the CAS session, you can use the Quote API to monitor the Indicative Close Price, Indicative Volume, and Total Imbalance Quantity. We don't recommend incorporating these values into the candle data, as candles are derived from LTP movements during the continuous trading session, whereas CAS data represents the price discovery process after continuous trading has ended.
Subject: Intraday EQ (CAS) auto-squared-off at 3:05:05 PM instead of documented 3:12 PM — penalty charged
As per your published auto square-off policy:
Segment | Auto square-off time
Equity Cash — CAS | 3:12 PM
Equity Cash — Non-CAS | 3:25 PM
Equity/Index Derivatives | 3:26 PM
Commodities | 10 minutes before close
My intraday EQ CAS position (e.g., Reliance) placed via the Kite Connect API was auto-squared-off at 3:05:05 PM, which is about 7 minutes earlier than the documented 3:12 PM cutoff for CAS. I was also charged a penalty of ₹50 + 18% GST for this square-off.
Could you please clarify:
1. Why was the position squared off at 3:05:05 PM instead of the stated 3:12 PM for CAS?
2. Is the auto square-off time different for orders placed via the Kite Connect API compared to the Kite web/app terminal?
3. Since the square-off happened earlier than your documented time, will the penalty be reversed?
A couple of things worth double-checking before you send it: confirm the exact symbol was indeed under CAS (not Non-CAS or ASM/GSM, which can have different or additional square-off rules)?
Could you please let me know by what time you expect to implement the correction/change on your side so api should sync post-close CAS system closing data? This will help me sync my current setup and code with the new setup accordingly.