Astrology Timeline API (Dasha, Sade Sati)
Dasha changes, Sade Sati and Dhaiya, and Jupiter, Saturn and Rahu sign changes, in date order
POST/v1/forecast/timeline
3 credits · Secret key (test or live) · getForecastTimeline
At most 5 years. Times are UTC. Descriptive: it says what happens and when, not what it will bring.
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) requirede.g.
"1990-08-13"tostring (date) requiredInclusive. At most 5 years from from.
e.g.
"1990-08-13"optionsobjectlangstring requiredone of
en,hi· default"en"
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"running_at_startobject requiredmahadashaobject or null requiredOne of:
- object
Fields
lordstring requireduntilstring (date-time) required
- null
- object
antardashaobject or null requiredOne of:
- object
Fields
lordstring requireduntilstring (date-time) required
- null
- object
saturn_periodobject or null requiredOne of:
- object
Fields
periodstring requireduntilstring (date-time) required
- null
- object
countinteger requiredeventsarray of object requiredatstring (date-time) requiredkindstring requiredone of
mahadasha_start,antardasha_start,saturn_period_start,saturn_period_end,sign_change,conjunction,oppositionsummarystring requiredlordstringmahadashastringuntilstring (date-time)periodstringplanetstringsignstringhouse_from_moonintegerhouse_from_lagnaintegernatal_pointstring or nullOne of:
- string
- null
retrogradeboolean
notestring required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/forecast/timeline' \
-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-11-01","to":"2027-12-31"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/forecast/timeline", {
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-11-01",
"to": "2027-12-31"
}),
});
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-11-01",
"to": "2027-12-31",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/forecast/timeline",
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/forecast/timeline');
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-11-01","to":"2027-12-31"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 2,745 characters
{
"data": {
"from": "2026-11-01",
"to": "2027-12-31",
"running_at_start": {
"mahadasha": {
"lord": "rahu",
"until": "2044-06-21T04:53:13.747Z"
},
"antardasha": {
"lord": "rahu",
"until": "2029-03-03T21:05:13.747Z"
},
"saturn_period": {
"period": "sade_sati",
"until": "2032-05-30T21:29:10.451Z"
}
},
"count": 6,
"events": [
{
"at": "2026-11-25T11:46:00.000Z",
"kind": "sign_change",
"planet": "rahu",
"sign": "capricorn",
"house_from_moon": 10,
"house_from_lagna": 6,
"natal_point": null,
"retrograde": true,
"summary": "Rahu enters Capricorn."
},
{
"at": "2027-01-24T20:01:00.000Z",
"kind": "sign_change",
"planet": "jupiter",
"sign": "cancer",
"house_from_moon": 4,
"house_from_lagna": 12,
"natal_point": null,
"retrograde": true,
"summary": "Jupiter enters Cancer."
},
{
"at": "2027-06-03T00:34:00.000Z",
"kind": "sign_change",
"planet": "saturn",
"sign": "aries",
"house_from_moon": 1,
"house_from_lagna": 9,
"natal_point": null,
"retrograde": false,
"summary": "Saturn enters Aries."
},
{
"at": "2027-06-25T23:46:00.000Z",
"kind": "sign_change",
"planet": "jupiter",
"sign": "leo",
"house_from_moon": 5,
"house_from_lagna": 1,
"natal_point": null,
"retrograde": false,
"summary": "Jupiter enters Leo."
},
{
"at": "2027-10-20T00:52:00.000Z",
"kind": "sign_change",
"planet": "saturn",
"sign": "pisces",
"house_from_moon": 12,
"house_from_lagna": 8,
"natal_point": null,
"retrograde": true,
"summary": "Saturn enters Pisces."
},
{
"at": "2027-11-26T13:08:00.000Z",
"kind": "sign_change",
"planet": "jupiter",
"sign": "virgo",
"house_from_moon": 6,
"house_from_lagna": 2,
"natal_point": null,
"retrograde": false,
"summary": "Jupiter enters Virgo."
}
],
"note": "Dated facts about the chart. They say what happens and when, not what it will bring."
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 3,
"ayanamsa": "lahiri",
"house_system": "whole_sign",
"node": "true",
"timezone_used": {
"name": "Asia/Kolkata",
"utc_offset": "+05:30",
"source": "auto"
}
},
"warnings": []
}Try it
More in Forecast
- Transit Hits to the Natal Chart API: Sign changes and the minutes a transiting planet reaches or opposes a natal point
- Significant Dates API: The larger dates in a range: dasha changes, Saturn's periods, and Saturn, Jupiter and Rahu returns
- Monthly Astrology Digest API: One month for a chart: the running periods, where the planets stand and the month's dated events
- Vedic Solar Return API: The minute the Sun returns to its birth longitude in a year, with the chart for that minute