API Reference · Enterprise
Bharat Landed-Cost API
Landed ₹/kWh for any C&I site in India, across grid retail, Green Open Access, group captive, IEX RTM and hybrid RE+BESS. Each response cites the underlying SERC order and a regulatory-risk delta since the last revision.
Status: roadmap · ETA 2026 Q3
This reference is published ahead of implementation so customers can build against a stable contract. Endpoints currently respond with 501 Not Implemented and a roadmap pointer. MVP cuts: Karnataka, Maharashtra, Gujarat, Tamil Nadu, Rajasthan, and Uttar Pradesh HT-industrial. Full 30-state coverage planned by 2026 Q4. Product overview.
Overview
Five endpoints cover the C&I open-access decision. compare is the headline call — five offtake structures on one request. The remaining four expose the building blocks: tariff schedules, open-access charges, full PPA economics, and a regulatory change feed for cache-invalidation on any downstream system.
Authentication
Send API keys in the X-API-Key header. Enterprise tier required. Plans and limits live on energymap.in/pricing.
POST /v1/landed-cost/compare
Compare landed ₹/kWh across grid retail, Green Open Access, group captive, IEX RTM, and hybrid RE+BESS for a single consumer.
curl -X POST https://api.energymap.in/v1/landed-cost/compare \
-H 'X-API-Key: $KEY' \
-H 'Content-Type: application/json' \
-d '{
"state": "RJ",
"discom": "JVVNL",
"voltage_class": "HT-5",
"contract_demand_kva": 2500,
"load_profile_id": "std_continuous_3shift",
"modes": ["grid", "goa", "group-captive", "rtm", "hybrid"]
}'{
"consumer": { "state": "IN-RJ", "discom": "JVVNL", "voltage_class": "HT-5" },
"as_of": "2026-05-09",
"results": [
{
"mode": "grid",
"landed_inr_per_kwh": 9.42,
"p10": 9.31, "p50": 9.42, "p90": 9.55,
"components": {
"energy_charge": 7.10,
"demand_charge_inr_per_kvah": 1.12,
"fac": 0.45,
"electricity_duty": 0.75
},
"confidence": 0.95,
"sources": [
{ "type": "serc_order", "id": "RERC-2025-26-Tariff", "url": "..." }
],
"regulatory_risk_delta_since_last": "+0.18 INR/kWh (FAC revision Q1 2026)"
}
/* ... goa, group-captive, rtm, hybrid */
]
}GET /v1/tariffs/{state}/{discom}
Current tariff schedule by voltage class. Pass ?as_of=YYYY-MM-DD to replay the schedule that applied on a given day.
curl 'https://api.energymap.in/v1/tariffs/IN-MH/MSEDCL?voltage_class=HT-1&as_of=2026-04-01' \
-H 'X-API-Key: $KEY'GET /v1/open-access/charges/{state}
Wheeling, cross-subsidy surcharge, additional surcharge, scheduling fees, and applicable waivers, with applicable-from and applicable-to dates.
POST /v1/ppa/economics
Full PPA underwriting on a specified contract structure (tariff escalation, banking, curtailment treatment) and a 15-minute load profile. Returns IRR, NPV, capture-rate sensitivities, and a regulatory-risk band.
GET /v1/regulatory-change-feed
Every SERC order, amendment, and rate revision since a timestamp. Use this to invalidate downstream caches when a relevant order drops.
curl 'https://api.energymap.in/v1/regulatory-change-feed?since=2026-04-01T00:00:00Z&state=IN-KA' \
-H 'X-API-Key: $KEY'Errors
| Status | Code | When |
|---|---|---|
| 400 | INVALID_LOAD_PROFILE | Load profile ID unknown or 15-min granularity not provided. |
| 402 | TIER_REQUIRED | Caller is not on the Enterprise tier. |
| 404 | TARIFF_NOT_FOUND | No tariff order found for state/discom/voltage_class at as_of. |
| 409 | STALE_TARIFF | Tariff order exists but has been superseded; retry with as_of=null for current. |
| 501 | NOT_IMPLEMENTED | Endpoint is on the roadmap; see status banner. |
