Timing

The running dasha against the transits: the day's score and band, the dasha–transit confluence, favourable days by tara bala, and the eclipses that touch the chart.

Personal timing: today's score and band, the dasha–transit reading, a day-by-day strip and any red zone

POST/v1/timing/personal

2 credits · Secret key (test or live) · getPersonalTiming · Page for this operation

The day score blends the running mahadasha lord's transit dignity (half) with the Sun's and Moon's (a quarter each), 0–100: green from 60, amber from 40, red below. at (default now) sets today and the first day of the strip; days (1–30, default 10) its length; red_zone is the first run of two or more red days. today.label and today.insights are the dasha–transit confluence, which the engine reads at the moment of the call. Needs a birth time.

Request body

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • at string (date-time)
  • as_of string (date)

    A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.

  • days integer

    ≥ 1 · ≤ 30 · default 10

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      The Rahu/Ketu the chart uses: the true (osculating) node, as Swiss Ephemeris and Drik Panchang define it, or the mean node. meta.node names the one used. POST /v1/planets/positions always returns both.

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    • tone string

      descriptive: the prose fields (tithi.note, tara descriptions, the timing summary and insights, natal-transit descriptions, transit-event notes) carry reviewed descriptive sentences, attributed to the tradition and with no instructions, in options.lang. Ids, scores and every other value are unchanged. Applies to getPanchang, getFavourableDays, getPersonalTiming, getDashaTransitConfluence, getNatalTransits and listPlanetaryEvents (and those inside a bundle); elsewhere it changes nothing.

      one of default, descriptive · default "default"

    • dasha_year number

      Days in a Vimshottari year: 365.25 (Julian, the default), 365.2422 (tropical) or 360 (savana). Applies to /v1/dasha/vimshottari and /v1/dasha/vimshottari/current; data.basis.year_days names the one used.

      one of 365.25, 365.2422, 360 · default 365.25

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • as_of string (date-time) required
  • today object required
    • date string (date) required

      e.g. "1990-08-13"

    • score number required

      ≥ 0 · ≤ 100

    • band string required

      one of green, amber, red

    • label string required
    • summary string required
    • summary_id string required

      A stable id for summary: the same sentence always has the same id, so a client can show its own reviewed copy in its place (D3, 2026-10-29).

    • insights array of string required
    • insight_ids array of string,null required
    • sun object required
      Fields
      • transit_sign string required
      • natal_sign string required
      • strength number required

        ≥ 0 · ≤ 100

      • word string required
    • moon object required
      Fields
      • transit_sign string required
      • natal_sign string required
      • strength number required

        ≥ 0 · ≤ 100

      • word string required
    • dasha object required
      Fields
      • maha string required
      • antar string required
      • maha_end string (date-time) or null required

        One of:

        1. string (date-time)
        2. null
  • days array of object required
    • date string (date) required

      e.g. "1990-08-13"

    • score number required

      ≥ 0 · ≤ 100

    • band string required

      one of green, amber, red

  • red_zone object or null required

    One of:

    1. object
      Fields
      • from string (date) required

        e.g. "1990-08-13"

      • to string (date) required

        e.g. "1990-08-13"

      • reason string required
    2. null

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/timing/personal' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"at":"2026-10-02T06:00:00Z","days":10}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/timing/personal", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "birth": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "at": "2026-10-02T06:00:00Z",
    "days": 10
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "birth": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "at": "2026-10-02T06:00:00Z",
    "days": 10,
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/timing/personal",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/timing/personal');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"at":"2026-10-02T06:00:00Z","days":10}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 2,494 characters
{
  "data": {
    "as_of": "2026-10-02T06:00:00.000Z",
    "today": {
      "date": "2026-10-02",
      "score": 69,
      "band": "green",
      "label": "strongly_favorable",
      "summary": "A good day to act",
      "summary_id": "a_good_day_to_act",
      "insights": [
        "Rahu Mahadasha lord transiting H7 (partnerships) - challenging transit",
        "Rahu in own/exalted sign Aquarius - planet at full strength",
        "Rahu Antardasha lord also strong - double confluence",
        "Both Dasha lords aligned - exceptional period for wealth activities"
      ],
      "insight_ids": [
        "maha_transit_challenging",
        "maha_strong",
        "antar_strong",
        "both_aligned"
      ],
      "sun": {
        "transit_sign": "virgo",
        "natal_sign": "cancer",
        "strength": 50,
        "word": "steady"
      },
      "moon": {
        "transit_sign": "gemini",
        "natal_sign": "aries",
        "strength": 25,
        "word": "low"
      },
      "dasha": {
        "maha": "rahu",
        "antar": "rahu",
        "maha_end": "2044-06-21T04:53:13.747Z"
      }
    },
    "days": [
      {
        "date": "2026-10-02",
        "score": 69,
        "band": "green"
      },
      {
        "date": "2026-10-03",
        "score": 69,
        "band": "green"
      },
      {
        "date": "2026-10-04",
        "score": 69,
        "band": "green"
      },
      {
        "date": "2026-10-05",
        "score": 88,
        "band": "green"
      },
      {
        "date": "2026-10-06",
        "score": 88,
        "band": "green"
      },
      {
        "date": "2026-10-07",
        "score": 81,
        "band": "green"
      },
      {
        "date": "2026-10-08",
        "score": 81,
        "band": "green"
      },
      {
        "date": "2026-10-09",
        "score": 69,
        "band": "green"
      },
      {
        "date": "2026-10-10",
        "score": 69,
        "band": "green"
      },
      {
        "date": "2026-10-11",
        "score": 69,
        "band": "green"
      }
    ],
    "red_zone": null
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.10.10",
    "mode": "live",
    "credits_charged": 2,
    "ayanamsa": "lahiri",
    "house_system": "whole_sign",
    "node": "true",
    "timezone_used": {
      "name": "Asia/Kolkata",
      "utc_offset": "+05:30",
      "source": "auto"
    },
    "as_of": "2026-10-02T06:00:00.000Z"
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

Dasha–transit confluence: the running mahadasha and antardasha lords against their transit signs and houses

POST/v1/timing/dasha-transit

2 credits · Secret key (test or live) · getDashaTransitConfluence · Page for this operation

For at (default the moment of the call; as_of says which): the mahadasha and antardasha running then, against the transits then. confluence.score runs −1 to 1 (mahadasha lord 55%, antardasha lord 30%, the house of the mahadasha lord ±). Needs a birth time.

Request body

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • at string (date-time)
  • as_of string (date)

    A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      The Rahu/Ketu the chart uses: the true (osculating) node, as Swiss Ephemeris and Drik Panchang define it, or the mean node. meta.node names the one used. POST /v1/planets/positions always returns both.

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    • tone string

      descriptive: the prose fields (tithi.note, tara descriptions, the timing summary and insights, natal-transit descriptions, transit-event notes) carry reviewed descriptive sentences, attributed to the tradition and with no instructions, in options.lang. Ids, scores and every other value are unchanged. Applies to getPanchang, getFavourableDays, getPersonalTiming, getDashaTransitConfluence, getNatalTransits and listPlanetaryEvents (and those inside a bundle); elsewhere it changes nothing.

      one of default, descriptive · default "default"

    • dasha_year number

      Days in a Vimshottari year: 365.25 (Julian, the default), 365.2422 (tropical) or 360 (savana). Applies to /v1/dasha/vimshottari and /v1/dasha/vimshottari/current; data.basis.year_days names the one used.

      one of 365.25, 365.2422, 360 · default 365.25

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • as_of string (date-time) required
  • mahadasha object required
    • lord string required
    • transit_sign string required
    • transit_house integer or null required

      One of:

      1. integer
      2. null
    • score number required

      ≥ -1 · ≤ 1

    • good_house boolean required
    • end string (date-time) or null required

      One of:

      1. string (date-time)
      2. null
  • antardasha object or null required

    One of:

    1. object
      Fields
      • lord string required
      • transit_sign string required
      • score number required

        ≥ -1 · ≤ 1

      • end string (date-time) or null required

        One of:

        1. string (date-time)
        2. null
    2. null
  • confluence object required
    • score number required

      ≥ -1 · ≤ 1

    • label string required
  • insights array of string required
  • insight_ids array of string,null required

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/timing/dasha-transit' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"at":"2026-10-01T06:30:00Z"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/timing/dasha-transit", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "birth": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "at": "2026-10-01T06:30:00Z"
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "birth": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "at": "2026-10-01T06:30:00Z",
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/timing/dasha-transit",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/timing/dasha-transit');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"at":"2026-10-01T06:30:00Z"}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 1,323 characters
{
  "data": {
    "as_of": "2026-10-01T06:30:00.000Z",
    "mahadasha": {
      "lord": "rahu",
      "transit_sign": "aquarius",
      "transit_house": 7,
      "score": 1,
      "good_house": false,
      "end": "2044-06-21T04:53:13.747Z"
    },
    "antardasha": {
      "lord": "rahu",
      "transit_sign": "aquarius",
      "score": 1,
      "end": "2029-03-03T21:05:13.747Z"
    },
    "confluence": {
      "score": 0.75,
      "label": "strongly_favorable"
    },
    "insights": [
      "Rahu Mahadasha lord transiting H7 (partnerships) - challenging transit",
      "Rahu in own/exalted sign Aquarius - planet at full strength",
      "Rahu Antardasha lord also strong - double confluence",
      "Both Dasha lords aligned - exceptional period for wealth activities"
    ],
    "insight_ids": [
      "maha_transit_challenging",
      "maha_strong",
      "antar_strong",
      "both_aligned"
    ]
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.10.10",
    "mode": "live",
    "credits_charged": 2,
    "ayanamsa": "lahiri",
    "house_system": "whole_sign",
    "node": "true",
    "timezone_used": {
      "name": "Asia/Kolkata",
      "utc_offset": "+05:30",
      "source": "auto"
    },
    "as_of": "2026-10-01T06:30:00.000Z"
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

Favourable days ahead by tara bala: the Moon's nakshatra counted from the birth nakshatra

POST/v1/timing/favourable-days

1 credit · Secret key (test or live) · getFavourableDays · Page for this operation

From at, or local noon at the birth place on the date as_of (default now; the response's as_of says which), for days (1–30, default 7); the Moon is read at 12:00 IST each day. The nine taras repeat from the birth star: Janma (neutral), Sampat, Vipat, Kshema, Pratyari, Sadhaka, Naidhana, Mitra, Param Mitra. Without a birth time the Moon is taken at 12:00 local, with a warning.

Request body

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • at string (date-time)
  • as_of string (date)

    A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.

  • days integer

    ≥ 1 · ≤ 30 · default 7

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      The Rahu/Ketu the chart uses: the true (osculating) node, as Swiss Ephemeris and Drik Panchang define it, or the mean node. meta.node names the one used. POST /v1/planets/positions always returns both.

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    • tone string

      descriptive: the prose fields (tithi.note, tara descriptions, the timing summary and insights, natal-transit descriptions, transit-event notes) carry reviewed descriptive sentences, attributed to the tradition and with no instructions, in options.lang. Ids, scores and every other value are unchanged. Applies to getPanchang, getFavourableDays, getPersonalTiming, getDashaTransitConfluence, getNatalTransits and listPlanetaryEvents (and those inside a bundle); elsewhere it changes nothing.

      one of default, descriptive · default "default"

    • dasha_year number

      Days in a Vimshottari year: 365.25 (Julian, the default), 365.2422 (tropical) or 360 (savana). Applies to /v1/dasha/vimshottari and /v1/dasha/vimshottari/current; data.basis.year_days names the one used.

      one of 365.25, 365.2422, 360 · default 365.25

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • as_of string (date-time) required
  • birth_nakshatra NakshatraId required

    The 27 nakshatras, 1 Ashwini … 27 Revati. Spellings are fixed: mula (not moola), shatabhisha (not satabhisha), purva_ashadha, uttara_bhadrapada.

    one of ashwini, bharani, krittika, rohini, mrigashira, ardra, punarvasu, pushya, ashlesha, magha, purva_phalguni, uttara_phalguni, hasta, chitra, swati, vishakha, anuradha, jyeshtha, mula, purva_ashadha, uttara_ashadha, shravana, dhanishta, shatabhisha, purva_bhadrapada, uttara_bhadrapada, revati

  • days array of object required
    • date string (date) required

      e.g. "1990-08-13"

    • weekday string required
    • moon_nakshatra NakshatraId required

      The 27 nakshatras, 1 Ashwini … 27 Revati. Spellings are fixed: mula (not moola), shatabhisha (not satabhisha), purva_ashadha, uttara_bhadrapada.

      one of ashwini, bharani, krittika, rohini, mrigashira, ardra, punarvasu, pushya, ashlesha, magha, purva_phalguni, uttara_phalguni, hasta, chitra, swati, vishakha, anuradha, jyeshtha, mula, purva_ashadha, uttara_ashadha, shravana, dhanishta, shatabhisha, purva_bhadrapada, uttara_bhadrapada, revati

    • tara object required
      Fields
      • id string required
      • number integer required

        ≥ 1 · ≤ 9

      • label string required
    • type string required

      one of favourable, neutral, unfavourable

    • score number required
    • description string required
    • description_id string required

      A stable id for description: the same sentence always has the same id, so a client can show its own reviewed copy in its place (D3, 2026-10-29).

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/timing/favourable-days' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"days":7}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/timing/favourable-days", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "birth": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "days": 7
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "birth": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "days": 7,
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/timing/favourable-days",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/timing/favourable-days');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"days":7}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 3,542 characters
{
  "data": {
    "as_of": "2026-11-03T02:15:51.124Z",
    "birth_nakshatra": "bharani",
    "days": [
      {
        "date": "2026-11-03",
        "weekday": "tuesday",
        "moon_nakshatra": "magha",
        "tara": {
          "id": "param_mitra",
          "number": 9,
          "label": "Best Friend"
        },
        "type": "favourable",
        "score": 3,
        "description": "Param Mitra: Most auspicious - ideal for any major activity",
        "description_id": "param_mitra_most_auspicious_ideal_for_any_major_activity"
      },
      {
        "date": "2026-11-04",
        "weekday": "wednesday",
        "moon_nakshatra": "purva_phalguni",
        "tara": {
          "id": "janma",
          "number": 1,
          "label": "Birth Star"
        },
        "type": "neutral",
        "score": 0,
        "description": "Proceed with awareness - birth star energy",
        "description_id": "proceed_with_awareness_birth_star_energy"
      },
      {
        "date": "2026-11-05",
        "weekday": "thursday",
        "moon_nakshatra": "uttara_phalguni",
        "tara": {
          "id": "sampat",
          "number": 2,
          "label": "Wealth"
        },
        "type": "favourable",
        "score": 2.5,
        "description": "Sampat: Excellent for wealth, business & investments",
        "description_id": "sampat_excellent_for_wealth_business_investments"
      },
      {
        "date": "2026-11-06",
        "weekday": "friday",
        "moon_nakshatra": "hasta",
        "tara": {
          "id": "vipat",
          "number": 3,
          "label": "Danger"
        },
        "type": "unfavourable",
        "score": -2,
        "description": "Vipat: Avoid important decisions and risky ventures",
        "description_id": "vipat_avoid_important_decisions_and_risky_ventures"
      },
      {
        "date": "2026-11-07",
        "weekday": "saturday",
        "moon_nakshatra": "chitra",
        "tara": {
          "id": "kshema",
          "number": 4,
          "label": "Happiness"
        },
        "type": "favourable",
        "score": 1.5,
        "description": "Kshema: Good for family matters, comfort & safety",
        "description_id": "kshema_good_for_family_matters_comfort_safety"
      },
      {
        "date": "2026-11-08",
        "weekday": "sunday",
        "moon_nakshatra": "swati",
        "tara": {
          "id": "pratyari",
          "number": 5,
          "label": "Obstacles"
        },
        "type": "unfavourable",
        "score": -1.5,
        "description": "Pratyari: Expect delays - postpone major launches",
        "description_id": "pratyari_expect_delays_postpone_major_launches"
      },
      {
        "date": "2026-11-09",
        "weekday": "monday",
        "moon_nakshatra": "vishakha",
        "tara": {
          "id": "sadhaka",
          "number": 6,
          "label": "Achievement"
        },
        "type": "favourable",
        "score": 2,
        "description": "Sadhaka: Launch ventures, sign contracts, achieve goals",
        "description_id": "sadhaka_launch_ventures_sign_contracts_achieve_goals"
      }
    ]
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.10.10",
    "mode": "live",
    "credits_charged": 1,
    "ayanamsa": "lahiri",
    "house_system": "whole_sign",
    "node": "true",
    "timezone_used": {
      "name": "Asia/Kolkata",
      "utc_offset": "+05:30",
      "source": "auto"
    },
    "as_of": "2026-11-03T02:15:51.124Z"
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

A 12-month outlook: the slow planets' transit houses from the lagna on the 15th of each month, scored

POST/v1/timing/year-outlook

2 credits · Secret key (test or live) · getYearOutlook · Page for this operation

Jupiter, Saturn, Rahu, Ketu and Mars on the 15th of each month (06:00 UTC), in houses from the natal lagna, scored by the classical good-house tables (Jupiter 1, 2, 4, 5, 7, 9, 10, 11; Saturn 3, 6, 11; Rahu 3, 6, 10, 11; Ketu 3, 6, 12; Mars 1, 3, 6, 10, 11), with bonuses for Jupiter exalted in a kendra, Mars in its own sign in a kendra (ruchaka) and Saturn in its own sign in an upachaya (sasha). class: favourable from 1.5, challenging from −1.5. best_window and worst_window: the first longest run of consecutive favourable or challenging months. Structure only, no sentences. Needs a birth time.

Request body

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • year integer required

    ≥ 1900 · ≤ 2100

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      The Rahu/Ketu the chart uses: the true (osculating) node, as Swiss Ephemeris and Drik Panchang define it, or the mean node. meta.node names the one used. POST /v1/planets/positions always returns both.

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    • tone string

      descriptive: the prose fields (tithi.note, tara descriptions, the timing summary and insights, natal-transit descriptions, transit-event notes) carry reviewed descriptive sentences, attributed to the tradition and with no instructions, in options.lang. Ids, scores and every other value are unchanged. Applies to getPanchang, getFavourableDays, getPersonalTiming, getDashaTransitConfluence, getNatalTransits and listPlanetaryEvents (and those inside a bundle); elsewhere it changes nothing.

      one of default, descriptive · default "default"

    • dasha_year number

      Days in a Vimshottari year: 365.25 (Julian, the default), 365.2422 (tropical) or 360 (savana). Applies to /v1/dasha/vimshottari and /v1/dasha/vimshottari/current; data.basis.year_days names the one used.

      one of 365.25, 365.2422, 360 · default 365.25

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • year integer required
  • months array of object required
    • month integer required

      ≥ 1 · ≤ 12

    • score number required
    • class string required

      one of favourable, neutral, challenging

    • favourable array of OutlookTransit required
      Fields
      • planet string required

        one of jupiter, saturn, rahu, ketu, mars

      • house integer required

        ≥ 1 · ≤ 12

      • kind string

        one of exalted, own_sign

      • yoga string

        one of hamsa, ruchaka, sasha

    • challenging array of OutlookTransit required
      Fields
      • planet string required

        one of jupiter, saturn, rahu, ketu, mars

      • house integer required

        ≥ 1 · ≤ 12

      • kind string

        one of exalted, own_sign

      • yoga string

        one of hamsa, ruchaka, sasha

    • flags array of object required
      Fields
      • planet string required
      • kind string required

        one of exalted, own_sign

      • yoga string

        one of hamsa, ruchaka, sasha

  • best_window object or null required

    One of:

    1. object
      Fields
      • from string required

        pattern ^\d{4}-\d{2}$

      • to string required

        pattern ^\d{4}-\d{2}$

      • months integer required

        ≥ 1 · ≤ 12

    2. null
  • worst_window object or null required

    One of:

    1. object
      Fields
      • from string required

        pattern ^\d{4}-\d{2}$

      • to string required

        pattern ^\d{4}-\d{2}$

      • months integer required

        ≥ 1 · ≤ 12

    2. null

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/timing/year-outlook' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"year":2026}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/timing/year-outlook", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "birth": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "year": 2026
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "birth": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "year": 2026,
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/timing/year-outlook",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/timing/year-outlook');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"year":2026}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 7,506 characters
{
  "data": {
    "year": 2026,
    "months": [
      {
        "month": 1,
        "score": -0.6,
        "class": "neutral",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 5
          }
        ],
        "flags": []
      },
      {
        "month": 2,
        "score": 1.7,
        "class": "favourable",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 11
          },
          {
            "planet": "mars",
            "house": 6
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          }
        ],
        "flags": []
      },
      {
        "month": 3,
        "score": -0.4,
        "class": "neutral",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 7
          }
        ],
        "flags": []
      },
      {
        "month": 4,
        "score": -0.4,
        "class": "neutral",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 8
          }
        ],
        "flags": []
      },
      {
        "month": 5,
        "score": -0.4,
        "class": "neutral",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 9
          }
        ],
        "flags": []
      },
      {
        "month": 6,
        "score": -4.7,
        "class": "challenging",
        "favourable": [],
        "challenging": [
          {
            "planet": "jupiter",
            "house": 12
          },
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 9
          }
        ],
        "flags": []
      },
      {
        "month": 7,
        "score": -2.4,
        "class": "challenging",
        "favourable": [
          {
            "planet": "mars",
            "house": 10
          }
        ],
        "challenging": [
          {
            "planet": "jupiter",
            "house": 12
          },
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          }
        ],
        "flags": []
      },
      {
        "month": 8,
        "score": -2.6,
        "class": "challenging",
        "favourable": [
          {
            "planet": "mars",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "jupiter",
            "house": 12
          },
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          }
        ],
        "flags": []
      },
      {
        "month": 9,
        "score": -2.6,
        "class": "challenging",
        "favourable": [
          {
            "planet": "mars",
            "house": 11
          }
        ],
        "challenging": [
          {
            "planet": "jupiter",
            "house": 12
          },
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          }
        ],
        "flags": []
      },
      {
        "month": 10,
        "score": -4.9,
        "class": "challenging",
        "favourable": [],
        "challenging": [
          {
            "planet": "jupiter",
            "house": 12
          },
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 12
          }
        ],
        "flags": []
      },
      {
        "month": 11,
        "score": 1.7,
        "class": "favourable",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 1
          },
          {
            "planet": "mars",
            "house": 1
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          },
          {
            "planet": "rahu",
            "house": 7
          },
          {
            "planet": "ketu",
            "house": 1
          }
        ],
        "flags": []
      },
      {
        "month": 12,
        "score": 4.8,
        "class": "favourable",
        "favourable": [
          {
            "planet": "jupiter",
            "house": 1
          },
          {
            "planet": "rahu",
            "house": 6
          },
          {
            "planet": "ketu",
            "house": 12
          },
          {
            "planet": "mars",
            "house": 1
          }
        ],
        "challenging": [
          {
            "planet": "saturn",
            "house": 8
          }
        ],
        "flags": []
      }
    ],
    "best_window": {
      "from": "2026-11",
      "to": "2026-12",
      "months": 2
    },
    "worst_window": {
      "from": "2026-06",
      "to": "2026-10",
      "months": 5
    }
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.10.10",
    "mode": "live",
    "credits_charged": 2,
    "ayanamsa": "lahiri",
    "house_system": "whole_sign",
    "node": "true",
    "timezone_used": {
      "name": "Asia/Kolkata",
      "utc_offset": "+05:30",
      "source": "auto"
    }
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

