--- name: zerodha-kite description: "Zerodha Kite Connect: holdings, positions, orders, live quotes" category: india version: 1.0.0 tags: zerodha, kite, broker, india, trading, orders, holdings, positions, equity, portfolio license: Apache-2.0 --- # Zerodha Kite Access your Zerodha account via the Kite Connect REST API — fetch portfolio, live quotes, place orders, and check order history. Requires a Kite Connect API subscription. ## When to Use - User wants to see their Zerodha holdings or current positions - User asks for a live quote on an NSE/BSE stock - User wants to place, modify, or cancel an order - User asks about today's P&L or order history - User wants to check available margin or funds ## How to Use ### Set up API credentials ```powershell $env:KITE_API_KEY = "your_api_key" $env:KITE_ACCESS_TOKEN = "your_access_token" # Obtained after daily login flow $baseUrl = "https://api.kite.trade" $headers = @{ "X-Kite-Version" = "3" "Authorization" = "token $($env:KITE_API_KEY):$($env:KITE_ACCESS_TOKEN)" } ``` ### Get holdings (long-term portfolio) ```powershell $holdings = Invoke-RestMethod -Uri "$baseUrl/portfolio/holdings" -Headers $headers $holdings.data | Select-Object tradingsymbol, quantity, average_price, last_price, @{N='PnL';E={[math]::Round(($_.last_price - $_.average_price) * $_.quantity, 2)}} ``` ### Get today's positions (intraday / F&O) ```powershell $positions = Invoke-RestMethod -Uri "$baseUrl/portfolio/positions" -Headers $headers $positions.data.net | Select-Object tradingsymbol, quantity, average_price, last_price, pnl ``` ### Get live quote ```powershell $symbols = "NSE:RELIANCE,NSE:INFY,NSE:TCS" $quote = Invoke-RestMethod -Uri "$baseUrl/quote?i=$symbols" -Headers $headers $quote.data.PSObject.Properties | ForEach-Object { [PSCustomObject]@{ Symbol = $_.Name LTP = $_.Value.last_price Change = $_.Value.net_change Volume = $_.Value.volume } } ``` ### Get available funds/margin ```powershell $margins = Invoke-RestMethod -Uri "$baseUrl/user/margins" -Headers $headers $margins.data.equity | Select-Object available, utilised, net ``` ### Place a market order ```powershell $orderBody = @{ tradingsymbol = "RELIANCE" exchange = "NSE" transaction_type = "BUY" order_type = "MARKET" quantity = 1 product = "CNC" # CNC = delivery, MIS = intraday, NRML = F&O } $resp = Invoke-RestMethod -Uri "$baseUrl/orders/regular" ` -Method POST -Headers $headers -Body $orderBody Write-Host "Order ID: $($resp.data.order_id)" ``` ### Get order history ```powershell $orders = Invoke-RestMethod -Uri "$baseUrl/orders" -Headers $headers $orders.data | Select-Object order_id, tradingsymbol, transaction_type, quantity, price, status, order_timestamp | Sort-Object order_timestamp -Descending ``` ## Examples **"Show me my Zerodha portfolio with current P&L"** → Fetch `/portfolio/holdings`, calculate P&L per position, sum for total portfolio gain/loss. **"What's the current price of HDFC Bank?"** → `GET /quote?i=NSE:HDFCBANK` — returns LTP, OHLC, volume, and circuit limits. **"Place a buy order for 1 share of Infosys at market price"** → POST to `/orders/regular` with `INFY`, `NSE`, `BUY`, `MARKET`, qty 1, product `CNC`. ## Cautions - Kite Connect requires a paid API subscription (₹2000/month) — confirm with the user before attempting API calls - The access token expires daily and must be regenerated via the login flow each morning - Always confirm order details with the user before placing — orders execute immediately at market price - Use `product: CNC` for delivery equity trades, `MIS` for intraday, `NRML` for F&O overnight positions - Paper-trade or test with small quantities before automating larger orders