Western
Tropical charts with Placidus, equal, whole sign or Porphyry houses, the wheel in SVG, aspects, synastry, composite, exact transits, secondary progressions and solar and lunar returns.
A tropical birth chart: planets, angles, Placidus or other houses, dignities and element balance
POST/v1/western/chart
2 credits · Secret key (test or live) · getWesternChart · Page for this operation
Sun to Pluto and the true node, as apparent longitudes of date. With an unknown birth time, angles, houses and each planet's house are null, and the Moon can be up to about 6° off.
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.
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"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:
momentstring (date-time) requiredframestring requiredone of
tropicalhouse_systemstring or null requiredOne of:
- string
- null
planetsarray of object requiredidstring requirednamestring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredspeednumber requiredDegrees a day.
retrogradeboolean requiredhouseinteger or null requiredOne of:
- integer
- null
dignitystring or null requiredOne of:
- string
- null
anglesobject or null requiredOne of:
- object
Fields
ascendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
midheavenobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
descendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
imum_coeliobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- object
housesarray of object or null requiredOne of:
- array of object
Fields
houseinteger requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- array of object
balanceobject requiredelementsobject requiredFields
fireinteger requiredearthinteger requiredairinteger requiredwaterinteger required
modalitiesobject requiredFields
cardinalinteger requiredfixedinteger requiredmutableinteger required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/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/western/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/western/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/western/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 · 7,459 characters
{
"data": {
"moment": "1990-08-13T01:00:00.000Z",
"frame": "tropical",
"house_system": "placidus",
"planets": [
{
"id": "sun",
"name": "Sun",
"longitude": 140.0441,
"sign": "leo",
"sign_name": "Leo",
"degree": 20.0441,
"formatted": "20°02′ Leo",
"speed": 0.96,
"retrograde": false,
"house": 12,
"dignity": "domicile"
},
{
"id": "moon",
"name": "Moon",
"longitude": 41.8257,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 11.8257,
"formatted": "11°49′ Taurus",
"speed": 14.1674,
"retrograde": false,
"house": 9,
"dignity": "exaltation"
},
{
"id": "mercury",
"name": "Mercury",
"longitude": 167.3675,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 17.3675,
"formatted": "17°22′ Virgo",
"speed": 0.891,
"retrograde": false,
"house": 1,
"dignity": "domicile"
},
{
"id": "venus",
"name": "Venus",
"longitude": 118.9285,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 28.9285,
"formatted": "28°55′ Cancer",
"speed": 1.2195,
"retrograde": false,
"house": 11,
"dignity": null
},
{
"id": "mars",
"name": "Mars",
"longitude": 49.9573,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 19.9573,
"formatted": "19°57′ Taurus",
"speed": 0.5855,
"retrograde": false,
"house": 9,
"dignity": "detriment"
},
{
"id": "jupiter",
"name": "Jupiter",
"longitude": 118.8702,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 28.8702,
"formatted": "28°52′ Cancer",
"speed": 0.2159,
"retrograde": false,
"house": 11,
"dignity": "exaltation"
},
{
"id": "saturn",
"name": "Saturn",
"longitude": 290.0026,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 20.0026,
"formatted": "20°00′ Capricorn",
"speed": -0.0587,
"retrograde": true,
"house": 5,
"dignity": "domicile"
},
{
"id": "uranus",
"name": "Uranus",
"longitude": 276.03,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 6.03,
"formatted": "6°01′ Capricorn",
"speed": -0.0252,
"retrograde": true,
"house": 5,
"dignity": null
},
{
"id": "neptune",
"name": "Neptune",
"longitude": 282.2409,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 12.2409,
"formatted": "12°14′ Capricorn",
"speed": -0.0199,
"retrograde": true,
"house": 5,
"dignity": null
},
{
"id": "pluto",
"name": "Pluto",
"longitude": 225.0615,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 15.0615,
"formatted": "15°03′ Scorpio",
"speed": 0.0102,
"retrograde": false,
"house": 3,
"dignity": null
},
{
"id": "north_node",
"name": "North Node",
"longitude": 307.2231,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 7.2231,
"formatted": "7°13′ Aquarius",
"speed": -0.0061,
"retrograde": true,
"house": 6,
"dignity": null
},
{
"id": "south_node",
"name": "South Node",
"longitude": 127.2231,
"sign": "leo",
"sign_name": "Leo",
"degree": 7.2231,
"formatted": "7°13′ Leo",
"speed": -0.0061,
"retrograde": true,
"house": 12,
"dignity": null
}
],
"angles": {
"ascendant": {
"longitude": 148.0037,
"sign": "leo",
"sign_name": "Leo",
"degree": 28.0037,
"formatted": "28°00′ Leo"
},
"midheaven": {
"longitude": 55.7525,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 25.7525,
"formatted": "25°45′ Taurus"
},
"descendant": {
"longitude": 328.0037,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 28.0037,
"formatted": "28°00′ Aquarius"
},
"imum_coeli": {
"longitude": 235.7525,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 25.7525,
"formatted": "25°45′ Scorpio"
}
},
"houses": [
{
"house": 1,
"longitude": 148.0037,
"sign": "leo",
"sign_name": "Leo",
"degree": 28.0037,
"formatted": "28°00′ Leo"
},
{
"house": 2,
"longitude": 173.8098,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 23.8098,
"formatted": "23°48′ Virgo"
},
{
"house": 3,
"longitude": 203.4981,
"sign": "libra",
"sign_name": "Libra",
"degree": 23.4981,
"formatted": "23°29′ Libra"
},
{
"house": 4,
"longitude": 235.7525,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 25.7525,
"formatted": "25°45′ Scorpio"
},
{
"house": 5,
"longitude": 268.1471,
"sign": "sagittarius",
"sign_name": "Sagittarius",
"degree": 28.1471,
"formatted": "28°08′ Sagittarius"
},
{
"house": 6,
"longitude": 299.0623,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 29.0623,
"formatted": "29°03′ Capricorn"
},
{
"house": 7,
"longitude": 328.0037,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 28.0037,
"formatted": "28°00′ Aquarius"
},
{
"house": 8,
"longitude": 353.8098,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 23.8098,
"formatted": "23°48′ Pisces"
},
{
"house": 9,
"longitude": 23.4981,
"sign": "aries",
"sign_name": "Aries",
"degree": 23.4981,
"formatted": "23°29′ Aries"
},
{
"house": 10,
"longitude": 55.7525,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 25.7525,
"formatted": "25°45′ Taurus"
},
{
"house": 11,
"longitude": 88.1471,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 28.1471,
"formatted": "28°08′ Gemini"
},
{
"house": 12,
"longitude": 119.0623,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 29.0623,
"formatted": "29°03′ Cancer"
}
],
"balance": {
"elements": {
"fire": 1,
"earth": 6,
"air": 0,
"water": 3
},
"modalities": {
"cardinal": 5,
"fixed": 4,
"mutable": 1
}
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
The chart drawn as a wheel in SVG, with the ascendant on the left
POST/v1/western/chart.svg
2 credits · Secret key (test or live) · getWesternChartSvg · 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.
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"themestringone of
light,dark· default"light"optionsobjectlangstring requiredone of
en,hi· default"en"
No other fields are accepted.
No other fields are accepted.
Response
image/svg+xml
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/chart.svg' \
-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/western/chart.svg", {
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(await res.text());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/western/chart.svg",
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(res.read().decode())
except urllib.error.HTTPError as err:
print(err.code, err.read().decode())PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/western/chart.svg');
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
Try it
Natal aspects with their orbs, and whether each is applying
POST/v1/western/aspects
1 credit · Secret key (test or live) · getWesternAspects · Page for this operation
Orbs differ between schools. The response states the ones used, and you can pass your own.
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.
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"aspectsarray of stringorbsobjectYour own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.
conjunctionnumber≥ 0 · ≤ 15
oppositionnumber≥ 0 · ≤ 15
trinenumber≥ 0 · ≤ 15
squarenumber≥ 0 · ≤ 15
sextilenumber≥ 0 · ≤ 15
quincunxnumber≥ 0 · ≤ 15
semisextilenumber≥ 0 · ≤ 15
semisquarenumber≥ 0 · ≤ 15
sesquiquadratenumber≥ 0 · ≤ 15
quintilenumber≥ 0 · ≤ 15
biquintilenumber≥ 0 · ≤ 15
No other fields are accepted.
include_anglesbooleandefault
trueoptionsobjectlangstring requiredone of
en,hi· default"en"
No other fields are accepted.
No other fields are accepted.
Response
JSON { data, meta, warnings }, where data is:
framestring requiredcountinteger requiredaspectsarray of object requiredastring requiredbstring requiredaspectstring requiredone of
conjunction,opposition,trine,square,sextile,quincunx,semisextile,semisquare,sesquiquadrate,quintile,biquintileanglenumber requiredorbnumber requiredapplyingboolean required
orbs_usedobject requiredconjunctionnumberoppositionnumbertrinenumbersquarenumbersextilenumberquincunxnumbersemisextilenumbersemisquarenumbersesquiquadratenumberquintilenumberbiquintilenumber
sun_moon_extranumber requiredDegrees added to a major aspect with the Sun or Moon.
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/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/western/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/western/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/western/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 · 4,866 characters
{
"data": {
"frame": "tropical",
"count": 28,
"aspects": [
{
"a": "mars",
"b": "saturn",
"aspect": "trine",
"angle": 120,
"orb": 0.05,
"applying": true
},
{
"a": "venus",
"b": "jupiter",
"aspect": "conjunction",
"angle": 0,
"orb": 0.06,
"applying": false
},
{
"a": "sun",
"b": "mars",
"aspect": "square",
"angle": 90,
"orb": 0.09,
"applying": false
},
{
"a": "moon",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 0.42,
"applying": true
},
{
"a": "mercury",
"b": "pluto",
"aspect": "sextile",
"angle": 60,
"orb": 2.31,
"applying": false
},
{
"a": "mercury",
"b": "mars",
"aspect": "trine",
"angle": 120,
"orb": 2.59,
"applying": true
},
{
"a": "mercury",
"b": "saturn",
"aspect": "trine",
"angle": 120,
"orb": 2.64,
"applying": true
},
{
"a": "neptune",
"b": "pluto",
"aspect": "sextile",
"angle": 60,
"orb": 2.82,
"applying": false
},
{
"a": "jupiter",
"b": "midheaven",
"aspect": "sextile",
"angle": 60,
"orb": 3.12,
"applying": false
},
{
"a": "venus",
"b": "midheaven",
"aspect": "sextile",
"angle": 60,
"orb": 3.18,
"applying": false
},
{
"a": "moon",
"b": "pluto",
"aspect": "opposition",
"angle": 180,
"orb": 3.24,
"applying": true
},
{
"a": "moon",
"b": "north_node",
"aspect": "square",
"angle": 90,
"orb": 4.6,
"applying": false
},
{
"a": "mars",
"b": "pluto",
"aspect": "opposition",
"angle": 180,
"orb": 4.9,
"applying": false
},
{
"a": "saturn",
"b": "pluto",
"aspect": "sextile",
"angle": 60,
"orb": 4.94,
"applying": true
},
{
"a": "sun",
"b": "pluto",
"aspect": "square",
"angle": 90,
"orb": 4.98,
"applying": false
},
{
"a": "mercury",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 5.13,
"applying": false
},
{
"a": "moon",
"b": "mercury",
"aspect": "trine",
"angle": 120,
"orb": 5.54,
"applying": true
},
{
"a": "sun",
"b": "midheaven",
"aspect": "square",
"angle": 90,
"orb": 5.71,
"applying": true
},
{
"a": "saturn",
"b": "midheaven",
"aspect": "trine",
"angle": 120,
"orb": 5.75,
"applying": false
},
{
"a": "moon",
"b": "uranus",
"aspect": "trine",
"angle": 120,
"orb": 5.8,
"applying": false
},
{
"a": "mars",
"b": "midheaven",
"aspect": "conjunction",
"angle": 0,
"orb": 5.8,
"applying": true
},
{
"a": "uranus",
"b": "neptune",
"aspect": "conjunction",
"angle": 0,
"orb": 6.21,
"applying": false
},
{
"a": "mars",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 7.72,
"applying": false
},
{
"a": "saturn",
"b": "neptune",
"aspect": "conjunction",
"angle": 0,
"orb": 7.76,
"applying": true
},
{
"a": "sun",
"b": "ascendant",
"aspect": "conjunction",
"angle": 0,
"orb": 7.96,
"applying": true
},
{
"a": "moon",
"b": "mars",
"aspect": "conjunction",
"angle": 0,
"orb": 8.13,
"applying": true
},
{
"a": "moon",
"b": "saturn",
"aspect": "trine",
"angle": 120,
"orb": 8.18,
"applying": true
},
{
"a": "sun",
"b": "moon",
"aspect": "square",
"angle": 90,
"orb": 8.22,
"applying": true
}
],
"orbs_used": {
"conjunction": 8,
"opposition": 8,
"trine": 8,
"square": 7,
"sextile": 5
},
"sun_moon_extra": 2
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 1
},
"warnings": []
}Try it
Aspects between two charts, and each person's planets in the other's houses
POST/v1/western/synastry
3 credits · Secret key (test or live) · getWesternSynastry · Page for this operation
Request body
person_aBirth 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.
person_bBirth 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.
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"aspectsarray of stringorbsobjectYour own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.
conjunctionnumber≥ 0 · ≤ 15
oppositionnumber≥ 0 · ≤ 15
trinenumber≥ 0 · ≤ 15
squarenumber≥ 0 · ≤ 15
sextilenumber≥ 0 · ≤ 15
quincunxnumber≥ 0 · ≤ 15
semisextilenumber≥ 0 · ≤ 15
semisquarenumber≥ 0 · ≤ 15
sesquiquadratenumber≥ 0 · ≤ 15
quintilenumber≥ 0 · ≤ 15
biquintilenumber≥ 0 · ≤ 15
No other fields are accepted.
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:
framestring requiredcountinteger requiredaspectsarray of object requiredastring requiredbstring requiredaspectstring requiredone of
conjunction,opposition,trine,square,sextile,quincunx,semisextile,semisquare,sesquiquadrate,quintile,biquintileanglenumber requiredorbnumber requiredapplyingboolean required
a_in_b_housesarray of object or null requiredOne of:
- array of object
Fields
planetstring requiredhouseinteger required
- null
- array of object
b_in_a_housesarray of object or null requiredOne of:
- array of object
Fields
planetstring requiredhouseinteger required
- null
- array of object
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/synastry' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/synastry", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"person_a": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209
}
},
"person_b": {
"date": "1992-03-02",
"time": "14:10",
"place": {
"latitude": 19.076,
"longitude": 72.8777
}
}
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"person_a": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209,
},
},
"person_b": {
"date": "1992-03-02",
"time": "14:10",
"place": {
"latitude": 19.076,
"longitude": 72.8777,
},
},
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/synastry",
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/western/synastry');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 11,618 characters
{
"data": {
"frame": "tropical",
"count": 62,
"aspects": [
{
"a": "moon",
"b": "sun",
"aspect": "sextile",
"angle": 60,
"orb": 0.2,
"applying": true
},
{
"a": "neptune",
"b": "sun",
"aspect": "sextile",
"angle": 60,
"orb": 0.22,
"applying": true
},
{
"a": "mercury",
"b": "uranus",
"aspect": "trine",
"angle": 120,
"orb": 0.41,
"applying": false
},
{
"a": "pluto",
"b": "venus",
"aspect": "square",
"angle": 90,
"orb": 0.57,
"applying": false
},
{
"a": "mercury",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 0.94,
"applying": true
},
{
"a": "moon",
"b": "ascendant",
"aspect": "sextile",
"angle": 60,
"orb": 1.06,
"applying": false
},
{
"a": "moon",
"b": "saturn",
"aspect": "square",
"angle": 90,
"orb": 1.19,
"applying": true
},
{
"a": "jupiter",
"b": "mercury",
"aspect": "trine",
"angle": 120,
"orb": 1.36,
"applying": true
},
{
"a": "venus",
"b": "mercury",
"aspect": "trine",
"angle": 120,
"orb": 1.42,
"applying": true
},
{
"a": "neptune",
"b": "ascendant",
"aspect": "opposition",
"angle": 180,
"orb": 1.47,
"applying": true
},
{
"a": "mars",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 1.65,
"applying": false
},
{
"a": "saturn",
"b": "neptune",
"aspect": "conjunction",
"angle": 0,
"orb": 1.69,
"applying": true
},
{
"a": "moon",
"b": "mars",
"aspect": "square",
"angle": 90,
"orb": 1.72,
"applying": false
},
{
"a": "midheaven",
"b": "mercury",
"aspect": "sextile",
"angle": 60,
"orb": 1.76,
"applying": false
},
{
"a": "uranus",
"b": "north_node",
"aspect": "conjunction",
"angle": 0,
"orb": 1.87,
"applying": true
},
{
"a": "pluto",
"b": "uranus",
"aspect": "sextile",
"angle": 60,
"orb": 1.9,
"applying": false
},
{
"a": "pluto",
"b": "saturn",
"aspect": "square",
"angle": 90,
"orb": 2.05,
"applying": true
},
{
"a": "mars",
"b": "moon",
"aspect": "square",
"angle": 90,
"orb": 2.17,
"applying": true
},
{
"a": "sun",
"b": "moon",
"aspect": "opposition",
"angle": 180,
"orb": 2.26,
"applying": true
},
{
"a": "moon",
"b": "jupiter",
"aspect": "trine",
"angle": 120,
"orb": 2.45,
"applying": false
},
{
"a": "uranus",
"b": "midheaven",
"aspect": "square",
"angle": 90,
"orb": 2.47,
"applying": true
},
{
"a": "pluto",
"b": "moon",
"aspect": "square",
"angle": 90,
"orb": 2.73,
"applying": false
},
{
"a": "midheaven",
"b": "pluto",
"aspect": "opposition",
"angle": 180,
"orb": 2.81,
"applying": false
},
{
"a": "neptune",
"b": "jupiter",
"aspect": "trine",
"angle": 120,
"orb": 2.87,
"applying": false
},
{
"a": "north_node",
"b": "mars",
"aspect": "conjunction",
"angle": 0,
"orb": 2.89,
"applying": false
},
{
"a": "sun",
"b": "pluto",
"aspect": "square",
"angle": 90,
"orb": 2.9,
"applying": true
},
{
"a": "saturn",
"b": "pluto",
"aspect": "sextile",
"angle": 60,
"orb": 2.94,
"applying": false
},
{
"a": "mars",
"b": "pluto",
"aspect": "opposition",
"angle": 180,
"orb": 2.99,
"applying": true
},
{
"a": "mars",
"b": "uranus",
"aspect": "trine",
"angle": 120,
"orb": 3,
"applying": false
},
{
"a": "saturn",
"b": "uranus",
"aspect": "conjunction",
"angle": 0,
"orb": 3.04,
"applying": true
},
{
"a": "pluto",
"b": "sun",
"aspect": "trine",
"angle": 120,
"orb": 3.04,
"applying": true
},
{
"a": "pluto",
"b": "neptune",
"aspect": "sextile",
"angle": 60,
"orb": 3.25,
"applying": false
},
{
"a": "uranus",
"b": "jupiter",
"aspect": "trine",
"angle": 120,
"orb": 3.34,
"applying": true
},
{
"a": "north_node",
"b": "midheaven",
"aspect": "sextile",
"angle": 60,
"orb": 3.66,
"applying": true
},
{
"a": "moon",
"b": "venus",
"aspect": "square",
"angle": 90,
"orb": 3.81,
"applying": true
},
{
"a": "moon",
"b": "north_node",
"aspect": "trine",
"angle": 120,
"orb": 3.93,
"applying": false
},
{
"a": "pluto",
"b": "ascendant",
"aspect": "trine",
"angle": 120,
"orb": 4.29,
"applying": false
},
{
"a": "mars",
"b": "venus",
"aspect": "square",
"angle": 90,
"orb": 4.33,
"applying": true
},
{
"a": "neptune",
"b": "north_node",
"aspect": "conjunction",
"angle": 0,
"orb": 4.34,
"applying": false
},
{
"a": "sun",
"b": "venus",
"aspect": "opposition",
"angle": 180,
"orb": 4.41,
"applying": true
},
{
"a": "venus",
"b": "midheaven",
"aspect": "trine",
"angle": 120,
"orb": 4.63,
"applying": true
},
{
"a": "jupiter",
"b": "midheaven",
"aspect": "trine",
"angle": 120,
"orb": 4.69,
"applying": true
},
{
"a": "neptune",
"b": "uranus",
"aspect": "conjunction",
"angle": 0,
"orb": 4.72,
"applying": false
},
{
"a": "uranus",
"b": "ascendant",
"aspect": "opposition",
"angle": 180,
"orb": 4.74,
"applying": false
},
{
"a": "pluto",
"b": "mars",
"aspect": "square",
"angle": 90,
"orb": 4.95,
"applying": true
},
{
"a": "ascendant",
"b": "pluto",
"aspect": "square",
"angle": 90,
"orb": 5.06,
"applying": false
},
{
"a": "moon",
"b": "uranus",
"aspect": "trine",
"angle": 120,
"orb": 5.13,
"applying": true
},
{
"a": "mercury",
"b": "sun",
"aspect": "opposition",
"angle": 180,
"orb": 5.34,
"applying": true
},
{
"a": "north_node",
"b": "saturn",
"aspect": "conjunction",
"angle": 0,
"orb": 5.79,
"applying": false
},
{
"a": "jupiter",
"b": "pluto",
"aspect": "trine",
"angle": 120,
"orb": 5.93,
"applying": false
},
{
"a": "moon",
"b": "moon",
"aspect": "square",
"angle": 90,
"orb": 5.96,
"applying": true
},
{
"a": "venus",
"b": "pluto",
"aspect": "trine",
"angle": 120,
"orb": 5.98,
"applying": false
},
{
"a": "uranus",
"b": "sun",
"aspect": "sextile",
"angle": 60,
"orb": 6,
"applying": false
},
{
"a": "neptune",
"b": "neptune",
"aspect": "conjunction",
"angle": 0,
"orb": 6.07,
"applying": false
},
{
"a": "moon",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 6.48,
"applying": true
},
{
"a": "mars",
"b": "saturn",
"aspect": "square",
"angle": 90,
"orb": 6.94,
"applying": false
},
{
"a": "sun",
"b": "saturn",
"aspect": "opposition",
"angle": 180,
"orb": 7.03,
"applying": false
},
{
"a": "midheaven",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 7.44,
"applying": true
},
{
"a": "pluto",
"b": "pluto",
"aspect": "conjunction",
"angle": 0,
"orb": 7.88,
"applying": true
},
{
"a": "midheaven",
"b": "moon",
"aspect": "square",
"angle": 90,
"orb": 7.96,
"applying": true
},
{
"a": "mercury",
"b": "jupiter",
"aspect": "conjunction",
"angle": 0,
"orb": 7.99,
"applying": false
},
{
"a": "sun",
"b": "mars",
"aspect": "opposition",
"angle": 180,
"orb": 9.93,
"applying": false
}
],
"a_in_b_houses": [
{
"planet": "sun",
"house": 2
},
{
"planet": "moon",
"house": 11
},
{
"planet": "mercury",
"house": 3
},
{
"planet": "venus",
"house": 1
},
{
"planet": "mars",
"house": 11
},
{
"planet": "jupiter",
"house": 1
},
{
"planet": "saturn",
"house": 7
},
{
"planet": "uranus",
"house": 6
},
{
"planet": "neptune",
"house": 7
},
{
"planet": "pluto",
"house": 5
},
{
"planet": "north_node",
"house": 8
}
],
"b_in_a_houses": [
{
"planet": "sun",
"house": 7
},
{
"planet": "moon",
"house": 6
},
{
"planet": "mercury",
"house": 8
},
{
"planet": "venus",
"house": 6
},
{
"planet": "mars",
"house": 6
},
{
"planet": "jupiter",
"house": 1
},
{
"planet": "saturn",
"house": 6
},
{
"planet": "uranus",
"house": 5
},
{
"planet": "neptune",
"house": 5
},
{
"planet": "pluto",
"house": 3
},
{
"planet": "north_node",
"house": 5
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 3
},
"warnings": []
}Try it
A midpoint composite chart for two people
POST/v1/western/composite
3 credits · Secret key (test or live) · getWesternComposite · Page for this operation
Each point is the midpoint of the shorter arc between the two charts. Both birth times are required.
Request body
person_aBirth 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.
person_bBirth 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.
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"aspectsarray of stringorbsobjectYour own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.
conjunctionnumber≥ 0 · ≤ 15
oppositionnumber≥ 0 · ≤ 15
trinenumber≥ 0 · ≤ 15
squarenumber≥ 0 · ≤ 15
sextilenumber≥ 0 · ≤ 15
quincunxnumber≥ 0 · ≤ 15
semisextilenumber≥ 0 · ≤ 15
semisquarenumber≥ 0 · ≤ 15
sesquiquadratenumber≥ 0 · ≤ 15
quintilenumber≥ 0 · ≤ 15
biquintilenumber≥ 0 · ≤ 15
No other fields are accepted.
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:
framestring requiredmethodstring requiredone of
midpointhouse_systemstring requiredplanetsarray of object requiredidstring requirednamestring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredhouseinteger required
anglesobject requiredascendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
midheavenobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
housesarray of object requiredhouseinteger requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
aspectsarray of object requiredastring requiredbstring requiredaspectstring requiredone of
conjunction,opposition,trine,square,sextile,quincunx,semisextile,semisquare,sesquiquadrate,quintile,biquintileanglenumber requiredorbnumber required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/composite' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/composite", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"person_a": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209
}
},
"person_b": {
"date": "1992-03-02",
"time": "14:10",
"place": {
"latitude": 19.076,
"longitude": 72.8777
}
}
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"person_a": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209,
},
},
"person_b": {
"date": "1992-03-02",
"time": "14:10",
"place": {
"latitude": 19.076,
"longitude": 72.8777,
},
},
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/composite",
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/western/composite');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 8,108 characters
{
"data": {
"frame": "tropical",
"method": "midpoint",
"house_system": "placidus",
"planets": [
{
"id": "sun",
"name": "Sun",
"longitude": 61.0349,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 1.0349,
"formatted": "1°02′ Gemini",
"house": 10
},
{
"id": "moon",
"name": "Moon",
"longitude": 359.807,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 29.807,
"formatted": "29°48′ Pisces",
"house": 9
},
{
"id": "mercury",
"name": "Mercury",
"longitude": 82.4396,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 22.4396,
"formatted": "22°26′ Gemini",
"house": 11
},
{
"id": "venus",
"name": "Venus",
"longitude": 37.2796,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 7.2796,
"formatted": "7°16′ Taurus",
"house": 10
},
{
"id": "mars",
"name": "Mars",
"longitude": 0.0333,
"sign": "aries",
"sign_name": "Aries",
"degree": 0.0333,
"formatted": "0°02′ Aries",
"house": 9
},
{
"id": "jupiter",
"name": "Jupiter",
"longitude": 139.1223,
"sign": "leo",
"sign_name": "Leo",
"degree": 19.1223,
"formatted": "19°07′ Leo",
"house": 1
},
{
"id": "saturn",
"name": "Saturn",
"longitude": 301.5082,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 1.5082,
"formatted": "1°30′ Aquarius",
"house": 6
},
{
"id": "uranus",
"name": "Uranus",
"longitude": 281.4949,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 11.4949,
"formatted": "11°29′ Capricorn",
"house": 6
},
{
"id": "neptune",
"name": "Neptune",
"longitude": 285.2753,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 15.2753,
"formatted": "15°16′ Capricorn",
"house": 6
},
{
"id": "pluto",
"name": "Pluto",
"longitude": 229.0032,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 19.0032,
"formatted": "19°00′ Scorpio",
"house": 4
},
{
"id": "north_node",
"name": "North Node",
"longitude": 292.5615,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 22.5615,
"formatted": "22°33′ Capricorn",
"house": 6
},
{
"id": "south_node",
"name": "South Node",
"longitude": 112.5615,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 22.5615,
"formatted": "22°33′ Cancer",
"house": 12
}
],
"angles": {
"ascendant": {
"longitude": 124.3861,
"sign": "leo",
"sign_name": "Leo",
"degree": 4.3861,
"formatted": "4°23′ Leo"
},
"midheaven": {
"longitude": 29.6574,
"sign": "aries",
"sign_name": "Aries",
"degree": 29.6574,
"formatted": "29°39′ Aries"
}
},
"houses": [
{
"house": 1,
"longitude": 124.3861,
"sign": "leo",
"sign_name": "Leo",
"degree": 4.3861,
"formatted": "4°23′ Leo"
},
{
"house": 2,
"longitude": 149.6263,
"sign": "leo",
"sign_name": "Leo",
"degree": 29.6263,
"formatted": "29°37′ Leo"
},
{
"house": 3,
"longitude": 178.0159,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 28.0159,
"formatted": "28°00′ Virgo"
},
{
"house": 4,
"longitude": 209.6574,
"sign": "libra",
"sign_name": "Libra",
"degree": 29.6574,
"formatted": "29°39′ Libra"
},
{
"house": 5,
"longitude": 242.7025,
"sign": "sagittarius",
"sign_name": "Sagittarius",
"degree": 2.7025,
"formatted": "2°42′ Sagittarius"
},
{
"house": 6,
"longitude": 274.6522,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 4.6522,
"formatted": "4°39′ Capricorn"
},
{
"house": 7,
"longitude": 304.3861,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 4.3861,
"formatted": "4°23′ Aquarius"
},
{
"house": 8,
"longitude": 329.6263,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 29.6263,
"formatted": "29°37′ Aquarius"
},
{
"house": 9,
"longitude": 358.0159,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 28.0159,
"formatted": "28°00′ Pisces"
},
{
"house": 10,
"longitude": 29.6574,
"sign": "aries",
"sign_name": "Aries",
"degree": 29.6574,
"formatted": "29°39′ Aries"
},
{
"house": 11,
"longitude": 62.7025,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 2.7025,
"formatted": "2°42′ Gemini"
},
{
"house": 12,
"longitude": 94.6522,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 4.6522,
"formatted": "4°39′ Cancer"
}
],
"aspects": [
{
"a": "jupiter",
"b": "pluto",
"aspect": "square",
"angle": 90,
"orb": 0.12
},
{
"a": "moon",
"b": "mars",
"aspect": "conjunction",
"angle": 0,
"orb": 0.23
},
{
"a": "sun",
"b": "saturn",
"aspect": "trine",
"angle": 120,
"orb": 0.47
},
{
"a": "sun",
"b": "mars",
"aspect": "sextile",
"angle": 60,
"orb": 1
},
{
"a": "sun",
"b": "moon",
"aspect": "sextile",
"angle": 60,
"orb": 1.23
},
{
"a": "mars",
"b": "saturn",
"aspect": "sextile",
"angle": 60,
"orb": 1.47
},
{
"a": "moon",
"b": "saturn",
"aspect": "sextile",
"angle": 60,
"orb": 1.7
},
{
"a": "mercury",
"b": "jupiter",
"aspect": "sextile",
"angle": 60,
"orb": 3.32
},
{
"a": "pluto",
"b": "north_node",
"aspect": "sextile",
"angle": 60,
"orb": 3.56
},
{
"a": "neptune",
"b": "pluto",
"aspect": "sextile",
"angle": 60,
"orb": 3.73
},
{
"a": "uranus",
"b": "neptune",
"aspect": "conjunction",
"angle": 0,
"orb": 3.78
},
{
"a": "venus",
"b": "uranus",
"aspect": "trine",
"angle": 120,
"orb": 4.22
},
{
"a": "venus",
"b": "saturn",
"aspect": "square",
"angle": 90,
"orb": 5.77
},
{
"a": "neptune",
"b": "north_node",
"aspect": "conjunction",
"angle": 0,
"orb": 7.29
},
{
"a": "moon",
"b": "mercury",
"aspect": "square",
"angle": 90,
"orb": 7.37
},
{
"a": "venus",
"b": "neptune",
"aspect": "trine",
"angle": 120,
"orb": 8
},
{
"a": "sun",
"b": "north_node",
"aspect": "trine",
"angle": 120,
"orb": 8.47
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 3
},
"warnings": []
}Try it
Exact transits to a birth chart, sign ingresses and stations over a range
POST/v1/western/transits
3 credits · Secret key (test or live) · getWesternTransits · Page for this operation
Times are UTC, to the minute. At most 366 days, or 31 with the Moon.
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 366 days from from, or 31 with the Moon.
e.g.
"1990-08-13"planetsarray of stringinclude_moonbooleandefault
falseaspectsarray of stringhouse_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"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"framestring requiredcountinteger requiredeventsarray of object requiredatstring (date-time) requiredkindstring requiredone of
aspect,sign_ingress,stationplanetstring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredretrogradeboolean requiredaspectstringone of
conjunction,opposition,trine,square,sextile,quincunx,semisextile,semisquare,sesquiquadrate,quintile,biquintileanglenumbernatal_pointstringtransit_houseinteger or nullOne of:
- integer
- null
directionstringone of
retrograde,direct
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/transits' \
-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":"2026-11-30","planets":["mars","jupiter","saturn"]}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/transits", {
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": "2026-11-30",
"planets": [
"mars",
"jupiter",
"saturn"
]
}),
});
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": "2026-11-30",
"planets": [
"mars",
"jupiter",
"saturn",
],
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/transits",
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/western/transits');
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":"2026-11-30","planets":["mars","jupiter","saturn"]}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 2,580 characters
{
"data": {
"from": "2026-11-01",
"to": "2026-11-30",
"frame": "tropical",
"count": 6,
"events": [
{
"at": "2026-11-03T16:14:00.000Z",
"kind": "aspect",
"planet": "mars",
"aspect": "square",
"angle": 90,
"natal_point": "mars",
"longitude": 139.9577,
"sign": "leo",
"sign_name": "Leo",
"degree": 19.9577,
"formatted": "19°57′ Leo",
"retrograde": false,
"transit_house": 12
},
{
"at": "2026-11-03T20:27:00.000Z",
"kind": "aspect",
"planet": "mars",
"aspect": "conjunction",
"angle": 0,
"natal_point": "sun",
"longitude": 140.0446,
"sign": "leo",
"sign_name": "Leo",
"degree": 20.0446,
"formatted": "20°02′ Leo",
"retrograde": false,
"transit_house": 12
},
{
"at": "2026-11-14T15:49:00.000Z",
"kind": "aspect",
"planet": "jupiter",
"aspect": "square",
"angle": 90,
"natal_point": "midheaven",
"longitude": 145.7525,
"sign": "leo",
"sign_name": "Leo",
"degree": 25.7525,
"formatted": "25°45′ Leo",
"retrograde": false,
"transit_house": 12
},
{
"at": "2026-11-15T23:04:00.000Z",
"kind": "aspect",
"planet": "mars",
"aspect": "square",
"angle": 90,
"natal_point": "midheaven",
"longitude": 145.7528,
"sign": "leo",
"sign_name": "Leo",
"degree": 25.7528,
"formatted": "25°45′ Leo",
"retrograde": false,
"transit_house": 12
},
{
"at": "2026-11-21T03:12:00.000Z",
"kind": "aspect",
"planet": "mars",
"aspect": "conjunction",
"angle": 0,
"natal_point": "ascendant",
"longitude": 148.004,
"sign": "leo",
"sign_name": "Leo",
"degree": 28.004,
"formatted": "28°00′ Leo",
"retrograde": false,
"transit_house": 1
},
{
"at": "2026-11-25T23:38:00.000Z",
"kind": "sign_ingress",
"planet": "mars",
"longitude": 150.0002,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 0.0002,
"formatted": "0°00′ Virgo",
"retrograde": false
}
]
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 3
},
"warnings": []
}Try it
A secondary progressed chart for a date, with solar arc angles
POST/v1/western/progressions
2 credits · Secret key (test or live) · getWesternProgressions · Page for this operation
One day after birth for each year of life. The midheaven moves by the solar arc, a named choice among several in use.
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.
datestring (date) requirede.g.
"1990-08-13"house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"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:
datestring (date) requirede.g.
"1990-08-13"age_yearsnumber requiredmethodstring requiredprogressed_momentstring (date-time) requiredsolar_arcnumber requiredangles_methodstring requiredchartWesternChart requiredmomentstring (date-time) requiredframestring requiredone of
tropicalhouse_systemstring or null requiredOne of:
- string
- null
planetsarray of object requiredFields
idstring requirednamestring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredspeednumber requiredDegrees a day.
retrogradeboolean requiredhouseinteger or null requiredOne of:
- integer
- null
dignitystring or null requiredOne of:
- string
- null
anglesobject or null requiredOne of:
- object
Fields
ascendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
midheavenobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
descendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
imum_coeliobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- object
housesarray of object or null requiredOne of:
- array of object
Fields
houseinteger requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- array of object
balanceobject requiredFields
elementsobject requiredFields
fireinteger requiredearthinteger requiredairinteger requiredwaterinteger required
modalitiesobject requiredFields
cardinalinteger requiredfixedinteger requiredmutableinteger required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/progressions' \
-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}},"date":"2026-11-02"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/progressions", {
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
}
},
"date": "2026-11-02"
}),
});
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,
},
},
"date": "2026-11-02",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/progressions",
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/western/progressions');
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}},"date":"2026-11-02"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 8,187 characters
{
"data": {
"date": "2026-11-02",
"age_years": 36.222,
"method": "secondary",
"progressed_moment": "1990-09-18T06:20:17.552Z",
"solar_arc": 35.0433,
"angles_method": "solar_arc",
"chart": {
"moment": "1990-09-18T06:20:17.552Z",
"frame": "tropical",
"house_system": "placidus",
"planets": [
{
"id": "sun",
"name": "Sun",
"longitude": 175.0874,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 25.0874,
"formatted": "25°05′ Virgo",
"speed": 0.9764,
"retrograde": false,
"house": 12,
"dignity": null
},
{
"id": "moon",
"name": "Moon",
"longitude": 165.9,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 15.9,
"formatted": "15°54′ Virgo",
"speed": 13.0205,
"retrograde": false,
"house": 12,
"dignity": null
},
{
"id": "mercury",
"name": "Mercury",
"longitude": 159.6364,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 9.6364,
"formatted": "9°38′ Virgo",
"speed": 0.1214,
"retrograde": false,
"house": 12,
"dignity": "domicile"
},
{
"id": "venus",
"name": "Venus",
"longitude": 163.5207,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 13.5207,
"formatted": "13°31′ Virgo",
"speed": 1.2415,
"retrograde": false,
"house": 12,
"dignity": "fall"
},
{
"id": "mars",
"name": "Mars",
"longitude": 67.8484,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 7.8484,
"formatted": "7°50′ Gemini",
"speed": 0.3761,
"retrograde": false,
"house": 9,
"dignity": null
},
{
"id": "jupiter",
"name": "Jupiter",
"longitude": 126.1351,
"sign": "leo",
"sign_name": "Leo",
"degree": 6.1351,
"formatted": "6°08′ Leo",
"speed": 0.1801,
"retrograde": false,
"house": 11,
"dignity": null
},
{
"id": "saturn",
"name": "Saturn",
"longitude": 288.7244,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 18.7244,
"formatted": "18°43′ Capricorn",
"speed": -0.0082,
"retrograde": true,
"house": 4,
"dignity": "domicile"
},
{
"id": "uranus",
"name": "Uranus",
"longitude": 275.6044,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 5.6044,
"formatted": "5°36′ Capricorn",
"speed": 0.0029,
"retrograde": false,
"house": 4,
"dignity": null
},
{
"id": "neptune",
"name": "Neptune",
"longitude": 281.8059,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 11.8059,
"formatted": "11°48′ Capricorn",
"speed": -0.0031,
"retrograde": true,
"house": 4,
"dignity": null
},
{
"id": "pluto",
"name": "Pluto",
"longitude": 225.7783,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 15.7783,
"formatted": "15°46′ Scorpio",
"speed": 0.0285,
"retrograde": false,
"house": 2,
"dignity": null
},
{
"id": "north_node",
"name": "North Node",
"longitude": 306.3914,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 6.3914,
"formatted": "6°23′ Aquarius",
"speed": -0.1054,
"retrograde": true,
"house": 5,
"dignity": null
},
{
"id": "south_node",
"name": "South Node",
"longitude": 126.3914,
"sign": "leo",
"sign_name": "Leo",
"degree": 6.3914,
"formatted": "6°23′ Leo",
"speed": -0.1054,
"retrograde": true,
"house": 11,
"dignity": null
}
],
"angles": {
"ascendant": {
"longitude": 180.7646,
"sign": "libra",
"sign_name": "Libra",
"degree": 0.7646,
"formatted": "0°45′ Libra"
},
"midheaven": {
"longitude": 90.7958,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 0.7958,
"formatted": "0°47′ Cancer"
},
"descendant": {
"longitude": 0.7646,
"sign": "aries",
"sign_name": "Aries",
"degree": 0.7646,
"formatted": "0°45′ Aries"
},
"imum_coeli": {
"longitude": 270.7958,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 0.7958,
"formatted": "0°47′ Capricorn"
}
},
"houses": [
{
"house": 1,
"longitude": 180.7646,
"sign": "libra",
"sign_name": "Libra",
"degree": 0.7646,
"formatted": "0°45′ Libra"
},
{
"house": 2,
"longitude": 208.8232,
"sign": "libra",
"sign_name": "Libra",
"degree": 28.8232,
"formatted": "28°49′ Libra"
},
{
"house": 3,
"longitude": 239.2622,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 29.2622,
"formatted": "29°15′ Scorpio"
},
{
"house": 4,
"longitude": 270.7958,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 0.7958,
"formatted": "0°47′ Capricorn"
},
{
"house": 5,
"longitude": 302.3396,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 2.3396,
"formatted": "2°20′ Aquarius"
},
{
"house": 6,
"longitude": 332.774,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 2.774,
"formatted": "2°46′ Pisces"
},
{
"house": 7,
"longitude": 0.7646,
"sign": "aries",
"sign_name": "Aries",
"degree": 0.7646,
"formatted": "0°45′ Aries"
},
{
"house": 8,
"longitude": 28.8232,
"sign": "aries",
"sign_name": "Aries",
"degree": 28.8232,
"formatted": "28°49′ Aries"
},
{
"house": 9,
"longitude": 59.2622,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 29.2622,
"formatted": "29°15′ Taurus"
},
{
"house": 10,
"longitude": 90.7958,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 0.7958,
"formatted": "0°47′ Cancer"
},
{
"house": 11,
"longitude": 122.3396,
"sign": "leo",
"sign_name": "Leo",
"degree": 2.3396,
"formatted": "2°20′ Leo"
},
{
"house": 12,
"longitude": 152.774,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 2.774,
"formatted": "2°46′ Virgo"
}
],
"balance": {
"elements": {
"fire": 1,
"earth": 7,
"air": 1,
"water": 1
},
"modalities": {
"cardinal": 3,
"fixed": 2,
"mutable": 5
}
}
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
The tropical solar return chart for a year, at the birth place or another
POST/v1/western/solar-return
2 credits · Secret key (test or live) · getWesternSolarReturn · 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.
yearinteger required≥ 1901 · ≤ 2100
placeCoordinates or object or objectCoordinates, 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
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"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:
kindstring requiredone of
solar,lunaryearintegerafterstring (date)e.g.
"1990-08-13"natal_longitudenumber requiredmomentstring (date-time) requiredplaceobject requiredlatitudenumber requiredlongitudenumber required
chartWesternChart requiredmomentstring (date-time) requiredframestring requiredone of
tropicalhouse_systemstring or null requiredOne of:
- string
- null
planetsarray of object requiredFields
idstring requirednamestring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredspeednumber requiredDegrees a day.
retrogradeboolean requiredhouseinteger or null requiredOne of:
- integer
- null
dignitystring or null requiredOne of:
- string
- null
anglesobject or null requiredOne of:
- object
Fields
ascendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
midheavenobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
descendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
imum_coeliobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- object
housesarray of object or null requiredOne of:
- array of object
Fields
houseinteger requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- array of object
balanceobject requiredFields
elementsobject requiredFields
fireinteger requiredearthinteger requiredairinteger requiredwaterinteger required
modalitiesobject requiredFields
cardinalinteger requiredfixedinteger requiredmutableinteger required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/solar-return' \
-H 'Authorization: Bearer al_test_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"year":2026}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/solar-return", {
method: "POST",
headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
"birth": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209
}
},
"year": 2026
}),
});
console.log(JSON.stringify(await res.json(), null, 2));Python
import json
import urllib.error
import urllib.request
body = {
"birth": {
"date": "1990-08-13",
"time": "06:30",
"place": {
"latitude": 28.6139,
"longitude": 77.209,
},
},
"year": 2026,
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/solar-return",
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/western/solar-return');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"birth":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"year":2026}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 8,160 characters
{
"data": {
"kind": "solar",
"year": 2026,
"natal_longitude": 140.0441,
"moment": "2026-08-12T17:55:00.000Z",
"place": {
"latitude": 28.6139,
"longitude": 77.209
},
"chart": {
"moment": "2026-08-12T17:55:00.000Z",
"frame": "tropical",
"house_system": "placidus",
"planets": [
{
"id": "sun",
"name": "Sun",
"longitude": 140.0447,
"sign": "leo",
"sign_name": "Leo",
"degree": 20.0447,
"formatted": "20°02′ Leo",
"speed": 0.9603,
"retrograde": false,
"house": 4,
"dignity": "domicile"
},
{
"id": "moon",
"name": "Moon",
"longitude": 140.217,
"sign": "leo",
"sign_name": "Leo",
"degree": 20.217,
"formatted": "20°13′ Leo",
"speed": 14.4264,
"retrograde": false,
"house": 4,
"dignity": null
},
{
"id": "mercury",
"name": "Mercury",
"longitude": 125.1323,
"sign": "leo",
"sign_name": "Leo",
"degree": 5.1323,
"formatted": "5°07′ Leo",
"speed": 1.7716,
"retrograde": false,
"house": 4,
"dignity": null
},
{
"id": "venus",
"name": "Venus",
"longitude": 185.9036,
"sign": "libra",
"sign_name": "Libra",
"degree": 5.9036,
"formatted": "5°54′ Libra",
"speed": 0.9753,
"retrograde": false,
"house": 5,
"dignity": "domicile"
},
{
"id": "mars",
"name": "Mars",
"longitude": 90.9213,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 0.9213,
"formatted": "0°55′ Cancer",
"speed": 0.6611,
"retrograde": false,
"house": 2,
"dignity": "fall"
},
{
"id": "jupiter",
"name": "Jupiter",
"longitude": 129.553,
"sign": "leo",
"sign_name": "Leo",
"degree": 9.553,
"formatted": "9°33′ Leo",
"speed": 0.2194,
"retrograde": false,
"house": 4,
"dignity": null
},
{
"id": "saturn",
"name": "Saturn",
"longitude": 14.505,
"sign": "aries",
"sign_name": "Aries",
"degree": 14.505,
"formatted": "14°30′ Aries",
"speed": -0.0284,
"retrograde": true,
"house": 12,
"dignity": "fall"
},
{
"id": "uranus",
"name": "Uranus",
"longitude": 65.3426,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 5.3426,
"formatted": "5°20′ Gemini",
"speed": 0.024,
"retrograde": false,
"house": 1,
"dignity": null
},
{
"id": "neptune",
"name": "Neptune",
"longitude": 4.082,
"sign": "aries",
"sign_name": "Aries",
"degree": 4.082,
"formatted": "4°04′ Aries",
"speed": -0.0179,
"retrograde": true,
"house": 11,
"dignity": null
},
{
"id": "pluto",
"name": "Pluto",
"longitude": 303.9058,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 3.9058,
"formatted": "3°54′ Aquarius",
"speed": -0.0223,
"retrograde": true,
"house": 9,
"dignity": null
},
{
"id": "north_node",
"name": "North Node",
"longitude": 329.7885,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 29.7885,
"formatted": "29°47′ Aquarius",
"speed": -0.0054,
"retrograde": true,
"house": 10,
"dignity": null
},
{
"id": "south_node",
"name": "South Node",
"longitude": 149.7885,
"sign": "leo",
"sign_name": "Leo",
"degree": 29.7885,
"formatted": "29°47′ Leo",
"speed": -0.0054,
"retrograde": true,
"house": 4,
"dignity": null
}
],
"angles": {
"ascendant": {
"longitude": 49.5902,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 19.5902,
"formatted": "19°35′ Taurus"
},
"midheaven": {
"longitude": 304.8125,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 4.8125,
"formatted": "4°48′ Aquarius"
},
"descendant": {
"longitude": 229.5902,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 19.5902,
"formatted": "19°35′ Scorpio"
},
"imum_coeli": {
"longitude": 124.8125,
"sign": "leo",
"sign_name": "Leo",
"degree": 4.8125,
"formatted": "4°48′ Leo"
}
},
"houses": [
{
"house": 1,
"longitude": 49.5902,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 19.5902,
"formatted": "19°35′ Taurus"
},
{
"house": 2,
"longitude": 77.1166,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 17.1166,
"formatted": "17°06′ Gemini"
},
{
"house": 3,
"longitude": 100.6864,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 10.6864,
"formatted": "10°41′ Cancer"
},
{
"house": 4,
"longitude": 124.8125,
"sign": "leo",
"sign_name": "Leo",
"degree": 4.8125,
"formatted": "4°48′ Leo"
},
{
"house": 5,
"longitude": 153.3373,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 3.3373,
"formatted": "3°20′ Virgo"
},
{
"house": 6,
"longitude": 189.2428,
"sign": "libra",
"sign_name": "Libra",
"degree": 9.2428,
"formatted": "9°14′ Libra"
},
{
"house": 7,
"longitude": 229.5902,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 19.5902,
"formatted": "19°35′ Scorpio"
},
{
"house": 8,
"longitude": 257.1166,
"sign": "sagittarius",
"sign_name": "Sagittarius",
"degree": 17.1166,
"formatted": "17°06′ Sagittarius"
},
{
"house": 9,
"longitude": 280.6864,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 10.6864,
"formatted": "10°41′ Capricorn"
},
{
"house": 10,
"longitude": 304.8125,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 4.8125,
"formatted": "4°48′ Aquarius"
},
{
"house": 11,
"longitude": 333.3373,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 3.3373,
"formatted": "3°20′ Pisces"
},
{
"house": 12,
"longitude": 9.2428,
"sign": "aries",
"sign_name": "Aries",
"degree": 9.2428,
"formatted": "9°14′ Aries"
}
],
"balance": {
"elements": {
"fire": 6,
"earth": 0,
"air": 3,
"water": 1
},
"modalities": {
"cardinal": 4,
"fixed": 5,
"mutable": 1
}
}
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}Try it
The next tropical lunar return chart after a date
POST/v1/western/lunar-return
2 credits · Secret key (test or live) · getWesternLunarReturn · 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.
afterstring (date) requirede.g.
"1990-08-13"placeCoordinates or object or objectCoordinates, 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
house_systemstringone of
placidus,equal,whole_sign,porphyry· default"placidus"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:
kindstring requiredone of
solar,lunaryearintegerafterstring (date)e.g.
"1990-08-13"natal_longitudenumber requiredmomentstring (date-time) requiredplaceobject requiredlatitudenumber requiredlongitudenumber required
chartWesternChart requiredmomentstring (date-time) requiredframestring requiredone of
tropicalhouse_systemstring or null requiredOne of:
- string
- null
planetsarray of object requiredFields
idstring requirednamestring requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring requiredspeednumber requiredDegrees a day.
retrogradeboolean requiredhouseinteger or null requiredOne of:
- integer
- null
dignitystring or null requiredOne of:
- string
- null
anglesobject or null requiredOne of:
- object
Fields
ascendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
midheavenobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
descendantobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
imum_coeliobject requiredFields
longitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- object
housesarray of object or null requiredOne of:
- array of object
Fields
houseinteger requiredlongitudenumber requiredsignstring requiredsign_namestring requireddegreenumber requiredformattedstring required
- null
- array of object
balanceobject requiredFields
elementsobject requiredFields
fireinteger requiredearthinteger requiredairinteger requiredwaterinteger required
modalitiesobject requiredFields
cardinalinteger requiredfixedinteger requiredmutableinteger required
Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.
Example request
curl -X POST 'https://api.astrologics.in/v1/western/lunar-return' \
-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}},"after":"2026-11-02"}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/western/lunar-return", {
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
}
},
"after": "2026-11-02"
}),
});
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,
},
},
"after": "2026-11-02",
}
req = urllib.request.Request(
"https://api.astrologics.in/v1/western/lunar-return",
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/western/lunar-return');
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}},"after":"2026-11-02"}',
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;Example response
200 OK · 8,218 characters
{
"data": {
"kind": "lunar",
"after": "2026-11-02",
"natal_longitude": 41.8257,
"moment": "2026-11-23T05:47:00.000Z",
"place": {
"latitude": 28.6139,
"longitude": 77.209
},
"chart": {
"moment": "2026-11-23T05:47:00.000Z",
"frame": "tropical",
"house_system": "placidus",
"planets": [
{
"id": "sun",
"name": "Sun",
"longitude": 240.9423,
"sign": "sagittarius",
"sign_name": "Sagittarius",
"degree": 0.9423,
"formatted": "0°56′ Sagittarius",
"speed": 1.0101,
"retrograde": false,
"house": 10,
"dignity": null
},
{
"id": "moon",
"name": "Moon",
"longitude": 41.8342,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 11.8342,
"formatted": "11°50′ Taurus",
"speed": 14.6396,
"retrograde": false,
"house": 3,
"dignity": "exaltation"
},
{
"id": "mercury",
"name": "Mercury",
"longitude": 221.6477,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 11.6477,
"formatted": "11°38′ Scorpio",
"speed": 1.1725,
"retrograde": false,
"house": 9,
"dignity": null
},
{
"id": "venus",
"name": "Venus",
"longitude": 204.4768,
"sign": "libra",
"sign_name": "Libra",
"degree": 24.4768,
"formatted": "24°28′ Libra",
"speed": 0.3382,
"retrograde": false,
"house": 9,
"dignity": "domicile"
},
{
"id": "mars",
"name": "Mars",
"longitude": 148.8856,
"sign": "leo",
"sign_name": "Leo",
"degree": 28.8856,
"formatted": "28°53′ Leo",
"speed": 0.4131,
"retrograde": false,
"house": 7,
"dignity": null
},
{
"id": "jupiter",
"name": "Jupiter",
"longitude": 146.3942,
"sign": "leo",
"sign_name": "Leo",
"degree": 26.3942,
"formatted": "26°23′ Leo",
"speed": 0.0624,
"retrograde": false,
"house": 7,
"dignity": null
},
{
"id": "saturn",
"name": "Saturn",
"longitude": 8.2112,
"sign": "aries",
"sign_name": "Aries",
"degree": 8.2112,
"formatted": "8°12′ Aries",
"speed": -0.0313,
"retrograde": true,
"house": 2,
"dignity": "fall"
},
{
"id": "uranus",
"name": "Uranus",
"longitude": 63.7887,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 3.7887,
"formatted": "3°47′ Gemini",
"speed": -0.0419,
"retrograde": true,
"house": 4,
"dignity": null
},
{
"id": "neptune",
"name": "Neptune",
"longitude": 1.7261,
"sign": "aries",
"sign_name": "Aries",
"degree": 1.7261,
"formatted": "1°43′ Aries",
"speed": -0.0109,
"retrograde": true,
"house": 2,
"dignity": null
},
{
"id": "pluto",
"name": "Pluto",
"longitude": 303.4097,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 3.4097,
"formatted": "3°24′ Aquarius",
"speed": 0.0175,
"retrograde": false,
"house": 1,
"dignity": null
},
{
"id": "north_node",
"name": "North Node",
"longitude": 324.6719,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 24.6719,
"formatted": "24°40′ Aquarius",
"speed": -0.1884,
"retrograde": true,
"house": 1,
"dignity": null
},
{
"id": "south_node",
"name": "South Node",
"longitude": 144.6719,
"sign": "leo",
"sign_name": "Leo",
"degree": 24.6719,
"formatted": "24°40′ Leo",
"speed": -0.1884,
"retrograde": true,
"house": 7,
"dignity": null
}
],
"angles": {
"ascendant": {
"longitude": 302.7293,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 2.7293,
"formatted": "2°43′ Aquarius"
},
"midheaven": {
"longitude": 228.6379,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 18.6379,
"formatted": "18°38′ Scorpio"
},
"descendant": {
"longitude": 122.7293,
"sign": "leo",
"sign_name": "Leo",
"degree": 2.7293,
"formatted": "2°43′ Leo"
},
"imum_coeli": {
"longitude": 48.6379,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 18.6379,
"formatted": "18°38′ Taurus"
}
},
"houses": [
{
"house": 1,
"longitude": 302.7293,
"sign": "aquarius",
"sign_name": "Aquarius",
"degree": 2.7293,
"formatted": "2°43′ Aquarius"
},
{
"house": 2,
"longitude": 342.2501,
"sign": "pisces",
"sign_name": "Pisces",
"degree": 12.2501,
"formatted": "12°15′ Pisces"
},
{
"house": 3,
"longitude": 19.0117,
"sign": "aries",
"sign_name": "Aries",
"degree": 19.0117,
"formatted": "19°00′ Aries"
},
{
"house": 4,
"longitude": 48.6379,
"sign": "taurus",
"sign_name": "Taurus",
"degree": 18.6379,
"formatted": "18°38′ Taurus"
},
{
"house": 5,
"longitude": 73.2617,
"sign": "gemini",
"sign_name": "Gemini",
"degree": 13.2617,
"formatted": "13°15′ Gemini"
},
{
"house": 6,
"longitude": 96.5493,
"sign": "cancer",
"sign_name": "Cancer",
"degree": 6.5493,
"formatted": "6°32′ Cancer"
},
{
"house": 7,
"longitude": 122.7293,
"sign": "leo",
"sign_name": "Leo",
"degree": 2.7293,
"formatted": "2°43′ Leo"
},
{
"house": 8,
"longitude": 162.2501,
"sign": "virgo",
"sign_name": "Virgo",
"degree": 12.2501,
"formatted": "12°15′ Virgo"
},
{
"house": 9,
"longitude": 199.0117,
"sign": "libra",
"sign_name": "Libra",
"degree": 19.0117,
"formatted": "19°00′ Libra"
},
{
"house": 10,
"longitude": 228.6379,
"sign": "scorpio",
"sign_name": "Scorpio",
"degree": 18.6379,
"formatted": "18°38′ Scorpio"
},
{
"house": 11,
"longitude": 253.2617,
"sign": "sagittarius",
"sign_name": "Sagittarius",
"degree": 13.2617,
"formatted": "13°15′ Sagittarius"
},
{
"house": 12,
"longitude": 276.5493,
"sign": "capricorn",
"sign_name": "Capricorn",
"degree": 6.5493,
"formatted": "6°32′ Capricorn"
}
],
"balance": {
"elements": {
"fire": 5,
"earth": 1,
"air": 3,
"water": 1
},
"modalities": {
"cardinal": 3,
"fixed": 5,
"mutable": 2
}
}
}
},
"meta": {
"request_id": "req_example",
"api_version": "v1",
"engine_version": "2026.10.10",
"mode": "live",
"credits_charged": 2
},
"warnings": []
}