LifeAstroAPILifeAstroAPI

API Reference / Vedic Astrology / Transit & Gochara

GET
20 credits

/v1/transit/sade-sati/windows

Sade Sati and Dhaiya (4th/8th) windows from the natal Moon with exact Saturn ingress times, retrograde re-entries, merged cycles and phases, for up to 60 years.

What this tells you

Saturn's passes over the 12th, 1st and 2nd sign from the natal Moon (Sade Sati) and over the 4th and 8th (Dhaiya, also called Small Panoti), as exact dated windows for up to 60 years. intervals gives every stay in a sign, including the short retrograde re-entries; cycles merges them into the windows people talk about ("your Sade Sati runs from July 2034 to September 2041"). The vocabulary is the same as /v1/transit/sade-sati and /v1/transit/small-panoti. Every instant is given as *_local (RFC 3339 with offset, in `tz`) and *_jd (Julian Day, UT). Ingress times are bisected to about 1 second, with the ayanamsa of each moment.

The natal chart is under `birth.*` (`birth.date`, `birth.time`, `birth.tz`; place not needed). `from` and `tz` are unprefixed. Sending an unprefixed `date` does nothing here.

Request

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

example request
curl "https://api.lifeastroapi.com/v1/transit/sade-sati/windows?birth.date=1990-01-15&birth.tz=Asia%2FKolkata&birth.time=10%3A30&from=2027-01-15" \
  -H "Authorization: Bearer YOUR_API_KEY"

Query parameters

Checked against the API: a parameter is marked required when the request fails without it.

NameRequiredExampleDescription
birth.dateyes1990-01-15Birth date (YYYY-MM-DD).
birth.tzyesAsia/KolkataBirth place timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30).
birth.timeno10:30Birth time (HH:MM, 24-hour, local). Defaults to 12:00.
fromno2027-01-15Start date YYYY-MM-DD (local midnight in tz). Defaults to now.
ayanamsano—Ayanamsa (sidereal offset) to use. Defaults to lahiri.
yearsno—Span in calendar years after from. Default 25, max 60.
include_pastno—Also return windows from the birth moment up to from. Default false.

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_moon_sign_index": 4,
  "ayanamsa": "lahiri",
  "tz": "Asia/Kolkata",
  "from_local": "2027-01-15T00:00:00+05:30",
  "from_jd": 2461420.270833,
  "to_local": "2052-01-15T00:00:00+05:30",
  "to_jd": 2470551.270833,
  "include_past": false,
  "at_from": {
    "saturn_sign_index": 11,
    "house_from_moon": 8,
    "kind": "dhaiya_8",
    "phase": "ashtama"
  },
  "intervals": [
    {
      "kind": "dhaiya_8",
      "phase": "ashtama",
      "saturn_sign_index": 11,
      "start_local": "2025-03-29T21:43:25+05:30",
      "end_local": "2027-06-03T04:43:30+05:30",
      "start_jd": 2460764.175983,
      "end_jd": 2461559.467708,
      "retro_reentry": false
    },
    {
      "kind": "dhaiya_8",
      "phase": "ashtama",
      "saturn_sign_index": 11,
      "start_local": "2027-10-20T08:13:25+05:30",
      "end_local": "2028-02-23T18:17:41+05:30",
      "start_jd": 2461698.61348,
      "end_jd": 2461825.03311,
      "retro_reentry": true
    }
  ],
  "cycles": [
    {
      "kind": "dhaiya_8",
      "start_local": "2025-03-29T21:43:25+05:30",
      "end_local": "2028-02-23T18:17:41+05:30",
      "start_jd": 2460764.175983,
      "end_jd": 2461825.03311,
      "interval_indexes": [
        0,
        1
      ]
    },
    {
      "kind": "sade_sati",
      "start_local": "2034-07-13T04:23:26+05:30",
      "end_local": "2041-09-26T06:59:33+05:30",
      "start_jd": 2464156.453772,
      "end_jd": 2466788.562183,
      "phases": [
        {
          "phase": "rising",
          "start_local": "2034-07-13T04:23:26+05:30",
          "end_local": "2036-08-27T21:12:20+05:30",
          "start_jd": 2464156.453772,
          "end_jd": 2464933.154401
        },
        {
          "phase": "peak",
          "start_local": "2036-08-27T21:12:20+05:30",
          "end_local": "2039-07-13T03:23:55+05:30",
          "start_jd": 2464933.154401,
          "end_jd": 2465982.412445
        }
      ],
      "interval_indexes": [
        2,
        3
      ]
    }
  ]
}

Field reference

Every field in the response, with its type, a real example, and what it means.

FieldTypeMeaning
birth_moon_sign_indexinteger (0–11)
Natal Moon sign (0 = Aries), with the ayanamsa of the birth moment.
example: 4
ayanamsa, tzstring
Ayanamsa used and the zone of every *_local value (`tz`, default birth.tz).
example: "lahiri", "Asia/Kolkata"
from_local, to_local (+ _jd)string, number
The range: `from` (local midnight, default now) to from + `years` (default 25, max 60).
example: "2027-01-15T00:00:00+05:30", "2052-01-15T00:00:00+05:30"
include_pastboolean
True when the range starts at the birth moment (`include_past=true`).
example: false
at_fromobject
Status at `from`, computed exactly as /v1/transit/sade-sati. kind and phase are null when Saturn is in none of these signs.
example: { "saturn_sign_index": 11, "house_from_moon": 8, "kind": "dhaiya_8", "phase": "ashtama" }
intervals[]array
One item per contiguous stay of Saturn in one sign: kind sade_sati (phase rising, peak or setting for the 12th, 1st and 2nd sign from the Moon), dhaiya_4 (phase kantak) or dhaiya_8 (phase ashtama). Items overlapping the range keep their true start and end.
example: [{ "kind": "dhaiya_8", "phase": "ashtama", "saturn_sign_index": 11, "start_local": "2025-03-29T21:43:25+05:30", … }]
intervals[].retro_reentryboolean
True when the stay begins with Saturn coming back into a sign it left on its retrograde loop.
example: true
cycles[]array
One merged window per Saturn pass and kind (first entry to last exit, so a retrograde exit does not split it), with indexes into intervals. sade_sati cycles also carry phases[] with the span of rising, peak and setting.
example: [{ "kind": "sade_sati", "start_local": "2034-07-13T04:23:26+05:30", "end_local": "2041-09-26T06:59:33+05:30", "phases": [ … ], "interval_indexes": [2, 3] }]

Usage tips

How to use it

  • Show cycles, explain intervals
    Use cycles for the headline dates and phases; use intervals when you need to explain why a phase seems to start twice (retro_reentry).
  • Past windows
    include_past=true starts the range at the birth moment, so you get every Sade Sati of the person's life so far plus `years` ahead.
  • Couples
    /v1/milan/summary returns 10 years of these windows for both partners in one call.

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 7,500 welcome credits plus 1,500 free credits a month. Sign up.