KP
Krishnamurti Paddhati: cusps and sub lords, 4-step significators, ruling planets, horary.
KP chart: cusps and planets with star, sub and sub-sub lords
POST/v1/kp/chart
2 credits · Secret key (test or live) · getKpChart · 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.
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:
ayanamsaobject requiredidstring requireddegreesnumber or null requiredOne of:
- number
- null
cuspsarray of object requiredhouseinteger requiredlongitudenumber requiredsignstring requirednakshatrastring requiredstar_lordstring requiredsub_lordstring requiredsub_sub_lordstring required
planetsarray of object requiredidstring requiredlongitudenumber requiredsignstring requirednakshatrastring requiredstar_lordstring requiredsub_lordstring requiredsub_sub_lordstring requiredhouseinteger required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kp/chart' \
-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}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/chart", {
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
}
}
}),
});
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,
},
},
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/kp/chart",
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/kp/chart');
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}}}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 5,319 characters
{
"data": {
"ayanamsa": {
"id": "kp_new",
"degrees": null
},
"cusps": [
{
"house": 1,
"longitude": 124.36,
"sign": "leo",
"nakshatra": "magha",
"star_lord": "ketu",
"sub_lord": "moon",
"sub_sub_lord": "mercury"
},
{
"house": 2,
"longitude": 150.1696,
"sign": "virgo",
"nakshatra": "uttara_phalguni",
"star_lord": "sun",
"sub_lord": "rahu",
"sub_sub_lord": "mercury"
},
{
"house": 3,
"longitude": 179.8578,
"sign": "virgo",
"nakshatra": "chitra",
"star_lord": "mars",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter"
},
{
"house": 4,
"longitude": 212.112,
"sign": "scorpio",
"nakshatra": "vishakha",
"star_lord": "jupiter",
"sub_lord": "rahu",
"sub_sub_lord": "saturn"
},
{
"house": 5,
"longitude": 244.5065,
"sign": "sagittarius",
"nakshatra": "mula",
"star_lord": "ketu",
"sub_lord": "moon",
"sub_sub_lord": "ketu"
},
{
"house": 6,
"longitude": 275.4219,
"sign": "capricorn",
"nakshatra": "uttara_ashadha",
"star_lord": "sun",
"sub_lord": "mercury",
"sub_sub_lord": "ketu"
},
{
"house": 7,
"longitude": 304.36,
"sign": "aquarius",
"nakshatra": "dhanishta",
"star_lord": "mars",
"sub_lord": "venus",
"sub_sub_lord": "saturn"
},
{
"house": 8,
"longitude": 330.1696,
"sign": "pisces",
"nakshatra": "purva_bhadrapada",
"star_lord": "jupiter",
"sub_lord": "moon",
"sub_sub_lord": "mercury"
},
{
"house": 9,
"longitude": 359.8578,
"sign": "pisces",
"nakshatra": "revati",
"star_lord": "mercury",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter"
},
{
"house": 10,
"longitude": 32.112,
"sign": "taurus",
"nakshatra": "krittika",
"star_lord": "sun",
"sub_lord": "jupiter",
"sub_sub_lord": "venus"
},
{
"house": 11,
"longitude": 64.5065,
"sign": "gemini",
"nakshatra": "mrigashira",
"star_lord": "mars",
"sub_lord": "venus",
"sub_sub_lord": "mercury"
},
{
"house": 12,
"longitude": 95.4219,
"sign": "cancer",
"nakshatra": "pushya",
"star_lord": "saturn",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter"
}
],
"planets": [
{
"id": "sun",
"longitude": 116.4039,
"sign": "cancer",
"nakshatra": "ashlesha",
"star_lord": "mercury",
"sub_lord": "jupiter",
"sub_sub_lord": "saturn",
"house": 12
},
{
"id": "moon",
"longitude": 18.1855,
"sign": "aries",
"nakshatra": "bharani",
"star_lord": "venus",
"sub_lord": "rahu",
"sub_sub_lord": "rahu",
"house": 9
},
{
"id": "mars",
"longitude": 26.3171,
"sign": "aries",
"nakshatra": "bharani",
"star_lord": "venus",
"sub_lord": "ketu",
"sub_sub_lord": "rahu",
"house": 9
},
{
"id": "mercury",
"longitude": 143.7273,
"sign": "leo",
"nakshatra": "purva_phalguni",
"star_lord": "venus",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter",
"house": 1
},
{
"id": "jupiter",
"longitude": 95.23,
"sign": "cancer",
"nakshatra": "pushya",
"star_lord": "saturn",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter",
"house": 11
},
{
"id": "venus",
"longitude": 95.2883,
"sign": "cancer",
"nakshatra": "pushya",
"star_lord": "saturn",
"sub_lord": "saturn",
"sub_sub_lord": "jupiter",
"house": 11
},
{
"id": "saturn",
"longitude": 266.3624,
"sign": "sagittarius",
"nakshatra": "purva_ashadha",
"star_lord": "venus",
"sub_lord": "ketu",
"sub_sub_lord": "jupiter",
"house": 5
},
{
"id": "rahu",
"longitude": 283.5829,
"sign": "capricorn",
"nakshatra": "shravana",
"star_lord": "moon",
"sub_lord": "rahu",
"sub_sub_lord": "sun",
"house": 6
},
{
"id": "ketu",
"longitude": 103.5829,
"sign": "cancer",
"nakshatra": "pushya",
"star_lord": "saturn",
"sub_lord": "rahu",
"sub_sub_lord": "saturn",
"house": 12
}
]
},
"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
KP 4-step significators and house groups
POST/v1/kp/significators
2 credits · Secret key (test or live) · getKpSignificators · 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.
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:
planetsarray of object requiredidstring requiredaarray of integer requiredbarray of integer requiredcarray of integer requireddarray of integer requiredhousesarray of integer requiredsub_lord_housesarray of integer required
groupsarray of object requiredidstring requiredhousesarray of integer requiredstrongarray of string requiredpartialarray of object requiredFields
planetstring requiredhousesarray of integer required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kp/significators' \
-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}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/significators", {
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
}
}
}),
});
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,
},
},
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/kp/significators",
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/kp/significators');
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}}}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 14,988 characters
{
"data": {
"planets": [
{
"id": "sun",
"a": [
1
],
"b": [
2,
3,
11
],
"c": [
12
],
"d": [
1
],
"houses": [
1,
2,
3,
11,
12
],
"sub_lord_houses": [
5,
8,
9,
11
]
},
{
"id": "moon",
"a": [
11
],
"b": [
10
],
"c": [
9
],
"d": [
12
],
"houses": [
9,
10,
11,
12
],
"sub_lord_houses": [
6
]
},
{
"id": "mars",
"a": [
11
],
"b": [
10
],
"c": [
9
],
"d": [
4
],
"houses": [
4,
9,
10,
11
],
"sub_lord_houses": [
12
]
},
{
"id": "mercury",
"a": [
11
],
"b": [
10
],
"c": [
1
],
"d": [
2,
3,
11
],
"houses": [
1,
2,
3,
10,
11
],
"sub_lord_houses": [
5,
6,
7
]
},
{
"id": "jupiter",
"a": [
5
],
"b": [
6,
7
],
"c": [
11
],
"d": [
5,
8,
9
],
"houses": [
5,
6,
7,
8,
9,
11
],
"sub_lord_houses": [
5,
6,
7
]
},
{
"id": "venus",
"a": [
5
],
"b": [
6,
7
],
"c": [
11
],
"d": [
10
],
"houses": [
5,
6,
7,
10,
11
],
"sub_lord_houses": [
5,
6,
7
]
},
{
"id": "saturn",
"a": [
11
],
"b": [
10
],
"c": [
5
],
"d": [
6,
7
],
"houses": [
5,
6,
7,
10,
11
],
"sub_lord_houses": [
12
]
},
{
"id": "rahu",
"a": [
9
],
"b": [
12
],
"c": [
6
],
"d": [],
"houses": [
6,
9,
12
],
"sub_lord_houses": [
6
]
},
{
"id": "ketu",
"a": [
5
],
"b": [
6,
7
],
"c": [
12
],
"d": [],
"houses": [
5,
6,
7,
12
],
"sub_lord_houses": [
6
]
}
],
"groups": [
{
"id": "marriage",
"houses": [
2,
7,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
2,
11
]
},
{
"planet": "moon",
"houses": [
11
]
},
{
"planet": "mars",
"houses": [
11
]
},
{
"planet": "mercury",
"houses": [
2,
11
]
},
{
"planet": "jupiter",
"houses": [
7,
11
]
},
{
"planet": "venus",
"houses": [
7,
11
]
},
{
"planet": "saturn",
"houses": [
7,
11
]
},
{
"planet": "ketu",
"houses": [
7
]
}
]
},
{
"id": "job",
"houses": [
2,
6,
10,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
2,
11
]
},
{
"planet": "moon",
"houses": [
10,
11
]
},
{
"planet": "mars",
"houses": [
10,
11
]
},
{
"planet": "mercury",
"houses": [
2,
10,
11
]
},
{
"planet": "jupiter",
"houses": [
6,
11
]
},
{
"planet": "venus",
"houses": [
6,
10,
11
]
},
{
"planet": "saturn",
"houses": [
6,
10,
11
]
},
{
"planet": "rahu",
"houses": [
6
]
},
{
"planet": "ketu",
"houses": [
6
]
}
]
},
{
"id": "business",
"houses": [
2,
7,
10,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
2,
11
]
},
{
"planet": "moon",
"houses": [
10,
11
]
},
{
"planet": "mars",
"houses": [
10,
11
]
},
{
"planet": "mercury",
"houses": [
2,
10,
11
]
},
{
"planet": "jupiter",
"houses": [
7,
11
]
},
{
"planet": "venus",
"houses": [
7,
10,
11
]
},
{
"planet": "saturn",
"houses": [
7,
10,
11
]
},
{
"planet": "ketu",
"houses": [
7
]
}
]
},
{
"id": "wealth",
"houses": [
2,
6,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
2,
11
]
},
{
"planet": "moon",
"houses": [
11
]
},
{
"planet": "mars",
"houses": [
11
]
},
{
"planet": "mercury",
"houses": [
2,
11
]
},
{
"planet": "jupiter",
"houses": [
6,
11
]
},
{
"planet": "venus",
"houses": [
6,
11
]
},
{
"planet": "saturn",
"houses": [
6,
11
]
},
{
"planet": "rahu",
"houses": [
6
]
},
{
"planet": "ketu",
"houses": [
6
]
}
]
},
{
"id": "children",
"houses": [
2,
5,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
2,
11
]
},
{
"planet": "moon",
"houses": [
11
]
},
{
"planet": "mars",
"houses": [
11
]
},
{
"planet": "mercury",
"houses": [
2,
11
]
},
{
"planet": "jupiter",
"houses": [
5,
11
]
},
{
"planet": "venus",
"houses": [
5,
11
]
},
{
"planet": "saturn",
"houses": [
5,
11
]
},
{
"planet": "ketu",
"houses": [
5
]
}
]
},
{
"id": "education",
"houses": [
4,
9,
11
],
"strong": [
"mars"
],
"partial": [
{
"planet": "sun",
"houses": [
11
]
},
{
"planet": "moon",
"houses": [
9,
11
]
},
{
"planet": "mercury",
"houses": [
11
]
},
{
"planet": "jupiter",
"houses": [
9,
11
]
},
{
"planet": "venus",
"houses": [
11
]
},
{
"planet": "saturn",
"houses": [
11
]
},
{
"planet": "rahu",
"houses": [
9
]
}
]
},
{
"id": "property",
"houses": [
4,
11,
12
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
11,
12
]
},
{
"planet": "moon",
"houses": [
11,
12
]
},
{
"planet": "mars",
"houses": [
4,
11
]
},
{
"planet": "mercury",
"houses": [
11
]
},
{
"planet": "jupiter",
"houses": [
11
]
},
{
"planet": "venus",
"houses": [
11
]
},
{
"planet": "saturn",
"houses": [
11
]
},
{
"planet": "rahu",
"houses": [
12
]
},
{
"planet": "ketu",
"houses": [
12
]
}
]
},
{
"id": "foreign",
"houses": [
3,
9,
12
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
3,
12
]
},
{
"planet": "moon",
"houses": [
9,
12
]
},
{
"planet": "mars",
"houses": [
9
]
},
{
"planet": "mercury",
"houses": [
3
]
},
{
"planet": "jupiter",
"houses": [
9
]
},
{
"planet": "rahu",
"houses": [
9,
12
]
},
{
"planet": "ketu",
"houses": [
12
]
}
]
},
{
"id": "health",
"houses": [
1,
5,
11
],
"strong": [],
"partial": [
{
"planet": "sun",
"houses": [
1,
11
]
},
{
"planet": "moon",
"houses": [
11
]
},
{
"planet": "mars",
"houses": [
11
]
},
{
"planet": "mercury",
"houses": [
1,
11
]
},
{
"planet": "jupiter",
"houses": [
5,
11
]
},
{
"planet": "venus",
"houses": [
5,
11
]
},
{
"planet": "saturn",
"houses": [
5,
11
]
},
{
"planet": "ketu",
"houses": [
5
]
}
]
},
{
"id": "litigation",
"houses": [
6,
11
],
"strong": [
"jupiter",
"venus",
"saturn"
],
"partial": [
{
"planet": "sun",
"houses": [
11
]
},
{
"planet": "moon",
"houses": [
11
]
},
{
"planet": "mars",
"houses": [
11
]
},
{
"planet": "mercury",
"houses": [
11
]
},
{
"planet": "rahu",
"houses": [
6
]
},
{
"planet": "ketu",
"houses": [
6
]
}
]
}
]
},
"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 seven KP ruling planets at a moment and place
GET/v1/kp/ruling-planets
1 credit · Secret or publishable key · getKpRulingPlanets · Page for this operation
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
datetime required | query | string (date-time) | The moment, ISO 8601 with a zone (e.g. 2026-10-02T06:00:00Z). |
lat required | query | number | ≥ -90 · ≤ 90 |
lon required | query | number | ≥ -180 · ≤ 180 |
Response
JSON { data, meta, warnings }, where data is:
atstring (date-time) requiredday_lordstring requiredlagnaobject requiredsign_lordstring requiredstar_lordstring requiredsub_lordstring required
moonobject requiredsign_lordstring requiredstar_lordstring requiredsub_lordstring required
localobject requireddatestring (date) requirede.g.
"1990-08-13"timestring requiredoffset_hoursnumber required
weekdayobject requirednamestring requiredlordstring required
lagna_signstring or null requiredOne of:
- string
- null
moon_signstring or null requiredOne of:
- string
- null
nakshatraobject or null requiredOne of:
- object
Fields
namestring requiredlordstring requiredpadainteger required≥ 1 · ≤ 4
- null
- object
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl 'https://api.astrologics.in/v1/kp/ruling-planets?datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209' \
-H 'Authorization: Bearer al_test_YOUR_KEY'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/ruling-planets?datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209", {
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/kp/ruling-planets?datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209",
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/kp/ruling-planets?datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209');
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 · 779 characters
{
"data": {
"at": "2026-10-02T06:00:00.000Z",
"day_lord": "venus",
"lagna": {
"sign_lord": "mars",
"star_lord": "mercury",
"sub_lord": "sun"
},
"moon": {
"sign_lord": "venus",
"star_lord": "mars",
"sub_lord": "jupiter"
},
"local": {
"date": "2026-10-02",
"time": "11:30",
"offset_hours": 5.5
},
"weekday": {
"name": "friday",
"lord": "venus"
},
"lagna_sign": "scorpio",
"moon_sign": "taurus",
"nakshatra": {
"name": "mrigashira",
"lord": "mars",
"pada": 2
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 1
},
"warnings": []
}Try it
KP horary (prashna) for a number from 1 to 249
GET/v1/kp/horary
2 credits · Secret or publishable key · getKpHorary · Page for this operation
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
number required | query | integer | The number the querent chose, 1–249. ≥ 1 · ≤ 249 |
datetime required | query | string (date-time) | The moment, ISO 8601 with a zone (e.g. 2026-10-02T06:00:00Z). |
lat required | query | number | ≥ -90 · ≤ 90 |
lon required | query | number | ≥ -180 · ≤ 180 |
Response
JSON { data, meta, warnings }, where data is:
numberinteger requiredatstring (date-time) requireddivisionobject requiredstartnumber requiredendnumber requiredsignstring requiredsign_lordstring requirednakshatrastring requiredstar_lordstring requiredsub_lordstring requirednumberinteger required≥ 1 · ≤ 249
midpointnumber requiredThe longitude the horary chart is cast on (KP-New).
ruling_planetsobject or null requiredOne of:
- object
Fields
day_lordstring requiredlagnaobject requiredFields
sign_lordstring requiredstar_lordstring requiredsub_lordstring required
moonobject requiredFields
sign_lordstring requiredstar_lordstring requiredsub_lordstring required
- null
- object
sub_sub_lordstring or null requiredOne of:
- string
- null
question_groupsarray of string required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl 'https://api.astrologics.in/v1/kp/horary?number=123&datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209' \
-H 'Authorization: Bearer al_test_YOUR_KEY'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/horary?number=123&datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209", {
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/kp/horary?number=123&datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209",
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/kp/horary?number=123&datetime=2026-10-02T06:00:00Z&lat=28.6139&lon=77.209');
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 · 591 characters
{
"data": {
"number": 123,
"at": "2026-10-02T06:00:00.000Z",
"division": {
"start": 176.111111,
"end": 177.888889,
"sign": "virgo",
"sign_lord": "mercury",
"nakshatra": "chitra",
"star_lord": "mars",
"sub_lord": "jupiter",
"number": 123,
"midpoint": 177
},
"ruling_planets": null,
"sub_sub_lord": "venus",
"question_groups": []
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
When each planet changes sign, star lord or sub lord over a range
POST/v1/kp/changes
2 credits · Secret key (test or live) · getKpChanges · Page for this operation
Times are UTC, to the minute, on the KP-New ayanamsa our KP chart uses. 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"planetsarray of string
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
ayanamsastring requiredfromstring (date) requirede.g.
"1990-08-13"tostring (date) requirede.g.
"1990-08-13"countinteger requiredchangesarray of object requiredatstring (date-time) requiredplanetstring requiredchangedarray of string requiredfromobject requiredFields
signstring requiredstar_lordstring requiredsub_lordstring required
toobject requiredFields
signstring requiredstar_lordstring requiredsub_lordstring required
retrogradeboolean required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kp/changes' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"from":"2026-11-01","to":"2026-11-07","planets":["sun","mars"]}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/changes", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"from": "2026-11-01",
"to": "2026-11-07",
"planets": [
"sun",
"mars"
]
}),
});
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-07",
"planets": [
"sun",
"mars",
],
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/kp/changes",
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/kp/changes');
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-07","planets":["sun","mars"]}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 3,525 characters
{
"data": {
"ayanamsa": "kp_new",
"from": "2026-11-01",
"to": "2026-11-07",
"count": 8,
"changes": [
{
"at": "2026-11-01T00:18:00.000Z",
"planet": "sun",
"changed": [
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "mercury"
},
"to": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "ketu"
},
"retrograde": false
},
{
"at": "2026-11-01T18:58:00.000Z",
"planet": "sun",
"changed": [
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "ketu"
},
"to": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "venus"
},
"retrograde": false
},
{
"at": "2026-11-04T00:14:00.000Z",
"planet": "sun",
"changed": [
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "venus"
},
"to": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "sun"
},
"retrograde": false
},
{
"at": "2026-11-04T06:43:00.000Z",
"planet": "mars",
"changed": [
"sub_lord"
],
"from": {
"sign": "cancer",
"star_lord": "mercury",
"sub_lord": "rahu"
},
"to": {
"sign": "cancer",
"star_lord": "mercury",
"sub_lord": "jupiter"
},
"retrograde": false
},
{
"at": "2026-11-04T16:12:00.000Z",
"planet": "sun",
"changed": [
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "sun"
},
"to": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "moon"
},
"retrograde": false
},
{
"at": "2026-11-05T18:48:00.000Z",
"planet": "sun",
"changed": [
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "moon"
},
"to": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "mars"
},
"retrograde": false
},
{
"at": "2026-11-06T13:25:00.000Z",
"planet": "sun",
"changed": [
"star_lord",
"sub_lord"
],
"from": {
"sign": "libra",
"star_lord": "rahu",
"sub_lord": "mars"
},
"to": {
"sign": "libra",
"star_lord": "jupiter",
"sub_lord": "jupiter"
},
"retrograde": false
},
{
"at": "2026-11-07T22:30:00.000Z",
"planet": "mars",
"changed": [
"sub_lord"
],
"from": {
"sign": "cancer",
"star_lord": "mercury",
"sub_lord": "jupiter"
},
"to": {
"sign": "cancer",
"star_lord": "mercury",
"sub_lord": "saturn"
},
"retrograde": false
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
The seven KP ruling planets over a window, as intervals
POST/v1/kp/ruling-intervals
2 credits · Secret key (test or live) · getKpRulingIntervals · Page for this operation
Each interval is one unbroken set of ruling planets at the place, to the minute. At most 6 hours.
Request body
atstring (date-time) requiredhoursnumber≥ 0.25 · ≤ 6 · default
2placeCoordinates 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
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
resolutionstring requiredone of
minutecountinteger requiredintervalsarray of object requiredfromstring (date-time) requiredtostring (date-time) requiredday_lordstring requiredmoonobject requiredFields
sign_lordstring requiredstar_lordstring requiredsub_lordstring required
lagnaobject requiredFields
sign_lordstring requiredstar_lordstring requiredsub_lordstring required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kp/ruling-intervals' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"at":"2026-11-02T06:00:00Z","hours":1,"place":{"latitude":28.6139,"longitude":77.209}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kp/ruling-intervals", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"at": "2026-11-02T06:00:00Z",
"hours": 1,
"place": {
"latitude": 28.6139,
"longitude": 77.209
}
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"at": "2026-11-02T06:00:00Z",
"hours": 1,
"place": {
"latitude": 28.6139,
"longitude": 77.209,
},
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/kp/ruling-intervals",
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/kp/ruling-intervals');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"at":"2026-11-02T06:00:00Z","hours":1,"place":{"latitude":28.6139,"longitude":77.209}}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 4,805 characters
{
"data": {
"resolution": "minute",
"count": 12,
"intervals": [
{
"from": "2026-11-02T06:00:00.000Z",
"to": "2026-11-02T06:07:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "venus",
"sub_lord": "jupiter"
}
},
{
"from": "2026-11-02T06:07:00.000Z",
"to": "2026-11-02T06:16:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "venus",
"sub_lord": "saturn"
}
},
{
"from": "2026-11-02T06:16:00.000Z",
"to": "2026-11-02T06:23:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "venus",
"sub_lord": "mercury"
}
},
{
"from": "2026-11-02T06:23:00.000Z",
"to": "2026-11-02T06:26:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "venus",
"sub_lord": "ketu"
}
},
{
"from": "2026-11-02T06:26:00.000Z",
"to": "2026-11-02T06:29:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "sun",
"sub_lord": "sun"
}
},
{
"from": "2026-11-02T06:29:00.000Z",
"to": "2026-11-02T06:33:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "sun",
"sub_lord": "moon"
}
},
{
"from": "2026-11-02T06:33:00.000Z",
"to": "2026-11-02T06:36:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "sun",
"sub_lord": "mars"
}
},
{
"from": "2026-11-02T06:36:00.000Z",
"to": "2026-11-02T06:39:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "jupiter",
"star_lord": "sun",
"sub_lord": "rahu"
}
},
{
"from": "2026-11-02T06:39:00.000Z",
"to": "2026-11-02T06:43:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "saturn",
"star_lord": "sun",
"sub_lord": "rahu"
}
},
{
"from": "2026-11-02T06:43:00.000Z",
"to": "2026-11-02T06:50:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "saturn",
"star_lord": "sun",
"sub_lord": "jupiter"
}
},
{
"from": "2026-11-02T06:50:00.000Z",
"to": "2026-11-02T06:58:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "saturn",
"star_lord": "sun",
"sub_lord": "saturn"
}
},
{
"from": "2026-11-02T06:58:00.000Z",
"to": "2026-11-02T07:00:00.000Z",
"day_lord": "moon",
"moon": {
"sign_lord": "moon",
"star_lord": "mercury",
"sub_lord": "venus"
},
"lagna": {
"sign_lord": "saturn",
"star_lord": "sun",
"sub_lord": "mercury"
}
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}