API Reference / Vedic Astrology / Dasha
/v1/dasha/vimshottari
Complete 5-layer Vimshottari Dasha in one call — all 9 Maha Dashas each with 9 AD → 9 PD → 9 SD → 9 Prana sub-periods (59,049 total periods). Pass ?depth=1..5 to control nesting.
What this tells you
Vimshottari is the main dasha system in Vedic astrology. It is a 120-year cycle of planetary periods that starts from the Moon's nakshatra at birth. Each planet rules a fixed number of years. Each Maha Dasha splits into 9 Antar Dashas in the same planetary order, starting with the Maha Dasha lord, and each Antar Dasha splits again the same way, across 5 levels: 1. Maha Dasha (MD) — 6 to 20 years 2. Antar Dasha (AD) — about 3.6 months to 3.3 years 3. Pratyantar Dasha (PD) — about 5.5 days to 6.7 months 4. Sookshma Dasha (SD) — about 6.6 hours to 34 days 5. Prana Dasha — about 20 minutes to 5.6 days The first Maha Dasha belongs to the lord of the birth nakshatra. It starts before birth: the part of that period the Moon had already covered in its nakshatra is placed before the birth moment. The 9 Maha Dashas then run back to back for exactly 120 years. Use ?depth= to choose how many levels come back. At depth=5 the tree holds 9⁵ = 59,049 Prana periods.
Request
All requests require an Authorization header with your dv_live_* API key.
curl "https://api.lifeastroapi.com/v1/dasha/vimshottari?date=1990-01-15&tz=Asia%2FKolkata&lat=19.076&lon=72.8777&time=10%3A30" \
-H "Authorization: Bearer YOUR_API_KEY"Query parameters
Checked against the API: a parameter is marked required when the request fails without it.
| Name | Required | Example | Description |
|---|---|---|---|
date | yes | 1990-01-15 | Birth date (YYYY-MM-DD). |
tz | yes | Asia/Kolkata | Birth place timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30). |
lat | yes | 19.076 | Birth place latitude in decimal degrees. |
lon | yes | 72.8777 | Birth place longitude in decimal degrees. |
time | no | 10:30 | Birth time (HH:MM, 24-hour, local). Defaults to 12:00. |
ayanamsa | no | — | Ayanamsa (sidereal offset) to use. Defaults to lahiri. |
Response (200 OK)
The real response to the example request above, generated from the API itself. Long arrays are trimmed to their first two items. Field names are stable across versions.
{
"birth_date": "1990-01-15",
"birth_time": "10:30",
"location": {
"lat": 19.076,
"lon": 72.8777,
"alt": 0
},
"tz": "Asia/Kolkata",
"ayanamsa": "lahiri",
"ayanamsa_value": 23.71795,
"system": "vimshottari",
"total_years": 120,
"year_days": 365.25,
"depth": 3,
"maha_dasha": [
{
"lord": "Venus",
"start_jd": 2444184.469622,
"end_jd": 2451489.469622,
"start_local": "1979-11-07 04:46:15",
"end_local": "1999-11-07 04:46:15",
"sub_periods": [
{
"lord": "Venus",
"start_jd": 2444184.469622,
"end_jd": 2445401.969622,
"start_local": "1979-11-07 04:46:15",
"end_local": "1983-03-08 16:46:15",
"sub_periods": [
{
"lord": "Venus",
"start_jd": 2444184.469622,
"end_jd": 2444387.386289,
"start_local": "1979-11-07 04:46:15",
"end_local": "1980-05-28 02:46:15"
},
{
"lord": "Sun",
"start_jd": 2444387.386289,
"end_jd": 2444448.261289,
"start_local": "1980-05-28 02:46:15",
"end_local": "1980-07-27 23:46:15"
}
]
},
{
"lord": "Sun",
"start_jd": 2445401.969622,
"end_jd": 2445767.219622,
"start_local": "1983-03-08 16:46:15",
"end_local": "1984-03-07 22:46:15",
"sub_periods": [
{
"lord": "Sun",
"start_jd": 2445401.969622,
"end_jd": 2445420.232122,
"start_local": "1983-03-08 16:46:15",
"end_local": "1983-03-26 23:04:15"
},
{
"lord": "Moon",
"start_jd": 2445420.232122,
"end_jd": 2445450.669622,
"start_local": "1983-03-26 23:04:15",
"end_local": "1983-04-26 09:34:15"
}
]
}
]
},
{
"lord": "Sun",
"start_jd": 2451489.469622,
"end_jd": 2453680.969622,
"start_local": "1999-11-07 04:46:15",
"end_local": "2005-11-06 16:46:15",
"sub_periods": [
{
"lord": "Sun",
"start_jd": 2451489.469622,
"end_jd": 2451599.044622,
"start_local": "1999-11-07 04:46:15",
"end_local": "2000-02-24 18:34:15",
"sub_periods": [
{
"lord": "Sun",
"start_jd": 2451489.469622,
"end_jd": 2451494.948372,
"start_local": "1999-11-07 04:46:15",
"end_local": "1999-11-12 16:15:39"
},
{
"lord": "Moon",
"start_jd": 2451494.948372,
"end_jd": 2451504.079622,
"start_local": "1999-11-12 16:15:39",
"end_local": "1999-11-21 19:24:39"
}
]
},
{
"lord": "Moon",
"start_jd": 2451599.044622,
"end_jd": 2451781.669622,
"start_local": "2000-02-24 18:34:15",
"end_local": "2000-08-25 09:34:15",
"sub_periods": [
{
"lord": "Moon",
"start_jd": 2451599.044622,
"end_jd": 2451614.263372,
"start_local": "2000-02-24 18:34:15",
"end_local": "2000-03-10 23:49:15"
},
{
"lord": "Mars",
"start_jd": 2451614.263372,
"end_jd": 2451624.916497,
"start_local": "2000-03-10 23:49:15",
"end_local": "2000-03-21 15:29:45"
}
]
}
]
}
]
}Interactive preview
click any node to expandLevels: Mahadasha → Antardasha → Pratyantar → Sookshma → Praana. Built from the example response above, so each list shows its first two periods.
Field reference
Every field in the response, with its type, a real example, and what it means.
| Field | Type | Meaning |
|---|---|---|
| birth_date | string | Birth date, echoed from `date`. example: "1990-01-15" |
| birth_time | string | Birth time, echoed from `time` (defaults to 12:00). example: "10:30" |
| location | object | Birth place, echoed from `lat`, `lon` and `alt` (metres, default 0). example: { "lat": 19.076, "lon": 72.8777, "alt": 0 } |
| tz | string | Timezone, echoed from `tz`. Its UTC offset at the birth moment is used for every `*_local` string. example: "Asia/Kolkata" |
| ayanamsa | string | Ayanamsa used. Set it with `ayanamsa`: lahiri (default), raman, krishnamurti, fagan, yukteshwar, true_chitrapaksha. example: "lahiri" |
| ayanamsa_value | number | Ayanamsa in degrees at the birth moment. example: 23.71795 |
| system | string | Dasha system. Always "vimshottari" for this endpoint. example: "vimshottari" |
| total_years | integer | Length of the full cycle in years. Always 120. example: 120 |
| year_days | number | Days in one dasha year. Every period length is based on this value. example: 365.25 |
| depth | integer (1–5) | Number of levels returned. Set it with `depth`: 1 = Maha Dasha only, 3 = Maha → Antar → Pratyantar (default), 5 = all levels down to Prana. example: 3 |
| maha_dasha[] | array | The 9 Maha Dashas, in order. The first one starts before birth. example: […] |
| maha_dasha[].lord | string | Ruling planet of the period. example: "Venus"Jyotish: Order and years: Ketu 7, Venus 20, Sun 6, Moon 10, Mars 7, Rahu 18, Jupiter 16, Saturn 19, Mercury 17. The first lord is the ruler of the Moon's birth nakshatra. |
| maha_dasha[].start_jd | number | Period start as a Julian Day (UT). example: 2444184.469622 |
| maha_dasha[].end_jd | number | Period end as a Julian Day (UT). Equal to the next period's start_jd. example: 2451489.469622 |
| maha_dasha[].start_local | string | Period start as local time ("YYYY-MM-DD HH:MM:SS"), using the UTC offset at birth. example: "1979-11-07 04:46:15" |
| maha_dasha[].end_local | string | Period end as local time, same format. example: "1999-11-07 04:46:15" |
| maha_dasha[].sub_periods[] | array | The 9 Antar Dashas inside this Maha Dasha. Each item has the same fields (lord, start_jd, end_jd, start_local, end_local) and its own sub_periods, down to the requested depth. The key is left out at the last level. example: […] |
| maha_dasha[].sub_periods[].lord | string | Antar Dasha lord. example: "Venus"Jyotish: The first Antar Dasha always belongs to the Maha Dasha lord. The rest follow the same planetary order. |
Usage tips
How to use it
- All 5 levels in one callPass ?depth=5 to get the full tree, from Maha Dasha down to Prana Dasha, in one request. The tree depends only on the birth data and ayanamsa, so fetch it once per chart and cache it.
- Render as expandable treeStart collapsed at the Maha Dasha level. On click, expand to show the Antar Dashas, then the Pratyantar Dashas. Most screens never need more than 3 levels, so the default depth=3 is enough for display.
- Highlight current periodCall /v1/dasha/vimshottari/current to get the running period at every level and mark it in the tree. Match periods by start_jd.
- Compute duration from JDsEvery period has `start_jd` and `end_jd`. `(end_jd - start_jd) / year_days` gives the length in years. There is no separate duration field.
- ValidationThe 9 Maha Dashas span exactly 120 × year_days days. The sub-periods of any period add up to the parent's length (allow for float rounding). Use this for client-side checks.
- Localized planet names`lord` is in English by default. Pass `locale` (for example locale=hi) to get localized planet names.
Errors
Every error follows the same envelope. Use the error.code field (not the message) for conditional logic in your integration.
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "missing or invalid API key",
"request_id": "req_01hqy7k8c3e7m1n"
}
}402 Payment Required
{
"error": {
"code": "trial_exhausted",
"message": "your free trial credits are exhausted — pick a plan to continue",
"top_up_url": "https://lifeastroapi.com/pricing",
"request_id": "req_01hqy7k8c3e7m1n"
}
}429 Too Many Requests
{
"error": {
"code": "rate_limited",
"message": "rate limit exceeded; retry after 12 seconds",
"request_id": "req_01hqy7k8c3e7m1n"
}
}Try it
Get a dv_live_* key from your dashboard and paste into the cURL snippet above. New accounts get 1,500 free credits. Sign up.