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
birthBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
atstring (date-time)as_ofstring (date)A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.
daysinteger≥ 1 · ≤ 30 · default
10optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringThe 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"langstringone of
en,hi· default"en"viewstringcompact drops labels and prose — for LLM callers.
one of
full,compact· default"full"tonestringdescriptive: 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_yearnumberDays 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· default365.25
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
as_ofstring (date-time) requiredtodayobject requireddatestring (date) requirede.g.
"1990-08-13"scorenumber required≥ 0 · ≤ 100
bandstring requiredone of
green,amber,redlabelstring requiredsummarystring requiredsummary_idstring requiredA 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).
insightsarray of string requiredinsight_idsarray of string,null requiredsunobject requiredFields
transit_signstring requirednatal_signstring requiredstrengthnumber required≥ 0 · ≤ 100
wordstring required
moonobject requiredFields
transit_signstring requirednatal_signstring requiredstrengthnumber required≥ 0 · ≤ 100
wordstring required
dashaobject requiredFields
mahastring requiredantarstring requiredmaha_endstring (date-time) or null requiredOne of:
- string (date-time)
- null
daysarray of object requireddatestring (date) requirede.g.
"1990-08-13"scorenumber required≥ 0 · ≤ 100
bandstring requiredone of
green,amber,red
red_zoneobject or null requiredOne of:
- object
Fields
fromstring (date) requirede.g.
"1990-08-13"tostring (date) requirede.g.
"1990-08-13"reasonstring required
- null
- object
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
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
birthBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
atstring (date-time)as_ofstring (date)A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.
optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringThe 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"langstringone of
en,hi· default"en"viewstringcompact drops labels and prose — for LLM callers.
one of
full,compact· default"full"tonestringdescriptive: 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_yearnumberDays 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· default365.25
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
as_ofstring (date-time) requiredmahadashaobject requiredlordstring requiredtransit_signstring requiredtransit_houseinteger or null requiredOne of:
- integer
- null
scorenumber required≥ -1 · ≤ 1
good_houseboolean requiredendstring (date-time) or null requiredOne of:
- string (date-time)
- null
antardashaobject or null requiredOne of:
- object
Fields
lordstring requiredtransit_signstring requiredscorenumber required≥ -1 · ≤ 1
endstring (date-time) or null requiredOne of:
- string (date-time)
- null
- null
- object
confluenceobject requiredscorenumber required≥ -1 · ≤ 1
labelstring required
insightsarray of string requiredinsight_idsarray 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
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
birthBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
atstring (date-time)as_ofstring (date)A day instead of at: local noon at the birth place on that date. Send at or as_of, not both.
daysinteger≥ 1 · ≤ 30 · default
7optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringThe 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"langstringone of
en,hi· default"en"viewstringcompact drops labels and prose — for LLM callers.
one of
full,compact· default"full"tonestringdescriptive: 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_yearnumberDays 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· default365.25
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
as_ofstring (date-time) requiredbirth_nakshatraNakshatraId requiredThe 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,revatidaysarray of object requireddatestring (date) requirede.g.
"1990-08-13"weekdaystring requiredmoon_nakshatraNakshatraId requiredThe 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,revatitaraobject requiredFields
idstring requirednumberinteger required≥ 1 · ≤ 9
labelstring required
typestring requiredone of
favourable,neutral,unfavourablescorenumber requireddescriptionstring requireddescription_idstring requiredA 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
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
birthBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
yearinteger required≥ 1900 · ≤ 2100
optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringThe 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"langstringone of
en,hi· default"en"viewstringcompact drops labels and prose — for LLM callers.
one of
full,compact· default"full"tonestringdescriptive: 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_yearnumberDays 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· default365.25
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
yearinteger requiredmonthsarray of object requiredmonthinteger required≥ 1 · ≤ 12
scorenumber requiredclassstring requiredone of
favourable,neutral,challengingfavourablearray of OutlookTransit requiredFields
planetstring requiredone of
jupiter,saturn,rahu,ketu,marshouseinteger required≥ 1 · ≤ 12
kindstringone of
exalted,own_signyogastringone of
hamsa,ruchaka,sasha
challengingarray of OutlookTransit requiredFields
planetstring requiredone of
jupiter,saturn,rahu,ketu,marshouseinteger required≥ 1 · ≤ 12
kindstringone of
exalted,own_signyogastringone of
hamsa,ruchaka,sasha
flagsarray of object requiredFields
planetstring requiredkindstring requiredone of
exalted,own_signyogastringone of
hamsa,ruchaka,sasha
best_windowobject or null requiredOne of:
- object
Fields
fromstring requiredpattern
^\d{4}-\d{2}$tostring requiredpattern
^\d{4}-\d{2}$monthsinteger required≥ 1 · ≤ 12
- null
- object
worst_windowobject or null requiredOne of:
- object
Fields
fromstring requiredpattern
^\d{4}-\d{2}$tostring requiredpattern
^\d{4}-\d{2}$monthsinteger required≥ 1 · ≤ 12
- null
- object
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
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
birthBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
fromstring (date)e.g.
"1990-08-13"monthsinteger≥ 1 · ≤ 24 · default
12optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringThe 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"langstringone of
en,hi· default"en"viewstringcompact drops labels and prose — for LLM callers.
one of
full,compact· default"full"tonestringdescriptive: 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_yearnumberDays 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· default365.25
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
fromstring (date) requirede.g.
"1990-08-13"tostring (date) requirede.g.
"1990-08-13"eclipsesarray of object requireddatestring (date-time) requiredkindstring requiredone of
solar,lunartypestring requiredone of
total,annular,partial,hybrid,penumbralsignstring requirednatal_houseinteger required≥ 1 · ≤ 12
intensitystring requiredone of
high,significant,moderateshadow_endstring (date) requirede.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": []
}