| 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
$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)
$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)
$positions = Invoke-RestMethod -Uri "$baseUrl/portfolio/positions" -Headers $headers
$positions.data.net | Select-Object tradingsymbol, quantity, average_price, last_price, pnl
Get live quote
$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
$margins = Invoke-RestMethod -Uri "$baseUrl/user/margins" -Headers $headers
$margins.data.equity | Select-Object available, utilised, net
Place a market order
$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
$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