The eclipses of the months ahead over the chart: sign, natal house, reading and shadow period

POST/v1/timing/eclipses

2 credits · Secret key (test or live) · getEclipseImpact · Page for this operation

Every solar and lunar eclipse from from (default today) for months (1–24, default 12), computed with astronomy-engine, not read from a table: date is the instant of greatest eclipse (UTC), type its kind (total, annular, partial, hybrid, penumbral), sign the sidereal sign of the eclipsed body, natal_house that sign counted from the lagna, shadow_end six months on. Needs a birth time.

Request body

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • from string (date)

    e.g. "1990-08-13"

  • months integer

    ≥ 1 · ≤ 24 · default 12

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      The Rahu/Ketu the chart uses: the true (osculating) node, as Swiss Ephemeris and Drik Panchang define it, or the mean node. meta.node names the one used. POST /v1/planets/positions always returns both.

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    • tone string

      descriptive: the prose fields (tithi.note, tara descriptions, the timing summary and insights, natal-transit descriptions, transit-event notes) carry reviewed descriptive sentences, attributed to the tradition and with no instructions, in options.lang. Ids, scores and every other value are unchanged. Applies to getPanchang, getFavourableDays, getPersonalTiming, getDashaTransitConfluence, getNatalTransits and listPlanetaryEvents (and those inside a bundle); elsewhere it changes nothing.

      one of default, descriptive · default "default"

    • dasha_year number

      Days in a Vimshottari year: 365.25 (Julian, the default), 365.2422 (tropical) or 360 (savana). Applies to /v1/dasha/vimshottari and /v1/dasha/vimshottari/current; data.basis.year_days names the one used.

      one of 365.25, 365.2422, 360 · default 365.25

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • from string (date) required

    e.g. "1990-08-13"

  • to string (date) required

    e.g. "1990-08-13"

  • eclipses array of object required
    • date string (date-time) required
    • kind string required

      one of solar, lunar

    • type string required

      one of total, annular, partial, hybrid, penumbral

    • sign string required
    • natal_house integer required

      ≥ 1 · ≤ 12

    • intensity string required

      one of high, significant, moderate

    • shadow_end string (date) required

      e.g. "1990-08-13"

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/timing/eclipses' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"from":"2026-10-01","months":12}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/timing/eclipses", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "birth": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "from": "2026-10-01",
    "months": 12
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "birth": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "from": "2026-10-01",
    "months": 12,
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/timing/eclipses",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/timing/eclipses');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"from":"2026-10-01","months":12}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 1,638 characters
{
  "data": {
    "from": "2026-10-01",
    "to": "2027-10-01",
    "eclipses": [
      {
        "date": "2027-02-06T15:59:32.957Z",
        "kind": "solar",
        "type": "annular",
        "sign": "capricorn",
        "natal_house": 6,
        "intensity": "moderate",
        "shadow_end": "2027-08-06"
      },
      {
        "date": "2027-02-20T23:12:44.142Z",
        "kind": "lunar",
        "type": "penumbral",
        "sign": "leo",
        "natal_house": 1,
        "intensity": "significant",
        "shadow_end": "2027-08-20"
      },
      {
        "date": "2027-07-18T16:02:54.880Z",
        "kind": "lunar",
        "type": "penumbral",
        "sign": "capricorn",
        "natal_house": 6,
        "intensity": "moderate",
        "shadow_end": "2028-01-18"
      },
      {
        "date": "2027-08-02T10:06:34.636Z",
        "kind": "solar",
        "type": "total",
        "sign": "cancer",
        "natal_house": 12,
        "intensity": "moderate",
        "shadow_end": "2028-02-02"
      },
      {
        "date": "2027-08-17T07:13:44.931Z",
        "kind": "lunar",
        "type": "penumbral",
        "sign": "capricorn",
        "natal_house": 6,
        "intensity": "moderate",
        "shadow_end": "2028-02-17"
      }
    ]
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.10.10",
    "mode": "live",
    "credits_charged": 2,
    "ayanamsa": "lahiri",
    "house_system": "whole_sign",
    "node": "true",
    "timezone_used": {
      "name": "Asia/Kolkata",
      "utc_offset": "+05:30",
      "source": "auto"
    }
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one