Transits
Sign ingresses, retrograde/direct stations and combustion between two dates, transits over a birth chart, and planetary war now.
Planetary events: sign changes, retrograde stations and eclipses, with IST times
GET/v1/transits/events
1 credit · Secret or publishable key · listPlanetaryEvents · Page for this operation
Every sign change of the Sun, Mercury, Venus, Mars, Jupiter, Saturn, Rahu and Ketu, every retrograde and direct station (the nodes' too with include_nodes), and every solar and lunar eclipse, from from to to: the date and time in IST (to the minute, found by bisection between IST midnights) and at, the exact instant; the planet, the sign(s), and the engine's one-line impact, note and tag. note is an English sentence; note_id names its template and tag is one of major, moderate, eclipse. Sorted by instant.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
from required | query | string | A date (from 00:00 UTC) or an ISO 8601 instant. pattern ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2}))?$ · e.g. "2026-10-01", "2026-10-01T06:30:00Z" |
to required | query | string | A date or an instant; eclipses are listed up to this instant, day events through its date. At most 1,100 days after from. pattern ^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2}))?$ · e.g. "2026-12-31" |
include_nodes | query | boolean | Also list the stations of the true node (Rahu; Ketu's are the same moments). They are short and frequent: the true node turns direct for a few days most months. Sampled daily, so a direct run shorter than a day can be missed. default false |
lang | query | string | one of en, hi · default "en" |
tone | query | string | descriptive: reviewed descriptive sentences in the prose fields, in lang; ids and values unchanged (as options.tone). one of default, descriptive · default "default" |
Response
JSON { data, meta, warnings }, where data is:
eventsarray of object requireddatestring (date) requirede.g.
"1990-08-13"time_iststring or null requiredOne of:
- string
- null
atstring (date-time) or null requiredOne of:
- string (date-time)
- null
planetstring requiredtypestring requiredone of
sign_change,retrograde_start,retrograde_end,solar_eclipse,lunar_eclipsefrom_signstring or null requiredOne of:
- string
- null
to_signstring or null requiredOne of:
- string
- null
signstring or null requiredOne of:
- string
- null
eclipse_typestring or null requiredOne of:
- string
- null
impactstring requirednotestring requirednote_idstring requiredA stable id for note's template: sign_change_<planet>, retrograde_start, retrograde_end, solar_eclipse_<total|annular|hybrid|partial>, lunar_eclipse_<total|partial|penumbral>. Show your own copy keyed on it.
tagstring requiredone of
major,moderate,eclipse
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl 'https://api.astrologics.in/v1/transits/events?from=2026-10-01&to=2026-12-31' \
-H 'Authorization: Bearer al_test_YOUR_KEY'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits/events?from=2026-10-01&to=2026-12-31", {
headers: { Authorization: "Bearer al_test_YOUR_KEY" },
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits/events?from=2026-10-01&to=2026-12-31",
method="GET",
headers={"Authorization": "Bearer al_test_YOUR_KEY"},
)
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/transits/events?from=2026-10-01&to=2026-12-31');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY'],
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 8,366 characters
{
"data": {
"events": [
{
"date": "2026-10-03",
"time_ist": "12:40",
"at": "2026-10-03T07:09:54.000Z",
"planet": "venus",
"type": "retrograde_start",
"from_sign": null,
"to_sign": null,
"sign": "libra",
"eclipse_type": null,
"impact": "Caution",
"note": "Venus turns retrograde in Libra - review plans; delays and second thoughts are common",
"note_id": "retrograde_start",
"tag": "moderate"
},
{
"date": "2026-10-17",
"time_ist": "19:52",
"at": "2026-10-17T14:22:07.000Z",
"planet": "sun",
"type": "sign_change",
"from_sign": "virgo",
"to_sign": "libra",
"sign": null,
"eclipse_type": null,
"impact": "Medium",
"note": "Sun enters Libra - Leadership, authority and career matters come into focus",
"note_id": "sign_change_sun",
"tag": "moderate"
},
{
"date": "2026-10-24",
"time_ist": "12:44",
"at": "2026-10-24T07:14:20.000Z",
"planet": "mercury",
"type": "retrograde_start",
"from_sign": null,
"to_sign": null,
"sign": "libra",
"eclipse_type": null,
"impact": "Caution",
"note": "Mercury turns retrograde in Libra - review plans; delays and second thoughts are common",
"note_id": "retrograde_start",
"tag": "moderate"
},
{
"date": "2026-10-31",
"time_ist": "12:09",
"at": "2026-10-31T06:38:48.000Z",
"planet": "jupiter",
"type": "sign_change",
"from_sign": "cancer",
"to_sign": "leo",
"sign": null,
"eclipse_type": null,
"impact": "Major",
"note": "Jupiter enters Leo - A season of growth, wisdom, learning and opportunity",
"note_id": "sign_change_jupiter",
"tag": "major"
},
{
"date": "2026-11-06",
"time_ist": "00:46",
"at": "2026-11-05T19:15:54.000Z",
"planet": "venus",
"type": "sign_change",
"from_sign": "libra",
"to_sign": "virgo",
"sign": null,
"eclipse_type": null,
"impact": "Medium",
"note": "Venus enters Virgo - Love, relationships, comfort and creativity get attention",
"note_id": "sign_change_venus",
"tag": "moderate"
},
{
"date": "2026-11-12",
"time_ist": "20:19",
"at": "2026-11-12T14:48:51.000Z",
"planet": "mars",
"type": "sign_change",
"from_sign": "cancer",
"to_sign": "leo",
"sign": null,
"eclipse_type": null,
"impact": "Strong",
"note": "Mars enters Leo - Energy, courage and drive run high - channel it into action",
"note_id": "sign_change_mars",
"tag": "moderate"
},
{
"date": "2026-11-13",
"time_ist": "21:23",
"at": "2026-11-13T15:52:57.000Z",
"planet": "mercury",
"type": "retrograde_end",
"from_sign": null,
"to_sign": null,
"sign": "libra",
"eclipse_type": null,
"impact": "Positive",
"note": "Mercury turns direct in Libra - clarity returns, forward momentum resumes",
"note_id": "retrograde_end",
"tag": "moderate"
},
{
"date": "2026-11-14",
"time_ist": "05:51",
"at": "2026-11-14T00:21:00.000Z",
"planet": "venus",
"type": "retrograde_end",
"from_sign": null,
"to_sign": null,
"sign": "virgo",
"eclipse_type": null,
"impact": "Positive",
"note": "Venus turns direct in Virgo - clarity returns, forward momentum resumes",
"note_id": "retrograde_end",
"tag": "moderate"
},
{
"date": "2026-11-16",
"time_ist": "19:43",
"at": "2026-11-16T14:13:22.000Z",
"planet": "sun",
"type": "sign_change",
"from_sign": "libra",
"to_sign": "scorpio",
"sign": null,
"eclipse_type": null,
"impact": "Medium",
"note": "Sun enters Scorpio - Leadership, authority and career matters come into focus",
"note_id": "sign_change_sun",
"tag": "moderate"
},
{
"date": "2026-11-22",
"time_ist": "17:29",
"at": "2026-11-22T11:59:17.000Z",
"planet": "venus",
"type": "sign_change",
"from_sign": "virgo",
"to_sign": "libra",
"sign": null,
"eclipse_type": null,
"impact": "Medium",
"note": "Venus enters Libra - Love, relationships, comfort and creativity get attention",
"note_id": "sign_change_venus",
"tag": "moderate"
},
{
"date": "2026-11-25",
"time_ist": "17:14",
"at": "2026-11-25T11:43:50.000Z",
"planet": "rahu",
"type": "sign_change",
"from_sign": "aquarius",
"to_sign": "capricorn",
"sign": null,
"eclipse_type": null,
"impact": "Major",
"note": "Rahu enters Capricorn - Sudden change, ambition and unconventional paths come up",
"note_id": "sign_change_rahu",
"tag": "major"
},
{
"date": "2026-11-25",
"time_ist": "17:14",
"at": "2026-11-25T11:43:50.000Z",
"planet": "ketu",
"type": "sign_change",
"from_sign": "leo",
"to_sign": "cancer",
"sign": null,
"eclipse_type": null,
"impact": "Major",
"note": "Ketu enters Cancer - A turn inward - detachment, research and spirituality",
"note_id": "sign_change_ketu",
"tag": "major"
},
{
"date": "2026-12-02",
"time_ist": "17:27",
"at": "2026-12-02T11:57:20.000Z",
"planet": "mercury",
"type": "sign_change",
"from_sign": "libra",
"to_sign": "scorpio",
"sign": null,
"eclipse_type": null,
"impact": "Fast",
"note": "Mercury enters Scorpio - Communication, learning, trade and short travel are highlighted",
"note_id": "sign_change_mercury",
"tag": "moderate"
},
{
"date": "2026-12-11",
"time_ist": "04:53",
"at": "2026-12-10T23:23:24.000Z",
"planet": "saturn",
"type": "retrograde_end",
"from_sign": null,
"to_sign": null,
"sign": "pisces",
"eclipse_type": null,
"impact": "Positive",
"note": "Saturn turns direct in Pisces - clarity returns, forward momentum resumes",
"note_id": "retrograde_end",
"tag": "major"
},
{
"date": "2026-12-13",
"time_ist": "06:29",
"at": "2026-12-13T00:58:53.000Z",
"planet": "jupiter",
"type": "retrograde_start",
"from_sign": null,
"to_sign": null,
"sign": "leo",
"eclipse_type": null,
"impact": "Caution",
"note": "Jupiter turns retrograde in Leo - review plans; delays and second thoughts are common",
"note_id": "retrograde_start",
"tag": "major"
},
{
"date": "2026-12-16",
"time_ist": "10:25",
"at": "2026-12-16T04:55:01.000Z",
"planet": "sun",
"type": "sign_change",
"from_sign": "scorpio",
"to_sign": "sagittarius",
"sign": null,
"eclipse_type": null,
"impact": "Medium",
"note": "Sun enters Sagittarius - Leadership, authority and career matters come into focus",
"note_id": "sign_change_sun",
"tag": "moderate"
},
{
"date": "2026-12-22",
"time_ist": "07:40",
"at": "2026-12-22T02:10:25.000Z",
"planet": "mercury",
"type": "sign_change",
"from_sign": "scorpio",
"to_sign": "sagittarius",
"sign": null,
"eclipse_type": null,
"impact": "Fast",
"note": "Mercury enters Sagittarius - Communication, learning, trade and short travel are highlighted",
"note_id": "sign_change_mercury",
"tag": "moderate"
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 1
},
"warnings": []
}Try it
Ingresses, stations and combustion between dates
GET/v1/transits
1 credit · Secret or publishable key · listTransits · Page for this operation
The sign changes of Jupiter, Saturn, Rahu, Ketu and Mars: date is the IST date of the change and at its exact moment (UTC). At most 366 days.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
from required | query | string (date) | e.g. "1990-08-13" |
to required | query | string (date) | e.g. "1990-08-13" |
limit | query | integer | ≥ 1 · ≤ 100 · default 20 |
cursor | query | string |
Response
JSON { data, meta, warnings }, where data is:
eventsarray of object requiredplanetstring requiredtypestring requireddatestring (date) requirede.g.
"1990-08-13"atstring (date-time)The exact moment of the change (UTC), found by bisection.
from_signstringto_signstring
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl 'https://api.astrologics.in/v1/transits?from=2026-09-01&to=2027-03-31' \
-H 'Authorization: Bearer al_test_YOUR_KEY'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits?from=2026-09-01&to=2027-03-31", {
headers: { Authorization: "Bearer al_test_YOUR_KEY" },
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits?from=2026-09-01&to=2027-03-31",
method="GET",
headers={"Authorization": "Bearer al_test_YOUR_KEY"},
)
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/transits?from=2026-09-01&to=2027-03-31');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY'],
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 1,617 characters
{
"data": {
"events": [
{
"planet": "mars",
"type": "ingress",
"date": "2026-09-18",
"at": "2026-09-18T11:05:46.000Z",
"from_sign": "gemini",
"to_sign": "cancer"
},
{
"planet": "jupiter",
"type": "ingress",
"date": "2026-10-31",
"at": "2026-10-31T06:38:48.000Z",
"from_sign": "cancer",
"to_sign": "leo"
},
{
"planet": "mars",
"type": "ingress",
"date": "2026-11-12",
"at": "2026-11-12T14:48:51.000Z",
"from_sign": "cancer",
"to_sign": "leo"
},
{
"planet": "rahu",
"type": "ingress",
"date": "2026-11-25",
"at": "2026-11-25T11:43:50.000Z",
"from_sign": "aquarius",
"to_sign": "capricorn"
},
{
"planet": "ketu",
"type": "ingress",
"date": "2026-11-25",
"at": "2026-11-25T11:43:50.000Z",
"from_sign": "leo",
"to_sign": "cancer"
},
{
"planet": "jupiter",
"type": "ingress",
"date": "2027-01-25",
"at": "2027-01-24T19:58:26.000Z",
"from_sign": "leo",
"to_sign": "cancer"
},
{
"planet": "mars",
"type": "ingress",
"date": "2027-03-10",
"at": "2027-03-09T18:44:00.000Z",
"from_sign": "leo",
"to_sign": "cancer"
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 1
},
"warnings": []
}Try it
Transits over the natal Moon and houses
POST/v1/transits/natal
2 credits · Secret key (test or live) · getNatalTransits · Page for this operation
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)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:
atstring (date-time) requiredtransitsarray of object requiredplanetstring requiredsignstring requiredhouse_from_mooninteger requiredThe sign it transits, counted from the natal Moon's sign (gochar); impact is judged from it.
≥ 1 · ≤ 12
natal_houseintegerThe same sign counted from the natal lagna (whole sign). Omitted without a birth time.
≥ 1 · ≤ 12
retrogradeboolean requiredimpactstring requiredone of
favourable,challenging,neutraldescriptionstring requireddescription_idstring requiredA stable id for description: the same sentence always has the same id (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/transits/natal' \
-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"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits/natal", {
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"
}),
});
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",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits/natal",
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/transits/natal');
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"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 3,338 characters
{
"data": {
"at": "2026-10-02T06:00:00.000Z",
"transits": [
{
"planet": "jupiter",
"sign": "cancer",
"house_from_moon": 4,
"natal_house": 12,
"retrograde": false,
"impact": "challenging",
"description": "Jupiter in 4th - over-expansion or misplaced optimism; review commitments",
"description_id": "jupiter_in_4th_over_expansion_or_misplaced_optimism_review_commitments"
},
{
"planet": "saturn",
"sign": "pisces",
"house_from_moon": 12,
"natal_house": 8,
"retrograde": true,
"impact": "challenging",
"description": "Saturn in 12th - delays, responsibilities and discipline demanded",
"description_id": "saturn_in_12th_delays_responsibilities_and_discipline_demanded"
},
{
"planet": "rahu_north_node",
"sign": "aquarius",
"house_from_moon": 11,
"natal_house": 7,
"retrograde": true,
"impact": "favourable",
"description": "Rahu in 11th - ambition and unconventional growth paths open",
"description_id": "rahu_in_11th_ambition_and_unconventional_growth_paths_open"
},
{
"planet": "ketu_south_node",
"sign": "leo",
"house_from_moon": 5,
"natal_house": 1,
"retrograde": true,
"impact": "challenging",
"description": "Ketu in 5th - sudden losses and disillusionment possible",
"description_id": "ketu_in_5th_sudden_losses_and_disillusionment_possible"
},
{
"planet": "mars",
"sign": "cancer",
"house_from_moon": 4,
"natal_house": 12,
"retrograde": false,
"impact": "challenging",
"description": "Mars in 4th - conflicts, accidents and impulsiveness; slow down",
"description_id": "mars_in_4th_conflicts_accidents_and_impulsiveness_slow_down"
},
{
"planet": "sun",
"sign": "virgo",
"house_from_moon": 6,
"natal_house": 2,
"retrograde": false,
"impact": "favourable",
"description": "Sun in 6th - authority, recognition and career focus",
"description_id": "sun_in_6th_authority_recognition_and_career_focus"
},
{
"planet": "venus",
"sign": "libra",
"house_from_moon": 7,
"natal_house": 3,
"retrograde": false,
"impact": "challenging",
"description": "Venus in 7th - relationship friction and financial imprudence",
"description_id": "venus_in_7th_relationship_friction_and_financial_imprudence"
},
{
"planet": "moon",
"sign": "taurus",
"house_from_moon": 2,
"natal_house": 10,
"retrograde": false,
"impact": "neutral",
"description": "Moon in 2nd - routine emotional fluctuations",
"description_id": "moon_in_2nd_routine_emotional_fluctuations"
}
]
},
"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
Graha yuddha (planetary war) now: Mercury, Venus, Mars, Jupiter and Saturn within 1.5°
GET/v1/transits/graha-yuddha
1 credit · Secret or publishable key · getGrahaYuddha · Page for this operation
Computed for the moment of the call (as_of). Within 1° is an active war, 1–1.5° forming; the brighter planet wins (Jupiter, Venus, Mercury, Saturn, Mars in that order). until: when the pair is next more than 1.5° apart, to the minute, searched 60 days ahead (null past that).
Response
JSON { data, meta, warnings }, where data is:
as_ofstring (date-time) requiredactiveboolean requiredwarsarray of object requiredplanetsarray of string requiredexactly 2 items
orb_degnumber required≥ 0 · ≤ 1.5
statusstring requiredone of
active,formingsignstring requiredwinnerstring requiredloserstring requireduntilstring (date-time) or null requiredOne of:
- string (date-time)
- null
summarystring requiredOne sentence from the engine: the pair, the sign, who wins and who is weakened.
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl 'https://api.astrologics.in/v1/transits/graha-yuddha' \
-H 'Authorization: Bearer al_test_YOUR_KEY'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits/graha-yuddha", {
headers: { Authorization: "Bearer al_test_YOUR_KEY" },
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits/graha-yuddha",
method="GET",
headers={"Authorization": "Bearer al_test_YOUR_KEY"},
)
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/transits/graha-yuddha');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY'],
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 311 characters
{
"data": {
"as_of": "2026-11-03T02:15:50.774Z",
"active": false,
"wars": []
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 1,
"as_of": "2026-11-03T02:15:50.774Z"
},
"warnings": []
}Try it
Exact conjunctions, sextiles, squares, trines and oppositions over a range
POST/v1/transits/aspects
2 credits · Secret key (test or live) · getAspectEvents · Page for this operation
Angles of ecliptic longitude between the seven planets, in UTC to the minute. These are angular aspects, not graha drishti: use /v1/kundli/aspects for drishti. At most 366 days, or 31 with the Moon, which covers lunar aspects.
Request body
fromstring (date) requirede.g.
"1990-08-13"tostring (date) requiredInclusive. At most 366 days after from, or 31 with the Moon.
e.g.
"1990-08-13"include_moonbooleandefault
falseaspectsarray of string
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"framestring requiredcountinteger requiredeventsarray of object requiredatstring (date-time) requiredastring requiredbstring requiredaspectstring requiredanglenumber requiredlongitude_anumber requiredlongitude_bnumber required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/transits/aspects' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"from":"2026-11-01","to":"2026-11-30"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits/aspects", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"from": "2026-11-01",
"to": "2026-11-30"
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"from": "2026-11-01",
"to": "2026-11-30",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits/aspects",
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/transits/aspects');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"from":"2026-11-01","to":"2026-11-30"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 2,062 characters
{
"data": {
"from": "2026-11-01",
"to": "2026-11-30",
"frame": "ecliptic_longitude",
"count": 8,
"events": [
{
"at": "2026-11-04T10:21:00.000Z",
"a": "venus",
"b": "jupiter",
"aspect": "sextile",
"angle": 60,
"longitude_a": 180.4912,
"longitude_b": 120.4915
},
{
"at": "2026-11-04T14:26:00.000Z",
"a": "sun",
"b": "mercury",
"aspect": "conjunction",
"angle": 0,
"longitude_a": 197.9475,
"longitude_b": 197.9465
},
{
"at": "2026-11-10T06:40:00.000Z",
"a": "venus",
"b": "mars",
"aspect": "sextile",
"angle": 60,
"longitude_a": 178.9103,
"longitude_b": 118.9105
},
{
"at": "2026-11-16T06:22:00.000Z",
"a": "mars",
"b": "jupiter",
"aspect": "conjunction",
"angle": 0,
"longitude_a": 121.6537,
"longitude_b": 121.6537
},
{
"at": "2026-11-18T09:38:00.000Z",
"a": "sun",
"b": "jupiter",
"aspect": "square",
"angle": 90,
"longitude_a": 211.8232,
"longitude_b": 121.8232
},
{
"at": "2026-11-19T17:49:00.000Z",
"a": "sun",
"b": "mars",
"aspect": "square",
"angle": 90,
"longitude_a": 213.1757,
"longitude_b": 123.1757
},
{
"at": "2026-11-28T12:07:00.000Z",
"a": "venus",
"b": "jupiter",
"aspect": "sextile",
"angle": 60,
"longitude_a": 182.4464,
"longitude_b": 122.4462
},
{
"at": "2026-11-30T06:02:00.000Z",
"a": "sun",
"b": "saturn",
"aspect": "trine",
"angle": 120,
"longitude_a": 223.7978,
"longitude_b": 343.7976
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
Exact parallels and contra-parallels of declination over a range
POST/v1/transits/parallels
2 credits · Secret key (test or live) · getParallels · Page for this operation
The moment two planets share a geocentric declination, or the same one on opposite sides of the equator, in UTC to the minute. At most 366 days, or 31 with the Moon.
Request body
fromstring (date) requirede.g.
"1990-08-13"tostring (date) requiredInclusive. At most 366 days after from, or 31 with the Moon.
e.g.
"1990-08-13"include_moonbooleandefault
false
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"framestring requiredcountinteger requiredeventsarray of object requiredatstring (date-time) requiredastring requiredbstring requiredkindstring requiredone of
parallel,contra_paralleldeclination_anumber requireddeclination_bnumber required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/transits/parallels' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"from":"2026-11-01","to":"2026-11-30"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/transits/parallels", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"from": "2026-11-01",
"to": "2026-11-30"
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"from": "2026-11-01",
"to": "2026-11-30",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/transits/parallels",
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/transits/parallels');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"from":"2026-11-01","to":"2026-11-30"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 2,167 characters
{
"data": {
"from": "2026-11-01",
"to": "2026-11-30",
"frame": "geocentric_declination_of_date",
"count": 9,
"events": [
{
"at": "2026-11-01T09:58:00.000Z",
"a": "sun",
"b": "venus",
"kind": "parallel",
"declination_a": -14.4936,
"declination_b": -14.4934
},
{
"at": "2026-11-02T15:26:00.000Z",
"a": "venus",
"b": "jupiter",
"kind": "contra_parallel",
"declination_a": -14.0034,
"declination_b": 14.0037
},
{
"at": "2026-11-03T21:05:00.000Z",
"a": "mercury",
"b": "mars",
"kind": "contra_parallel",
"declination_a": -16.3705,
"declination_b": 16.3707
},
{
"at": "2026-11-04T22:40:00.000Z",
"a": "sun",
"b": "mercury",
"kind": "parallel",
"declination_a": -15.5959,
"declination_b": -15.5952
},
{
"at": "2026-11-06T09:09:00.000Z",
"a": "sun",
"b": "mars",
"kind": "contra_parallel",
"declination_a": -16.0297,
"declination_b": 16.0295
},
{
"at": "2026-11-07T10:28:00.000Z",
"a": "mercury",
"b": "jupiter",
"kind": "contra_parallel",
"declination_a": -13.8397,
"declination_b": 13.84
},
{
"at": "2026-11-23T20:18:00.000Z",
"a": "mercury",
"b": "jupiter",
"kind": "contra_parallel",
"declination_a": -13.4323,
"declination_b": 13.4323
},
{
"at": "2026-11-24T10:41:00.000Z",
"a": "mercury",
"b": "mars",
"kind": "contra_parallel",
"declination_a": -13.6935,
"declination_b": 13.6934
},
{
"at": "2026-11-27T02:11:00.000Z",
"a": "mars",
"b": "jupiter",
"kind": "parallel",
"declination_a": 13.3826,
"declination_b": 13.3826
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}