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.
The rules
Section titled “The rules”- Only successful responses cost credits. Credits are charged only for
2xxresponses.4xxand5xxresponses are free: credits are reserved before the computation and released if it fails. - 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/usageand/v1/tokens.
- 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.
- Spending order. The monthly free grant is used first, then paid lots, earliest expiry first.
- Free grant. Every organization, free or paid, receives 2,000 credits each calendar month (UTC). Unused grant credits do not roll over.
- 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. - The demo key (public) accepts sample subjects only, allows 10 requests per minute per IP, and is not counted against any organization.
- MCP tool calls are billed as their REST equivalents.
Price per endpoint
Section titled “Price per endpoint”| 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 |
Headers on every response
Section titled “Headers on every response”| 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 OKx-request-id: b5d35e5f-faff-4af5-8152-bec267ed9af4x-credits-charged: 1x-credits-remaining: 6977ratelimit-limit: 120ratelimit-remaining: 119ratelimit-reset: 1Check the balance
Section titled “Check the balance”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).
When credits run out
Section titled “When credits run out”| 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.