Kundali
One call returns a complete kundali: the lagna and nine grahas with their signs, houses, nakshatras and padas, the D1 and D9 charts, the Moon’s nakshatra and naming syllable, the Vimshottari dasha timeline and meta. Everything else is opt-in through include, and it all costs one credit.
Request
Section titled “Request”curl https://api.navapatra.com/v1/kundali \ -H "Authorization: Bearer $NAVAPATRA_API_KEY" \ -H "Navapatra-Version: 2026-11-01" \ -H "Content-Type: application/json" \ -d '{ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35:00", "place": { "lat": 28.2096, "lng": 83.9856 } }, "options": { "ayanamsha": "lahiri", "nodeType": "mean", "sensitivityMinutes": 10 }, "include": ["panchang", "svg"] }'const res = await fetch('https://api.navapatra.com/v1/kundali', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NAVAPATRA_API_KEY}`, 'Navapatra-Version': '2026-11-01', 'Content-Type': 'application/json', }, body: JSON.stringify({ birth: { calendar: 'BS', date: '2050-05-12', time: '14:35:00', place: { lat: 28.2096, lng: 83.9856 } }, options: { ayanamsha: 'lahiri', nodeType: 'mean', sensitivityMinutes: 10 }, include: ['panchang', 'svg'], }),});const kundali = await res.json();import osimport requests
res = requests.post( "https://api.navapatra.com/v1/kundali", headers={ "Authorization": f"Bearer {os.environ['NAVAPATRA_API_KEY']}", "Navapatra-Version": "2026-11-01", }, json={ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35:00", "place": {"lat": 28.2096, "lng": 83.9856}, }, "options": {"ayanamsha": "lahiri", "nodeType": "mean", "sensitivityMinutes": 10}, "include": ["panchang", "svg"], },)kundali = res.json()<?phprequire 'vendor/autoload.php';
$client = new GuzzleHttp\Client();$res = $client->post('https://api.navapatra.com/v1/kundali', [ 'headers' => [ 'Authorization' => 'Bearer ' . getenv('NAVAPATRA_API_KEY'), 'Navapatra-Version' => '2026-11-01', ], 'json' => [ 'birth' => [ 'calendar' => 'BS', 'date' => '2050-05-12', 'time' => '14:35:00', 'place' => ['lat' => 28.2096, 'lng' => 83.9856], ], 'options' => ['ayanamsha' => 'lahiri', 'nodeType' => 'mean', 'sensitivityMinutes' => 10], 'include' => ['panchang', 'svg'], ],]);$kundali = json_decode((string) $res->getBody(), true);| Field | Required | Notes |
|---|---|---|
calendar |
No | AD (default) or BS; the calendar of date |
date |
Yes | YYYY-MM-DD. AD 1900-01-01 to 2100-12-31 |
time |
Yes | HH:mm or HH:mm:ss, local civil time at the birthplace |
place |
Yes | { "lat", "lng" }, or { "query" } with an optional two-letter country |
tzid |
No | IANA zone, replaces the coordinate lookup |
utcOffset |
No | ±HH:mm, replaces the tz database; see Timezones |
Places by name. place.query is matched against a bundled gazetteer (GeoNames cities of 15,000 people or more worldwide, about 3,800 of them in India, plus every Nepal district, local level and town). Places in Nepal rank a little higher (more so with lang: "ne"), though an exact name elsewhere still wins over a partial match in Nepal. If the name fits more than one place, the API refuses to guess and returns 422 ambiguous_place with up to 10 candidates; show them to the user and send the chosen one’s lat and lng. Adding a country ("Pokhara, Nepal" or "country": "NP") usually settles it. No match returns 422 place_not_found. To build a place picker, use GET /v1/places/search, which costs nothing. Its ambiguous flag is true when the same rule would refuse the name, so you know to ask the user before sending the birth.
include
Section titled “include”| Value | Adds |
|---|---|
vargas |
All 16 divisional charts: D1, D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45, D60 |
dashas.yogini |
dashas.yogini timeline |
dashas.tribhagi |
dashas.tribhagi timeline |
panchang |
Birth panchang: vara, tithi with paksha, nakshatra, yoga, karana, lunar month |
svg |
svg.north, the North Indian D1 chart |
svg.south |
svg.north and svg.south |
Without include you get the default sections only. None of them changes the price.
options
Section titled “options”| Option | Default | Notes |
|---|---|---|
ayanamsha |
lahiri |
lahiri, lahiri_icrc, true_chitra, raman, kp |
nodeType |
mean |
mean or true |
sensitivityMinutes |
none | Integer 1 to 60; adds sensitivity |
dasha |
levels 2 | { levels, yearDays, asOf }; see Dashas |
tradition |
nepal |
Lunar month scheme of the birth panchang |
sunriseConvention |
upper_limb_refracted |
Used by the birth panchang |
disambiguation |
none | earlier or later for clock-change times |
nepalHistoricOffset |
tzdb |
historic_0540 for the +05:40 convention before 1986 |
Plus lang (en, ne, hi) and numerals (latin, devanagari) at the top level. See Conventions for what each one means.
Response
Section titled “Response”{ "subject": { "instantUtc": "1993-08-28T08:50:00Z", "place": { "lat": 28.2096, "lng": 83.9856 }, "tzid": "Asia/Kathmandu", "utcOffset": "+05:45", "offsetSource": "tzdb", "birth": { "ad": "1993-08-28", "bs": "2050-05-12" } }, "lagna": { "sign": { "index": 9, "name": "Dhanu" }, "longitude": 245.8854, "nakshatra": { "index": 19, "name": "Mula" }, "pada": 2 }, "grahas": [ { "id": "moon", "name": "Moon", "sign": { "index": 9, "name": "Dhanu" }, "longitude": 269.0004, "speed": 12.5652, "house": 1, "retrograde": false, "nakshatra": { "index": 21, "name": "Uttara Ashadha" }, "pada": 1 } ], "vargas": { "D1": { "lagna": { "index": 9, "name": "Dhanu" }, "moon": { "index": 9, "name": "Dhanu" }, "...": "..." }, "D9": { "lagna": { "index": 2, "name": "Vrishabha" }, "moon": { "index": 9, "name": "Dhanu" }, "...": "..." } }, "moon": { "rashi": { "index": 9, "name": "Dhanu" }, "nakshatra": { "index": 21, "name": "Uttara Ashadha" }, "pada": 1, "syllable": { "index": 81, "en": "Bhe", "ne": "भे", "hi": "भे" } }, "dashas": { "vimshottari": { "...": "see Dashas" } }, "panchang": { "vara": { "index": 6, "name": "Saturday" }, "tithi": { "index": 12, "name": "Dwadashi", "start": "1993-08-27T21:04:12Z", "end": "1993-08-28T21:54:23Z", "paksha": { "id": "shukla", "index": 1, "name": "Shukla" } }, "nakshatra": { "index": 21, "name": "Uttara Ashadha", "start": "1993-08-28T04:22:55Z", "end": "1993-08-29T05:58:22Z" }, "yoga": { "index": 4, "name": "Saubhagya", "start": "1993-08-28T08:18:52Z", "end": "1993-08-29T08:06:32Z" }, "karana": { "index": 1, "name": "Bava", "start": "1993-08-27T21:04:12Z", "end": "1993-08-28T09:26:14Z" }, "lunarMonth": { "index": 5, "name": "Adhik Bhadrapada", "start": "1993-08-17T19:28:15Z", "end": "1993-09-16T03:10:15Z", "adhik": true, "scheme": "purnimanta" } }, "sensitivity": [ { "field": "lagnaD9", "from": { "index": 2, "name": "Vrishabha" }, "to": { "index": 3, "name": "Mithuna" }, "changesAt": "1993-08-28T08:53:24Z" } ], "svg": { "north": "<svg xmlns=\"http://www.w3.org/2000/svg\" ...>" }, "meta": { "engineVersion": "0.1.0", "apiVersion": "2026-11-01", "ayanamsha": { "id": "lahiri", "degrees": 23.773159 }, "nodeType": "mean", "tradition": "nepal", "sunriseConvention": "upper_limb_refracted", "tzdbVersion": "unknown", "deltaTModelVersion": "iers-c01-2026.5+quad2100-v1", "bsTableVersion": "2026.10.1", "overridesVersion": null }}grahasalways lists nine entries in the order sun, moon, mars, mercury, jupiter, venus, saturn, rahu, ketu. Longitudes are sidereal degrees in [0, 360),speedis degrees per day and negative values meanretrograde: true.houseis whole-sign: house 1 is the lagna’s sign.vargasmaps each chart to the sign of the lagna and every graha. You get D1 and D9 by default, all 16 withinclude: ["vargas"].moon.syllableis the naming syllable (namakshar) for the Moon’s nakshatra and pada, in all three scripts at once.panchangdescribes the moment of birth: the tithi, nakshatra, yoga and karana running then, with their start and end instants.
Birth-time sensitivity
Section titled “Birth-time sensitivity”Recorded birth times are often rounded. options.sensitivityMinutes: N checks whether anything important changes within N minutes either side of the given time and lists each change:
field |
What changes |
|---|---|
lagnaD1 |
Sign of the lagna |
lagnaD9 |
Sign of the lagna in the D9 chart |
moonNakshatra |
The Moon’s nakshatra |
moonPada |
The Moon’s pada |
In the example above, a birth 3 minutes and 24 seconds later than recorded would have a Mithuna D9 lagna instead of Vrishabha. When nothing changes within the window, sensitivity is []. Without the option, the field is absent.
Surface this to users: “Your D9 lagna changes if you were born after 14:38.”
Graha positions only
Section titled “Graha positions only”The same birth and chart options (ayanamsha, nodeType, disambiguation, nepalHistoricOffset), returning only subject, lagna, grahas and meta. Use it when you need positions and nothing else.
Response size
Section titled “Response size”A default kundali is about 13 KB of JSON. Every response is capped at 512 KB; a request that would exceed it (for example all vargas, every dasha system and levels: 3) returns 413 response_too_large with a hint such as dropping vargas or lowering options.dasha.levels. Responses are compressed with gzip or brotli when your client asks.
Determinism
Section titled “Determinism”The same request with the same meta versions returns byte-identical JSON, and nothing in it depends on when you call. That makes kundali responses safe to cache on your side, keyed by the request body and meta.