Dashas
A dasha system divides life into periods ruled by grahas (or, for Yogini, by the eight yoginis). The starting period depends on the Moon’s nakshatra at birth, and how much of it remains depends on how far the Moon has travelled through that nakshatra.
POST /v1/kundali also returns the Vimshottari timeline by default; use /v1/dasha when you need only a timeline, a different system or a deeper level.
Systems
Section titled “Systems”system |
Cycle | Sequence |
|---|---|---|
vimshottari (default) |
120 years | Ketu 7, Venus 20, Sun 6, Moon 10, Mars 7, Rahu 18, Jupiter 16, Saturn 19, Mercury 17 |
yogini |
36 years, repeated | Mangala 1, Pingala 2, Dhanya 3, Bhramari 4, Bhadrika 5, Ulka 6, Siddha 7, Sankata 8 |
tribhagi |
40 years, run three times | The Vimshottari sequence with every period cut to one third |
Every timeline covers 120 years from the start of the period running at birth. Yogini lords map to grahas: Mangala to the Moon, Pingala to the Sun, Dhanya to Jupiter, Bhramari to Mars, Bhadrika to Mercury, Ulka to Saturn, Siddha to Venus and Sankata to Rahu.
Request
Section titled “Request”curl https://api.navapatra.com/v1/dasha \ -H "Authorization: Bearer $NAVAPATRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35", "place": { "lat": 28.2096, "lng": 83.9856 } }, "options": { "system": "vimshottari", "levels": 3, "asOf": "2026-11-01T00:00:00Z" } }'const res = await fetch('https://api.navapatra.com/v1/dasha', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NAVAPATRA_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ birth: { calendar: 'BS', date: '2050-05-12', time: '14:35', place: { lat: 28.2096, lng: 83.9856 } }, options: { system: 'vimshottari', levels: 3, asOf: '2026-11-01T00:00:00Z' }, }),});const { dasha } = await res.json();console.log(dasha.current.map((p: { lord: { name: string } }) => p.lord.name).join(' / '));// Rahu / Ketu / Jupiterimport osimport requests
res = requests.post( "https://api.navapatra.com/v1/dasha", headers={"Authorization": f"Bearer {os.environ['NAVAPATRA_API_KEY']}"}, json={ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35", "place": {"lat": 28.2096, "lng": 83.9856}, }, "options": {"system": "vimshottari", "levels": 3, "asOf": "2026-11-01T00:00:00Z"}, },)dasha = res.json()["dasha"]print(" / ".join(p["lord"]["name"] for p in dasha["current"])) # Rahu / Ketu / Jupiter<?phprequire 'vendor/autoload.php';
$client = new GuzzleHttp\Client();$res = $client->post('https://api.navapatra.com/v1/dasha', [ 'headers' => ['Authorization' => 'Bearer ' . getenv('NAVAPATRA_API_KEY')], 'json' => [ 'birth' => [ 'calendar' => 'BS', 'date' => '2050-05-12', 'time' => '14:35', 'place' => ['lat' => 28.2096, 'lng' => 83.9856], ], 'options' => ['system' => 'vimshottari', 'levels' => 3, 'asOf' => '2026-11-01T00:00:00Z'], ],]);$dasha = json_decode((string) $res->getBody(), true)['dasha'];echo implode(' / ', array_map(fn ($p) => $p['lord']['name'], $dasha['current'])), PHP_EOL;| Option | Values | Default |
|---|---|---|
system |
vimshottari, yogini, tribhagi |
vimshottari |
levels |
1 maha dasha, 2 adds antar dasha, 3 adds pratyantar dasha |
2 |
asOf |
An ISO 8601 instant with offset, such as 2026-11-01T00:00:00Z |
none |
yearDays |
Days per dasha year, up to 400 | 365.25 |
The chart options (ayanamsha, nodeType, disambiguation, nepalHistoricOffset) apply too, because they change the Moon’s position.
Response
Section titled “Response”{ "subject": { "instantUtc": "1993-08-28T08:50:00Z", "tzid": "Asia/Kathmandu", "...": "..." }, "dasha": { "system": { "id": "vimshottari", "index": 1, "name": "Vimshottari" }, "levels": 3, "yearDays": 365.25, "balanceAtBirth": { "lord": { "id": "sun", "index": 1, "name": "Sun" }, "years": 4.9498 }, "periods": [ { "lord": { "id": "sun", "index": 1, "name": "Sun" }, "start": "1992-08-09T18:54:18Z", "end": "1998-08-10T06:54:18Z", "periods": [ { "lord": { "id": "sun", "index": 1, "name": "Sun" }, "start": "1992-08-09T18:54:18Z", "end": "1992-11-27T08:42:18Z", "periods": [ "..." ] } ] } ], "current": [ { "level": 1, "lord": { "id": "rahu", "index": 8, "name": "Rahu" }, "start": "2015-08-10T12:54:18Z", "end": "2033-08-10T00:54:18Z" }, { "level": 2, "lord": { "id": "ketu", "index": 9, "name": "Ketu" }, "start": "2026-02-08T15:54:18Z", "end": "2027-02-27T04:12:18Z" }, { "level": 3, "lord": { "id": "jupiter", "index": 5, "name": "Jupiter" }, "start": "2026-09-13T23:40:30Z", "end": "2026-11-04T02:54:54Z" } ] }, "meta": { "engineVersion": "0.1.0", "ayanamsha": { "id": "lahiri", "degrees": 23.773159 }, "...": "..." }}How to read it:
balanceAtBirthis how much of the first period was left at birth: here 4.9498 years of a 6-year Sun dasha.- The first period starts before birth.
periods[0].startis when that dasha began, so the timeline lines up with standard tables. Count fromsubject.instantUtcif you only want the part after birth. - Sub-periods follow the same sequence, starting from their parent’s lord, with lengths in proportion to the lords’ years.
- All instants are UTC, to the second.
The running period: asOf
Section titled “The running period: asOf”current lists the period running at each level at the instant you pass as asOf, from the maha dasha down. It is returned only when you send asOf. The API never reads its own clock for dashas, so the same request returns the same response whenever you make it, which keeps results cacheable and reproducible.
To show “current dasha” in an app, send the current time from your side:
options: { levels: 3, asOf: new Date().toISOString() }With levels: 3 a 120-year Vimshottari timeline has 729 pratyantar periods. That is fine on /v1/dasha. Inside /v1/kundali, combining level 3 with extra systems and all vargas can pass the 512 KB response limit, which returns 413 response_too_large with a hint about what to drop. See Kundali.
Dashas inside a kundali
Section titled “Dashas inside a kundali”POST /v1/kundali always includes dashas.vimshottari at 2 levels. Add Yogini or Tribhagi with include, and set depth or asOf with options.dasha:
{ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35", "place": { "lat": 28.2096, "lng": 83.9856 } }, "include": ["dashas.yogini", "dashas.tribhagi"], "options": { "dasha": { "levels": 1, "asOf": "2026-11-01T00:00:00Z" } }}The same options.dasha applies to every system in the response.