Skip to content

Methodology

What the calculations are built on, how the documentation is kept honest, and which of our published numbers were measured rather than asserted.

Where positions come from

Planetary positions are computed from NASA JPL ephemeris data — the full 105 MB data set rather than an abridged one, with 735 fixed stars, covering 500–2999 AD. Nothing is interpolated from a table of pre-computed almanac values, and there is no cached result: every response is calculated for the exact instant and coordinates in the request.

That range matters for two real cases — historical charts, and long-range dasha and transit scans that run decades past the present. A library limited to the modern era silently degrades at the edges.

The same calculation engine runs Yoga Panchang, our free panchang and Jyotish site, so the figures its readers see every day come from the code described here.

Where traditions disagree, we expose the choice

The largest source of disagreement between two Vedic calculations is not arithmetic, it is the ayanamsa. Indian traditions genuinely differ about it, and a difference of a degree moves a planet across a nakshatra boundary.

So we expose 48 of them — the Surya Siddhanta family, true Citra, true Revati, true Pushya, Raman, KP, Yukteshwar and the rest — and let you correct any by degree, minute and second. We do not ship one and call it correct. If our output disagrees with another source, the first thing to check is whether you are both using the same ayanamsa.

How the documentation is verified

This is the part most API documentation cannot claim. Our reference is not written by hand — it is generated from the serializers themselves by build_api_catalogue, then proved against a running server by verify_api_catalogue, which sends every documented example request and checks it returns 2xx.

The consequence is the thing worth having: 255 of the 299 endpoint pages show a real captured response, not an invented one, and the others are marked as not yet verified rather than passed off as working. A field cannot quietly drift out of the docs the way it does in a hand-maintained spreadsheet. If a serializer changes and the docs are not regenerated, verification fails rather than publishing a lie.

The same catalogue generates the OpenAPI spec, the Postman collection and llms.txt, so all four describe the same API by construction.

Tests

The backend carries 1,783 test functions across 87 modules. They cover the metering path most heavily, because that is where a mistake takes someone's money: that a successful call deducts exactly what the endpoint costs, that a 4xx and a 5xx deduct none, that a concurrent race for the last credit cannot drive a balance negative, and that the ledger reconciles against the balance after a randomised sequence of grants and spends.

How the latency figure was produced

We publish 62 ms median and 76% under 100 ms. Those come from calling 254 published examples on 22 October 2026, each with its own sample request, against a local run of the API — once to warm up, then once timed — not from timing a fast endpoint and rounding. AI chat is left out: its time is the language model's.

Which is why we also say this: a handful of endpoints are much slower, and they are documented as such. A full varshaphal sweep or a year of raasi dasha is seconds, not milliseconds, because it is a scan rather than a lookup. A median hides that; publishing the distribution beside it does not.

What a 'median' does and does not tell you
median   62 ms      half of endpoints are faster than this
<100ms   76%        the bulk of ordinary lookups
slow     seconds     deep scans — named in the reference

Not yet measured

Two things we would like to publish and have not, said plainly rather than left for you to assume:

  • An independent positional benchmark. We compute from JPL ephemeris data, but we have not yet published a run comparing our output against JPL Horizons across a spread of dates and bodies, with the deviations and the code to reproduce them. Until we do, take the accuracy claim as “computed from this source” rather than “verified to this tolerance”.
  • Long-run uptime. Availability has been published on the status page only since October 2026, so there is no long history to quote yet. See transparency for what we do commit to.

Both are on the list. Neither is hard; both are work we would rather do properly than approximate.

Check any of this

The playground makes real calls with your own key, and a failed call costs nothing, so you can compare our output against whatever source you already trust. If you find a disagreement we cannot explain by ayanamsa, we want to hear about it.

Next