Skip to content
POST/api/astro/dasha/drill/1 credit

Dasha drill-down

One branch of a dasha tree, instead of the whole thing. levels on the other dasha endpoints caps DEPTH, but still returns every period at that depth: levels=3 on Vimshottari is every pratyantardasha under every antardasha under every mahadasha, which is about 95 KB. A screen where someone taps one mahadasha to expand it needs a single branch of that. Give this endpoint the chain of lords to follow and it returns only what sits under the period you named. {"lords": ["moon", "mars"], "levels": 1} returns the pratyantardashas inside the Moon mahadasha's Mars antardasha — roughly 1.8 KB against the 95 KB of the tree that contains it. Lord names are matched case-insensitively, and path in the response echoes the chain that was actually matched. Use a planet name for the nakshatra dashas and a sign name for the Jaimini rashi dashas; an unrecognised lord returns 400 listing what was available at that level. This saves TRANSFER, not COMPUTATION. The engine still builds the tree to the depth you asked for and this discards the rest, so a drill is no faster to compute than the equivalent levels= call. What it saves is bandwidth, JSON parsing, and the memory a browser or phone spends holding a tree it is showing one branch of.

https://api.occultapi.com/api/astro/dasha/drill/
Test Request

Authentication

Send your key in the X-API-Key header. Keys are server-side credentials — never put one in browser JavaScript or a mobile app.

X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/json

Request fields

FieldTypeRequiredNotes
latitudenumber (double)required

Latitude of the place, in decimal degrees. Positive is north, negative is south. Example: 26.9124 for Jaipur, 40.7128 for New York. Minutes and seconds are not accepted - convert first.

min -90 · max 90

longitudenumber (double)required

Longitude of the place, in decimal degrees. Positive is east, negative is west. Example: 75.7873 for Jaipur, -74.0060 for New York. Note the sign: a missing minus puts New York in China.

min -180 · max 180

dasha_directionstringoptional
forwardbackward
dasha_startstringoptional

Which cycle the timeline opens on.

currentnextprevious
date_timestring (date-time)optional

The moment to calculate for, ISO 8601. ALWAYS include an offset or a trailing Z - a value with no zone is read as Asia/Kolkata (UTC+05:30), not UTC, and can return the previous day's result with a 200. '2026-09-01T06:00:00Z' and '2026-09-01 06:00:00' are different instants and give different answers.

datetimestring (date-time)optional

The moment to calculate for, ISO 8601. ALWAYS include an offset or a trailing Z - a value with no zone is read as Asia/Kolkata (UTC+05:30), not UTC. Same meaning as date_time, which other endpoints call the same thing by a different name.

days_in_yearnumber (double)optional

Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year.

min 360 · max 365.256364

levelsintegeroptional

How many levels BELOW the located period to return. 1 gives its immediate children.

min 1 · max 4

lordsarrayoptional

The chain of period lords to follow from the top, outermost first — e.g. ["moon", "mars"] means "inside the Moon mahadasha, inside its Mars antardasha". A planet name for nakshatra dashas, a sign name for rashi dashas. Empty returns the top level.

nodestringoptional

Lunar node model. Required by the rashi parent, which does not default it; defaulted here.

truemean
systemstringoptional

Dasha system. See /api/astro/dasha/systems/. Defaults to Vimshottari.

timezone_as_floatnumber (double)optional

UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30), -5 for New York in winter, 5.75 for Nepal. This is NOT validated against date_time - if the two disagree you get a successful response for the wrong moment, so derive both from the same source. Use the offset in force on that date, not today's: a summer birth in a country with daylight saving needs the summer offset.

min -12 · max 14

Example request

curl -X POST https://api.occultapi.com/api/astro/dasha/drill/ \
  -H "X-API-Key: $OCCULT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"latitude":26.9124,"longitude":75.7873,"dasha_direction":"forward","dasha_start":"current","date_time":"2026-09-01 06:00:00","node":"true","timezone_as_float":5.5}'

Response

{
  "data": {
    "system": "Vimshottari",
    "engine_id": "VimshottariDasha",
    "family": "nakshatra",
    "lord_type": "planet",
    "levels": 1,
    "level_names": [
      "mahadasha"
    ],
    "cycle_years": 120,
    "conditional": false,
    "path": [],
    "depth": 0,
    "child_level": "mahadasha",
    "periods": [
      {
        "lord": "ketu",
        "start": "2025-11-21 14:30:19.062048+00:00",
        "end": "2032-11-21 08:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "venus",
        "start": "2032-11-21 08:30:19.062048+00:00",
        "end": "2052-11-21 08:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "sun",
        "start": "2052-11-21 08:30:19.062048+00:00",
        "end": "2058-11-21 20:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "moon",
        "start": "2058-11-21 20:30:19.062048+00:00",
        "end": "2068-11-21 08:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "mars",
        "start": "2068-11-21 08:30:19.062048+00:00",
        "end": "2075-11-22 02:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "rahu",
        "start": "2075-11-22 02:30:19.062048+00:00",
        "end": "2093-11-21 14:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "jupiter",
        "start": "2093-11-21 14:30:19.062048+00:00",
        "end": "2109-11-22 14:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "saturn",
        "start": "2109-11-22 14:30:19.062048+00:00",
        "end": "2128-11-22 08:30:19.062048+00:00",
        "children": []
      },
      {
        "lord": "mercury",
        "start": "2128-11-22 08:30:19.062048+00:00",
        "end": "2145-11-22 14:30:19.062048+00:00",
        "children": []
      }
    ],
    "metadata": {
      "calculation_time_ms": 0,
      "max_levels": 1,
      "data_size_bytes": 1171,
      "data_size_mb": 0,
      "structure": "nested_hierarchical"
    },
    "boundary_note": "The last sub-period of each period ends 18 hours before its parent does. Sibling periods are contiguous and the first child starts with its parent, but the final 18 hours of every period have no sub-period covering them. This comes from the calculation engine and is reported rather than hidden."
  },
  "status": 200,
  "is_error": false,
  "message": "successful"
}

Captured from a real call using the exact request above. Results sit under data.

Errors

Metering errors return { "error": "…", "message": "<code>", "is_error": true }. Show error to people and branch on message. See the error reference.