India Energy Atlas

Getting Started

Rate limits

Two quotas apply per key: per-minute and per-day. Both are checked on every request and reported in response headers so clients can back off gracefully.

Quotas by tier

TierPer minutePer dayHistory window
Trial101,0007 days
Starter6010,00090 days
Pro300100,0003 years
Enterprise600Unlimited10 years

Both limits are enforced on a rolling window. Exceeding either returns 429 quota_exceeded with a Retry-After header (seconds until the next slot frees up).

Response headers

Every 2xx and 429 response includes:

http
X-RateLimit-Limit-Minute: 60
X-RateLimit-Remaining-Minute: 58
X-RateLimit-Limit-Day: 10000
X-RateLimit-Remaining-Day: 9842
X-Tier: starter
Retry-After: 12           # only on 429
  • Limit fields are constant for a given tier — useful as a sanity check but you can hard-code them.
  • Remaining fields are the authoritative source of truth. Always read them instead of counting requests client-side.
  • X-Tier tells you which plan billed the request. Helpful in logs when you upgrade and want to confirm the key picked up the new tier.

Handling 429s

Back off based on Retry-After. Exponential backoff with jitter is the safest default:

python
import time, random, requests

def get(url, key, attempt=0):
    r = requests.get(url, headers={"X-API-Key": key}, timeout=10)
    if r.status_code == 429 and attempt < 5:
        delay = int(r.headers.get("Retry-After", 2 ** attempt))
        time.sleep(delay + random.random())
        return get(url, key, attempt + 1)
    r.raise_for_status()
    return r.json()

Pre-emptive throttling is cheaper than retrying

Once X-RateLimit-Remaining-Minute drops below ~10% of the limit, pause your worker loop until the next minute boundary instead of pounding through the remaining budget.

Burst behavior

The per-minute limit is a hard ceiling — bursts above it are rejected immediately, not queued. The per-day limit is informational until exhausted, then also hard-rejects.

If you need sustained throughput above your tier's per-minute limit, upgrade to the next tier or contact sales for a bespoke limit.