Kundli
The birth chart: lagna, the nine grahas, divisional charts, aspects, yogas, Ashtakavarga, positions at any moment.
Birth chart: lagna and the nine grahas
POST/v1/kundli
2 credits · Secret key (test or live) · getKundli
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
lagnaobjectsignstring requiredsign_labelstring requireddegreenumber requirednakshatrastring requirednakshatra_labelstring requiredpadainteger required≥ 1 · ≤ 4
planetsarray of object requiredidstring requiredlabelstring requiredlongitudenumber required≥ 0 · < 360
signstring requireddegree_in_signnumber requirednakshatrastring requiredpadainteger required≥ 1 · ≤ 4
nakshatra_lordstring requiredhouseinteger≥ 1 · ≤ 12
retrogradeboolean required
divisional_lagnasobjectD2string requiredD9string requiredD10string required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli' \
-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/kundli", {
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/kundli",
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/kundli');
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 · 3,311 characters
{
"data": {
"lagna": {
"sign": "leo",
"sign_label": "Leo",
"degree": 4.28,
"nakshatra": "magha",
"nakshatra_label": "Magha",
"pada": 2
},
"planets": [
{
"id": "sun",
"label": "Sun",
"longitude": 116.318,
"sign": "cancer",
"degree_in_sign": 26.318,
"nakshatra": "ashlesha",
"pada": 3,
"nakshatra_lord": "mercury",
"house": 12,
"retrograde": false
},
{
"id": "moon",
"label": "Moon",
"longitude": 18.0996,
"sign": "aries",
"degree_in_sign": 18.0996,
"nakshatra": "bharani",
"pada": 2,
"nakshatra_lord": "venus",
"house": 9,
"retrograde": false
},
{
"id": "mars",
"label": "Mars",
"longitude": 26.2311,
"sign": "aries",
"degree_in_sign": 26.2311,
"nakshatra": "bharani",
"pada": 4,
"nakshatra_lord": "venus",
"house": 9,
"retrograde": false
},
{
"id": "mercury",
"label": "Mercury",
"longitude": 143.6414,
"sign": "leo",
"degree_in_sign": 23.6414,
"nakshatra": "purva_phalguni",
"pada": 4,
"nakshatra_lord": "venus",
"house": 1,
"retrograde": false
},
{
"id": "jupiter",
"label": "Jupiter",
"longitude": 95.1441,
"sign": "cancer",
"degree_in_sign": 5.1441,
"nakshatra": "pushya",
"pada": 1,
"nakshatra_lord": "saturn",
"house": 12,
"retrograde": false
},
{
"id": "venus",
"label": "Venus",
"longitude": 95.2023,
"sign": "cancer",
"degree_in_sign": 5.2023,
"nakshatra": "pushya",
"pada": 1,
"nakshatra_lord": "saturn",
"house": 12,
"retrograde": false
},
{
"id": "saturn",
"label": "Saturn",
"longitude": 266.2764,
"sign": "sagittarius",
"degree_in_sign": 26.2764,
"nakshatra": "purva_ashadha",
"pada": 4,
"nakshatra_lord": "venus",
"house": 5,
"retrograde": true
},
{
"id": "rahu",
"label": "Rahu",
"longitude": 283.5714,
"sign": "capricorn",
"degree_in_sign": 13.5714,
"nakshatra": "shravana",
"pada": 2,
"nakshatra_lord": "moon",
"house": 6,
"retrograde": true
},
{
"id": "ketu",
"label": "Ketu",
"longitude": 103.5714,
"sign": "cancer",
"degree_in_sign": 13.5714,
"nakshatra": "pushya",
"pada": 4,
"nakshatra_lord": "saturn",
"house": 12,
"retrograde": true
}
],
"divisional_lagnas": {
"D2": "leo",
"D9": "taurus",
"D10": "virgo"
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"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
Avakhada birth details
POST/v1/kundli/birth-details
1 credit · Secret key (test or live) · getBirthDetails
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
varnastringvashyastringyonistringganastringnadistringnakshatrastring
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/birth-details' \
-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/kundli/birth-details", {
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/kundli/birth-details",
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/kundli/birth-details');
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 · 545 characters
{
"data": {
"varna": "Kshatriya",
"vashya": "Chatushpada",
"yoni": "Elephant",
"gana": "Manushya",
"nadi": "Madhya (Pitta)",
"nakshatra": "bharani"
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"mode": "live",
"credits_charged": 1,
"ayanamsa": "lahiri",
"house_system": "whole_sign",
"node": "true",
"timezone_used": {
"name": "Asia/Kolkata",
"utc_offset": "+05:30",
"source": "auto"
}
},
"warnings": []
}Try it
Divisional charts D1–D60
POST/v1/kundli/divisional
2 credits · Secret key (test or live) · getDivisional
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.
vargasarray of string requiredoptionsOptionsayanamsastringEach 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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
chartsmap of object requiredlagnastringplanetsmap of string required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/divisional' \
-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}},"vargas":["D9","D10","D60"]}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/kundli/divisional", {
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
}
},
"vargas": [
"D9",
"D10",
"D60"
]
}),
});
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,
},
},
"vargas": [
"D9",
"D10",
"D60",
],
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/kundli/divisional",
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/kundli/divisional');
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}},"vargas":["D9","D10","D60"]}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 1,422 characters
{
"data": {
"charts": {
"D9": {
"lagna": "taurus",
"planets": {
"sun": "aquarius",
"moon": "virgo",
"mars": "scorpio",
"mercury": "scorpio",
"jupiter": "leo",
"venus": "leo",
"saturn": "scorpio",
"rahu": "taurus",
"ketu": "scorpio"
}
},
"D10": {
"lagna": "virgo",
"planets": {
"sun": "scorpio",
"moon": "libra",
"mars": "sagittarius",
"mercury": "pisces",
"jupiter": "aries",
"venus": "aries",
"saturn": "leo",
"rahu": "capricorn",
"ketu": "cancer"
}
},
"D60": {
"lagna": "aries",
"planets": {
"sun": "scorpio",
"moon": "aries",
"mars": "leo",
"mercury": "cancer",
"jupiter": "taurus",
"venus": "taurus",
"saturn": "aries",
"rahu": "aries",
"ketu": "libra"
}
}
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"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 drishti: houses and planets aspected
POST/v1/kundli/aspects
1 credit · Secret key (test or live) · getAspects
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
aspectsarray of object requiredplanetstring requiredoffsetsarray of integer requiredhousesarray of integer requiredplanetsarray of string required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/aspects' \
-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/kundli/aspects", {
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/kundli/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/kundli/aspects');
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 · 2,213 characters
{
"data": {
"aspects": [
{
"planet": "sun",
"offsets": [
7
],
"houses": [
6
],
"planets": [
"rahu"
]
},
{
"planet": "moon",
"offsets": [
7
],
"houses": [
3
],
"planets": []
},
{
"planet": "mars",
"offsets": [
4,
7,
8
],
"houses": [
3,
4,
12
],
"planets": [
"sun",
"jupiter",
"venus",
"ketu"
]
},
{
"planet": "mercury",
"offsets": [
7
],
"houses": [
7
],
"planets": []
},
{
"planet": "jupiter",
"offsets": [
5,
7,
9
],
"houses": [
4,
6,
8
],
"planets": [
"rahu"
]
},
{
"planet": "venus",
"offsets": [
7
],
"houses": [
6
],
"planets": [
"rahu"
]
},
{
"planet": "saturn",
"offsets": [
3,
7,
10
],
"houses": [
2,
7,
11
],
"planets": []
},
{
"planet": "rahu",
"offsets": [
7
],
"houses": [
12
],
"planets": [
"sun",
"jupiter",
"venus",
"ketu"
]
},
{
"planet": "ketu",
"offsets": [
7
],
"houses": [
6
],
"planets": [
"rahu"
]
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"mode": "live",
"credits_charged": 1,
"ayanamsa": "lahiri",
"house_system": "whole_sign",
"node": "true",
"timezone_used": {
"name": "Asia/Kolkata",
"utc_offset": "+05:30",
"source": "auto"
}
},
"warnings": []
}Try it
Yogas present, with strength and rule
POST/v1/kundli/yogas
2 credits · Secret key (test or live) · getYogas
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
yogasarray of object requirednamestring requiredtypestringstrengthstringplanetsarray of stringrulestring
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/yogas' \
-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/kundli/yogas", {
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/kundli/yogas",
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/kundli/yogas');
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 · 2,390 characters
{
"data": {
"yogas": [
{
"name": "Gajakesari Yoga",
"type": "wealth",
"strength": "very_strong",
"planets": [
"moon",
"jupiter"
],
"rule": "Jupiter in 4th from Moon - wisdom, wealth and public recognition"
},
{
"name": "Dhana Yoga",
"type": "wealth",
"strength": "strong",
"planets": [
"mercury",
"mercury"
],
"rule": "Mercury (2nd lord) and Mercury (11th lord) in wealth axis - significant financial accumulation"
},
{
"name": "Raja Yoga",
"type": "power",
"strength": "strong",
"planets": [
"sun",
"jupiter"
],
"rule": "Sun and Jupiter (kendra + trikona lords) in conjunction - authority, career success and high status"
},
{
"name": "Raja Yoga",
"type": "power",
"strength": "strong",
"planets": [
"saturn",
"jupiter"
],
"rule": "Saturn and Jupiter (kendra + trikona lords) in mutual placement - authority, career success and high status"
},
{
"name": "Raja Yoga",
"type": "power",
"strength": "strong",
"planets": [
"venus",
"jupiter"
],
"rule": "Venus and Jupiter (kendra + trikona lords) in conjunction - authority, career success and high status"
},
{
"name": "Chandra-Mangala Yoga",
"type": "wealth",
"strength": "moderate",
"planets": [
"moon",
"mars"
],
"rule": "Moon and Mars in conjunction - wealth through courage, real estate and enterprise"
},
{
"name": "Vipareeta Raja Yoga",
"type": "power",
"strength": "strong",
"planets": [
"jupiter"
],
"rule": "Jupiter (8th lord) in dusthana - surprising rise after adversity, enemies become allies"
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"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
Bhinna and Sarva Ashtakavarga
POST/v1/kundli/ashtakavarga
2 credits · Secret key (test or live) · getAshtakavarga
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
bhinnamap of array of integer requiredsarvaarray of integer required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/ashtakavarga' \
-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/kundli/ashtakavarga", {
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/kundli/ashtakavarga",
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/kundli/ashtakavarga');
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 · 1,647 characters
{
"data": {
"bhinna": {
"sun": [
4,
6,
5,
5,
2,
2,
6,
4,
5,
7,
3,
4
],
"moon": [
5,
7,
4,
1,
2,
4,
6,
2,
3,
6,
6,
2
],
"mars": [
3,
5,
6,
2,
2,
3,
4,
2,
5,
3,
3,
1
],
"mercury": [
2,
7,
5,
5,
4,
4,
4,
5,
5,
5,
4,
4
],
"jupiter": [
7,
8,
2,
3,
6,
4,
4,
5,
4,
5,
6,
2
],
"venus": [
5,
5,
6,
4,
4,
4,
4,
4,
4,
1,
6,
6
],
"saturn": [
3,
6,
6,
2,
3,
2,
3,
2,
2,
4,
4,
2
]
},
"sarva": [
29,
44,
34,
22,
23,
23,
31,
24,
28,
31,
32,
21
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"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
Shadbala: the six-fold strength of the seven grahas
POST/v1/kundli/shadbala
2 credits · Secret key (test or live) · getShadbala
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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
planetsarray of object requiredidstring requiredcomponentsobject requiredFields
sthananumber requireddignumber requiredkalanumber requiredchestanumber requirednaisargikanumber requireddriknumber required
totalnumber requiredrupasnumber requiredstrengthstring required
rankingarray of string required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/kundli/shadbala' \
-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/kundli/shadbala", {
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/kundli/shadbala",
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/kundli/shadbala');
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 · 2,531 characters
{
"data": {
"planets": [
{
"id": "sun",
"components": {
"sthana": 20,
"dig": 17,
"kala": 18,
"chesta": 10,
"naisargika": 21,
"drik": -5
},
"total": 81,
"rupas": 6.8,
"strength": "good"
},
{
"id": "moon",
"components": {
"sthana": 20,
"dig": 4,
"kala": 13,
"chesta": 10,
"naisargika": 18,
"drik": 0
},
"total": 65,
"rupas": 5.4,
"strength": "good"
},
{
"id": "mars",
"components": {
"sthana": 30,
"dig": 17,
"kala": 13,
"chesta": 15,
"naisargika": 7,
"drik": 0
},
"total": 82,
"rupas": 6.8,
"strength": "good"
},
{
"id": "mercury",
"components": {
"sthana": 12,
"dig": 25,
"kala": 13,
"chesta": 10,
"naisargika": 5,
"drik": 0
},
"total": 65,
"rupas": 5.4,
"strength": "good"
},
{
"id": "jupiter",
"components": {
"sthana": 30,
"dig": 17,
"kala": 18,
"chesta": 20,
"naisargika": 11,
"drik": -5
},
"total": 91,
"rupas": 7.6,
"strength": "excellent"
},
{
"id": "venus",
"components": {
"sthana": 12,
"dig": 8,
"kala": 18,
"chesta": 10,
"naisargika": 14,
"drik": -5
},
"total": 57,
"rupas": 4.8,
"strength": "average"
},
{
"id": "saturn",
"components": {
"sthana": 12,
"dig": 17,
"kala": 13,
"chesta": 25,
"naisargika": 4,
"drik": 0
},
"total": 71,
"rupas": 5.9,
"strength": "good"
}
],
"ranking": [
"jupiter",
"mars",
"sun",
"saturn",
"moon",
"mercury",
"venus"
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"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
Sidereal positions at any moment and place
POST/v1/planets/positions
1 credit · Secret key (test or live) · getPlanetPositions
Request body
datetimestring (date-time) requiredplaceCoordinates 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
include_outerbooleandefault
falseoptionsOptionsayanamsastringEach 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"nodestringone 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"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
atstring (date-time) requiredbodiesarray of object requiredidstring requiredlongitudenumber requiredsignstring requireddegree_in_signnumbernakshatrastringpadaintegerretrogradeboolean
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/planets/positions' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"datetime":"2026-10-02T06:30:00Z","place":{"latitude":28.6139,"longitude":77.209},"include_outer":true}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/planets/positions", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"datetime": "2026-10-02T06:30:00Z",
"place": {
"latitude": 28.6139,
"longitude": 77.209
},
"include_outer": true
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"datetime": "2026-10-02T06:30:00Z",
"place": {
"latitude": 28.6139,
"longitude": 77.209,
},
"include_outer": True,
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/planets/positions",
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/planets/positions');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"datetime":"2026-10-02T06:30:00Z","place":{"latitude":28.6139,"longitude":77.209},"include_outer":true}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 3,609 characters
{
"data": {
"at": "2026-10-02T06:30:00.000Z",
"bodies": [
{
"id": "lagna",
"longitude": 238.567,
"sign": "scorpio",
"degree_in_sign": 28.5669,
"nakshatra": "jyeshtha",
"pada": 4,
"retrograde": false
},
{
"id": "sun",
"longitude": 164.857,
"sign": "virgo",
"degree_in_sign": 14.8569,
"nakshatra": "hasta",
"pada": 2,
"retrograde": false
},
{
"id": "moon",
"longitude": 57.8193,
"sign": "taurus",
"degree_in_sign": 27.8192,
"nakshatra": "mrigashira",
"pada": 2,
"retrograde": false
},
{
"id": "mars",
"longitude": 98.1966,
"sign": "cancer",
"degree_in_sign": 8.1967,
"nakshatra": "pushya",
"pada": 2,
"retrograde": false
},
{
"id": "mercury",
"longitude": 188.1144,
"sign": "libra",
"degree_in_sign": 8.1144,
"nakshatra": "swati",
"pada": 1,
"retrograde": false
},
{
"id": "jupiter",
"longitude": 115.5865,
"sign": "cancer",
"degree_in_sign": 25.5864,
"nakshatra": "ashlesha",
"pada": 3,
"retrograde": false
},
{
"id": "venus",
"longitude": 194.2355,
"sign": "libra",
"degree_in_sign": 14.2356,
"nakshatra": "swati",
"pada": 3,
"retrograde": false
},
{
"id": "saturn",
"longitude": 347.2451,
"sign": "pisces",
"degree_in_sign": 17.245,
"nakshatra": "revati",
"pada": 1,
"retrograde": true
},
{
"id": "uranus",
"longitude": 41.2731,
"sign": "taurus",
"degree_in_sign": 11.2731,
"nakshatra": "rohini",
"pada": 1,
"retrograde": true
},
{
"id": "neptune",
"longitude": 338.5996,
"sign": "pisces",
"degree_in_sign": 8.5997,
"nakshatra": "uttara_bhadrapada",
"pada": 2,
"retrograde": true
},
{
"id": "pluto",
"longitude": 278.8827,
"sign": "capricorn",
"degree_in_sign": 8.8828,
"nakshatra": "uttara_ashadha",
"pada": 4,
"retrograde": true
},
{
"id": "rahu",
"longitude": 303.4148,
"sign": "aquarius",
"degree_in_sign": 3.4147,
"nakshatra": "dhanishta",
"pada": 4,
"retrograde": true
},
{
"id": "ketu",
"longitude": 123.4148,
"sign": "leo",
"degree_in_sign": 3.4147,
"nakshatra": "magha",
"pada": 2,
"retrograde": true
},
{
"id": "rahu_true",
"longitude": 304.8217,
"sign": "aquarius",
"degree_in_sign": 4.8217,
"nakshatra": "dhanishta",
"pada": 4,
"retrograde": true
},
{
"id": "ketu_true",
"longitude": 124.8217,
"sign": "leo",
"degree_in_sign": 4.8217,
"nakshatra": "magha",
"pada": 2,
"retrograde": true
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.9.28",
"mode": "live",
"credits_charged": 1,
"ayanamsa": "lahiri",
"house_system": "whole_sign",
"node": "true",
"timezone_used": {
"name": "Asia/Kolkata",
"utc_offset": "+05:30",
"source": "auto"
}
},
"warnings": []
}