Skip to content

Credits and metering

Navapatra is prepaid: your organization holds a balance of credits and each successful call uses some. Every language is the same price, and a full kundali costs the same as a date conversion.

  1. Only successful responses cost credits. Credits are charged only for 2xx responses. 4xx and 5xx responses are free: credits are reserved before the computation and released if it fails.
  2. Units.
    • 1 credit per request.
    • Batch matching: 1 credit per pair.
    • Panchang range: 1 credit per started 31 days, counted on the AD span. A BS range is converted to AD dates first, so its cost matches the same days asked for in AD.
    • Free endpoints (0 credits): /v1/places/search, /v1/meta, /v1/usage and /v1/tokens.
  3. One pool per organization. Credits belong to the organization. All its keys and client tokens draw from the same balance. A cap per secret key or per token is optional. Publishable keys always have one (2,000 credits a month by default). Client tokens count toward the cap of the key that issued them, and a token’s own cap can only lower that.
  4. Spending order. The monthly free grant is used first, then paid lots, earliest expiry first.
  5. Free grant. Every organization, free or paid, receives 2,000 credits each calendar month (UTC). Unused grant credits do not roll over.
  6. Test keys (sk_test_) are never charged. They are limited to a daily quota of 100 and 10 requests per minute per organization, and return the same output as live keys. The quota counts each request’s credit cost, so a 62-day panchang range uses 2.
  7. The demo key (public) accepts sample subjects only, allows 10 requests per minute per IP, and is not counted against any organization.
  8. MCP tool calls are billed as their REST equivalents.
Endpoint Credits
POST /v1/kundali (any include) 1
POST /v1/kundali/planets 1
POST /v1/dasha 1
POST /v1/matching/ashtakoota 1
POST /v1/matching/ashtakoota/batch 1 per pair (1 to 100)
POST /v1/matching/rashi 1
GET /v1/panchang/day 1
GET /v1/panchang/range 1 per started 31 days of the AD span (up to 12 for 366 days)
GET /v1/calendar/convert 1
GET /v1/calendar/month 1
POST /v1/charts/svg 1
GET /v1/timezone 1
GET /v1/places/search 0
POST /v1/tokens 0
GET /v1/meta 0
GET /v1/usage 0
Header Meaning
x-request-id Unique id for the request; quote it to support
x-credits-charged Credits this request used (0 for errors, test keys and the demo key)
x-credits-remaining Your organization’s balance after the request (absent for the demo key)
HTTP/1.1 200 OK
x-request-id: b5d35e5f-faff-4af5-8152-bec267ed9af4
x-credits-charged: 1
x-credits-remaining: 6977
ratelimit-limit: 120
ratelimit-remaining: 119
ratelimit-reset: 1
GET/v1/usage0 creditsReference

Needs a secret key (sk_live_ or sk_test_); publishable keys, client tokens and the demo key get 403 forbidden. Returns the balance by lot, the free grant for this month, this key’s use this month and the test-key quota for today:

{
"orgId": "org_dev",
"balance": 6872,
"month": "2026-10",
"freeGrant": { "granted": 2000, "remaining": 1872, "expiresAt": "2026-11-01T00:00:00Z" },
"lots": [
{ "id": "grant-2026-10", "source": "grant", "remaining": 1872, "expiresAt": "2026-11-01T00:00:00Z" },
{ "id": "dev-pack-1", "source": "pack", "remaining": 5000, "expiresAt": "2027-01-01T00:00:00Z" }
],
"key": { "id": "key_dev_live", "type": "sk_live", "creditCap": null, "usedThisMonth": 126 },
"testQuota": { "day": "2026-10-10", "used": 0, "limit": 100 }
}

Lots appear in spending order. A lot’s source is grant (the monthly free grant), pack (a credit pack), annual (an annual plan) or adjust (a manual adjustment).

Situation Response
The organization’s balance is 0 402 insufficient_credits, with a topUpUrl to the dashboard and x-credits-remaining: 0
A key reached its monthly credit cap 402 credit_cap_reached until the next UTC month
A client token reached its creditCap 402 credit_cap_reached; issue a new token if appropriate
The credits store is briefly unreachable and the key has no recent successful call 503 service_unavailable with Retry-After; nothing is charged
{
"type": "https://navapatra.com/docs/errors#insufficient_credits",
"title": "Insufficient credits",
"status": 402,
"detail": "Your organization has no credits left. Top up to continue.",
"code": "insufficient_credits",
"requestId": "...",
"topUpUrl": "https://app.navapatra.com/billing"
}

Credits are bought as packs on the billing page of the dashboard and paid in NPR by bank transfer, with a QR code or the account details. Credits from bank transfers are added after our team confirms the payment, usually within 12 to 16 hours. Indian customers: email hello@navapatra.com for invoicing. The free grant arrives on the first of each UTC month even when the balance is zero.