Closing Auction Session (CAS) — API Changes You Need to Know

Nivas
Nivas edited August 3 in General
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:
  1. 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.
  2. 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.
  • KamalChhirang
    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?
  • Nivas
    Currently, the updated circuit limits will be served via the /quote endpoint, and other CAS-related fields will be added in the coming weeks.
  • zhkas
    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?
  • Nivas
    @zhkas, currently, it is available via the quote endpoint only.
  • KamalChhirang
    @Nivas
    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.
  • Nivas
    Nivas edited August 4
    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.
  • KamalChhirang
    @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?

    'reference_limit_price': 1157.9,
    'indicative_close_price': 1172,
    'total_imbalance': 4294961084,
  • 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?
    @KamalChhirang We are reviewing this internally and will provide an update as soon as possible.
  • Matti
    Matti edited August 5
    Hey @KamalChhirang you can reliably use reference_limit_price right now.
  • adi_mantra
    Hi @Nivas ,

    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.
  • Nivas
    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.

  • adi_mantra
    Hi @Nivas
    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.
  • Nivas
    We're investigating and will update you shortly.
  • zhkas
    zhkas edited August 6
    As per your docs

    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 ?
  • deepak163299
    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
  • deepak163299
    @Nivas please reply for that
  • Nivas
    Nivas edited August 11
    @zhkas @deepak163299 > Currently, you can use the following fields from the Quote API during the CAS session:
    • `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.
  • Nivas
    @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.
  • KamalChhirang
    @Nivas

    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.
  • zhkas
    Please update doc at
    kite.trade docs connect v3 market-quotes

    it is much helpful to read that
  • Nivas
    @KamalChhirang, we're getting this checked and will share an update shortly.

    @zhkas, yes, it will be incorporated.
  • Matti
    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.
  • zhkas
    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 ?

    quote response:
    "indicative_close_price": 5314.58
    {
    "status": "success",
    "data": {
    "BSE:SENSEX": {
    "instrument_token": 265,
    "tradingsymbol": "SENSEX",
    "timestamp": "2026-08-07 15:33:59",
    "last_price": 78499.17,
    "net_change": -455.59,
    "indicative_close_price": 5314.58,
    "ohlc": {
    "open": 78516.08,
    "high": 78757.4,
    "low": 78377.07,
    "close": 78954.76
    }
    },
    "NSE:NIFTY 50": {
    "instrument_token": 256265,
    "tradingsymbol": "NIFTY 50",
    "timestamp": "2026-08-07 15:33:59",
    "last_price": 24570.65,
    "net_change": -65.35,
    "indicative_close_price": 5014.73,
    "ohlc": {
    "open": 24538.9,
    "high": 24630.4,
    "low": 24522.75,
    "close": 24636
    }
    }
    }
    }
  • Nivas
    @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.
  • alphamurho
    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
  • Nivas
    @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
    Thanks, I will fetch it today and test it.

    @Nivas
    I have another query, I was checking logs for 6 Aug 2026 for SENSEX
    from web-socket , I received
    151500 to 152931 : 78785.62
    152932 : 78916.83
    152933 till end : 78954.76
    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
  • Nivas
    @zhkas This doesn't seem to be an usual behaviour; we will check this today during CAS.
  • Nivas
    @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.
  • hawkeye
    hawkeye edited August 10
    @Nivas what about indicative_volume during CAS session, I think Volume is showing the total volume for the day even during CAS. (Using Quote on API)
  • Nivas
    @hawkeye The indicative_volume during the CAS session is currently streamed under the `volume` field via the Quote endpoint for NSE CAS stocks.

    Please note that the volume field will revert to representing the total volume traded for the day after the market closes.
  • hawkeye
    The indicative_volume during the CAS session is currently streamed under the `volume` field via the Quote endpoint for NSE CAS stocks.

    @nivas What about BSE ?
  • Nivas
    Nivas edited August 11
    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.
  • akash_quanttrader
    akash_quanttrader edited August 11
    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
  • alphamurho
    How can I get indicative imbalance from market orders only?
  • alphamurho
    Also, why is total_imbalance streaming as a constant 0? These fields are essential to do anything meaningful.. and exchange is already sending these
  • Nivas
    @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.
  • roger
    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?
  • Nivas
    Nivas edited August 13
    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.
  • HowUTrade
    @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.

    Please also refer to the earlier conversation with @zhkas:
    https://kite.trade/forum/discussion/comment/52745/#Comment_52745


  • Nivas
    @HowUTrade @zhkas We've escalated this further and will share an update once we get more details.
  • Nivas
    @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.
  • akash_quanttrader
    @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.
  • Nivas
    Nivas edited August 14
    @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.
  • kumar84
    kumar84 edited 9:42AM

    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)?
  • pratikgotmare
    pratikgotmare edited 6:05PM
    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.
Sign In or Register to comment.