Rate limits & credits
Two simple knobs: how fast you can call, and what each call costs. No tiers, no surprise throttles.
The 60-per-minute rule
Rate limiting is per API key on a sliding 60-second window — generous enough for interactive apps, strict enough to keep everyone fast.
Every response carries rate-limit headers so you can pace yourself without guessing:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 2026-10-15T15:08:00ZCross the limit and you get 429 Too Many Requests with a Retry-After header in seconds. Back off, wait, retry — the simplest correct client looks like this:
import time
import requests
def api_post(url, key, payload):
while True:
r = requests.post(
url,
headers={"X-API-Key": key, "Content-Type": "application/json"},
json=payload,
)
if r.status_code == 429:
time.sleep(int(r.headers.get("Retry-After", 5)))
continue
r.raise_for_status()
return r.json()Credits, and the 402
Credits are the only money concept. One credit per standard call, two for AI-powered endpoints.
| Endpoint group | Cost | Why |
|---|---|---|
| Vedic, Western, numerology, tarot draws | 1 credit | Deterministic computation |
| Tarot interpretation, Guide chat | 2 credits | AI inference per call |
Run out of credits and the API returns 402 Payment Required:
{
"error": {
"code": "insufficient_credits",
"message": "This call needs 1 credit but your balance is 0.",
"credits_needed": 1,
"credits_balance": 0,
"topup_url": "https://kundli.site/dashboard/billing"
}
}Credits are never deducted for failed requests — 4xx and 5xx responses cost you nothing. Top up from Developers → Pricing; one-time payments only, no subscription.