LifeAstroAPILifeAstroAPI

API Reference / Vedic Astrology / Dasha

GET
20 credits

/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.

?depth controls nesting: depth=1 returns the Maha Dasha list only, depth=3 (default) returns MD → AD → PD, depth=5 returns all 5 levels including Sookshma and Prana. A value outside 1–5 returns 400. Cost is 20 credits regardless of depth. Every `*_local` string uses the UTC offset in force at the birth moment, so in timezones with daylight saving a later date can be one hour off the wall clock. Use `*_jd` for exact instants.

Request

All requests require an Authorization header with your dv_live_* API key.

example request
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.

NameRequiredExampleDescription
dateyes1990-01-15Birth date (YYYY-MM-DD).
tzyesAsia/KolkataBirth place timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30).
latyes19.076Birth place latitude in decimal degrees.
lonyes72.8777Birth place longitude in decimal degrees.
timeno10:30Birth time (HH:MM, 24-hour, local). Defaults to 12:00.
ayanamsano—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.

200 response
{
  "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 expand

Levels: 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.

FieldTypeMeaning
birth_datestring
Birth date, echoed from `date`.
example: "1990-01-15"
birth_timestring
Birth time, echoed from `time` (defaults to 12:00).
example: "10:30"
locationobject
Birth place, echoed from `lat`, `lon` and `alt` (metres, default 0).
example: { "lat": 19.076, "lon": 72.8777, "alt": 0 }
tzstring
Timezone, echoed from `tz`. Its UTC offset at the birth moment is used for every `*_local` string.
example: "Asia/Kolkata"
ayanamsastring
Ayanamsa used. Set it with `ayanamsa`: lahiri (default), raman, krishnamurti, fagan, yukteshwar, true_chitrapaksha.
example: "lahiri"
ayanamsa_valuenumber
Ayanamsa in degrees at the birth moment.
example: 23.71795
systemstring
Dasha system. Always "vimshottari" for this endpoint.
example: "vimshottari"
total_yearsinteger
Length of the full cycle in years. Always 120.
example: 120
year_daysnumber
Days in one dasha year. Every period length is based on this value.
example: 365.25
depthinteger (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[].lordstring
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_jdnumber
Period start as a Julian Day (UT).
example: 2444184.469622
maha_dasha[].end_jdnumber
Period end as a Julian Day (UT). Equal to the next period's start_jd.
example: 2451489.469622
maha_dasha[].start_localstring
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_localstring
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[].lordstring
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 call
    Pass ?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 tree
    Start 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 period
    Call /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 JDs
    Every period has `start_jd` and `end_jd`. `(end_jd - start_jd) / year_days` gives the length in years. There is no separate duration field.
  • Validation
    The 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.