API guides

Rate limits & credits

Two simple knobs: how fast you can call, and what each call costs. No tiers, no surprise throttles.

60/min
Rate limit
Per API key, sliding window
1
Credit per call
2 for AI endpoints (tarot interpretation, Guide chat)
No expiry
Credit lifetime
One-time top-ups, never a subscription
Fair use

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:

Rate-limit headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 2026-10-15T15:08:00Z

Cross 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:

Python — respect Retry-After
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()
Billing

Credits, and the 402

Credits are the only money concept. One credit per standard call, two for AI-powered endpoints.

Endpoint groupCostWhy
Vedic, Western, numerology, tarot draws1 creditDeterministic computation
Tarot interpretation, Guide chat2 creditsAI inference per call

Run out of credits and the API returns 402 Payment Required:

402 response
{
  "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.