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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • moment string (date-time) required
  • frame string required

    one of tropical

  • house_system string or null required

    One of:

    1. string
    2. null
  • planets array of object required
    • id string required
    • name string required
    • longitude number required
    • sign string required
    • sign_name string required
    • degree number required
    • formatted string required
    • speed number required

      Degrees a day.

    • retrograde boolean required
    • house integer or null required

      One of:

      1. integer
      2. null
    • dignity string or null required

      One of:

      1. string
      2. null
  • angles object or null required

    One of:

    1. object
      Fields
      • ascendant object required
        Fields
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      • midheaven object required
        Fields
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      • descendant object required
        Fields
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      • imum_coeli object required
        Fields
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
    2. null
  • houses array of object or null required

    One of:

    1. array of object
      Fields
      • house integer required
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
    2. null
  • balance object required
    • elements object required
      Fields
      • fire integer required
      • earth integer required
      • air integer required
      • water integer required
    • modalities object required
      Fields
      • cardinal integer required
      • fixed integer required
      • mutable integer 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • theme string

    one of light, dark · default "light"

  • options object
    • lang string required

      one 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

The chart this example request returns

Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • aspects array of string
  • orbs object

    Your own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.

    • conjunction number

      ≥ 0 · ≤ 15

    • opposition number

      ≥ 0 · ≤ 15

    • trine number

      ≥ 0 · ≤ 15

    • square number

      ≥ 0 · ≤ 15

    • sextile number

      ≥ 0 · ≤ 15

    • quincunx number

      ≥ 0 · ≤ 15

    • semisextile number

      ≥ 0 · ≤ 15

    • semisquare number

      ≥ 0 · ≤ 15

    • sesquiquadrate number

      ≥ 0 · ≤ 15

    • quintile number

      ≥ 0 · ≤ 15

    • biquintile number

      ≥ 0 · ≤ 15

    No other fields are accepted.

  • include_angles boolean

    default true

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • frame string required
  • count integer required
  • aspects array of object required
    • a string required
    • b string required
    • aspect string required

      one of conjunction, opposition, trine, square, sextile, quincunx, semisextile, semisquare, sesquiquadrate, quintile, biquintile

    • angle number required
    • orb number required
    • applying boolean required
  • orbs_used object required
    • conjunction number
    • opposition number
    • trine number
    • square number
    • sextile number
    • quincunx number
    • semisextile number
    • semisquare number
    • sesquiquadrate number
    • quintile number
    • biquintile number
  • sun_moon_extra number required

    Degrees 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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_a Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • person_b Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • aspects array of string
  • orbs object

    Your own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.

    • conjunction number

      ≥ 0 · ≤ 15

    • opposition number

      ≥ 0 · ≤ 15

    • trine number

      ≥ 0 · ≤ 15

    • square number

      ≥ 0 · ≤ 15

    • sextile number

      ≥ 0 · ≤ 15

    • quincunx number

      ≥ 0 · ≤ 15

    • semisextile number

      ≥ 0 · ≤ 15

    • semisquare number

      ≥ 0 · ≤ 15

    • sesquiquadrate number

      ≥ 0 · ≤ 15

    • quintile number

      ≥ 0 · ≤ 15

    • biquintile number

      ≥ 0 · ≤ 15

    No other fields are accepted.

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • frame string required
  • count integer required
  • aspects array of object required
    • a string required
    • b string required
    • aspect string required

      one of conjunction, opposition, trine, square, sextile, quincunx, semisextile, semisquare, sesquiquadrate, quintile, biquintile

    • angle number required
    • orb number required
    • applying boolean required
  • a_in_b_houses array of object or null required

    One of:

    1. array of object
      Fields
      • planet string required
      • house integer required
    2. null
  • b_in_a_houses array of object or null required

    One of:

    1. array of object
      Fields
      • planet string required
      • house integer required
    2. null

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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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_a Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • person_b Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • aspects array of string
  • orbs object

    Your own orb in degrees for any aspect, replacing the default and the extra for the Sun and Moon.

    • conjunction number

      ≥ 0 · ≤ 15

    • opposition number

      ≥ 0 · ≤ 15

    • trine number

      ≥ 0 · ≤ 15

    • square number

      ≥ 0 · ≤ 15

    • sextile number

      ≥ 0 · ≤ 15

    • quincunx number

      ≥ 0 · ≤ 15

    • semisextile number

      ≥ 0 · ≤ 15

    • semisquare number

      ≥ 0 · ≤ 15

    • sesquiquadrate number

      ≥ 0 · ≤ 15

    • quintile number

      ≥ 0 · ≤ 15

    • biquintile number

      ≥ 0 · ≤ 15

    No other fields are accepted.

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • frame string required
  • method string required

    one of midpoint

  • house_system string required
  • planets array of object required
    • id string required
    • name string required
    • longitude number required
    • sign string required
    • sign_name string required
    • degree number required
    • formatted string required
    • house integer required
  • angles object required
    • ascendant object required
      Fields
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
    • midheaven object required
      Fields
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
  • houses array of object required
    • house integer required
    • longitude number required
    • sign string required
    • sign_name string required
    • degree number required
    • formatted string required
  • aspects array of object required
    • a string required
    • b string required
    • aspect string required

      one of conjunction, opposition, trine, square, sextile, quincunx, semisextile, semisquare, sesquiquadrate, quintile, biquintile

    • angle number required
    • orb number 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • from string (date) required

    e.g. "1990-08-13"

  • to string (date) required

    Inclusive. At most 366 days from from, or 31 with the Moon.

    e.g. "1990-08-13"

  • planets array of string
  • include_moon boolean

    default false

  • aspects array of string
  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • from string (date) required

    e.g. "1990-08-13"

  • to string (date) required

    e.g. "1990-08-13"

  • frame string required
  • count integer required
  • events array of object required
    • at string (date-time) required
    • kind string required

      one of aspect, sign_ingress, station

    • planet string required
    • longitude number required
    • sign string required
    • sign_name string required
    • degree number required
    • formatted string required
    • retrograde boolean required
    • aspect string

      one of conjunction, opposition, trine, square, sextile, quincunx, semisextile, semisquare, sesquiquadrate, quintile, biquintile

    • angle number
    • natal_point string
    • transit_house integer or null

      One of:

      1. integer
      2. null
    • direction string

      one 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • date string (date) required

    e.g. "1990-08-13"

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • date string (date) required

    e.g. "1990-08-13"

  • age_years number required
  • method string required
  • progressed_moment string (date-time) required
  • solar_arc number required
  • angles_method string required
  • chart WesternChart required
    • moment string (date-time) required
    • frame string required

      one of tropical

    • house_system string or null required

      One of:

      1. string
      2. null
    • planets array of object required
      Fields
      • id string required
      • name string required
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
      • speed number required

        Degrees a day.

      • retrograde boolean required
      • house integer or null required

        One of:

        1. integer
        2. null
      • dignity string or null required

        One of:

        1. string
        2. null
    • angles object or null required

      One of:

      1. object
        Fields
        • ascendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • midheaven object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • descendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • imum_coeli object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
      2. null
    • houses array of object or null required

      One of:

      1. array of object
        Fields
        • house integer required
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      2. null
    • balance object required
      Fields
      • elements object required
        Fields
        • fire integer required
        • earth integer required
        • air integer required
        • water integer required
      • modalities object required
        Fields
        • cardinal integer required
        • fixed integer required
        • mutable integer 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • year integer required

    ≥ 1901 · ≤ 2100

  • place Coordinates or object or object

    Coordinates, 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:

    1. Coordinates
      Fields
      • latitude number required

        ≥ -90 · ≤ 90

      • longitude number required

        ≥ -180 · ≤ 180

      No other fields are accepted.

    2. object
      Fields
      • place_id string required

      No other fields are accepted.

    3. object
      Fields
      • query string required

        at least 2 characters · at most 120 characters

      No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • kind string required

    one of solar, lunar

  • year integer
  • after string (date)

    e.g. "1990-08-13"

  • natal_longitude number required
  • moment string (date-time) required
  • place object required
    • latitude number required
    • longitude number required
  • chart WesternChart required
    • moment string (date-time) required
    • frame string required

      one of tropical

    • house_system string or null required

      One of:

      1. string
      2. null
    • planets array of object required
      Fields
      • id string required
      • name string required
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
      • speed number required

        Degrees a day.

      • retrograde boolean required
      • house integer or null required

        One of:

        1. integer
        2. null
      • dignity string or null required

        One of:

        1. string
        2. null
    • angles object or null required

      One of:

      1. object
        Fields
        • ascendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • midheaven object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • descendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • imum_coeli object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
      2. null
    • houses array of object or null required

      One of:

      1. array of object
        Fields
        • house integer required
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      2. null
    • balance object required
      Fields
      • elements object required
        Fields
        • fire integer required
        • earth integer required
        • air integer required
        • water integer required
      • modalities object required
        Fields
        • cardinal integer required
        • fixed integer required
        • mutable integer 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

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

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

  • birth Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "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"

    • place Coordinates or object or object required

      Coordinates, 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:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • after string (date) required

    e.g. "1990-08-13"

  • place Coordinates or object or object

    Coordinates, 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:

    1. Coordinates
      Fields
      • latitude number required

        ≥ -90 · ≤ 90

      • longitude number required

        ≥ -180 · ≤ 180

      No other fields are accepted.

    2. object
      Fields
      • place_id string required

      No other fields are accepted.

    3. object
      Fields
      • query string required

        at least 2 characters · at most 120 characters

      No other fields are accepted.

  • house_system string

    one of placidus, equal, whole_sign, porphyry · default "placidus"

  • options object
    • lang string required

      one of en, hi · default "en"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • kind string required

    one of solar, lunar

  • year integer
  • after string (date)

    e.g. "1990-08-13"

  • natal_longitude number required
  • moment string (date-time) required
  • place object required
    • latitude number required
    • longitude number required
  • chart WesternChart required
    • moment string (date-time) required
    • frame string required

      one of tropical

    • house_system string or null required

      One of:

      1. string
      2. null
    • planets array of object required
      Fields
      • id string required
      • name string required
      • longitude number required
      • sign string required
      • sign_name string required
      • degree number required
      • formatted string required
      • speed number required

        Degrees a day.

      • retrograde boolean required
      • house integer or null required

        One of:

        1. integer
        2. null
      • dignity string or null required

        One of:

        1. string
        2. null
    • angles object or null required

      One of:

      1. object
        Fields
        • ascendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • midheaven object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • descendant object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
        • imum_coeli object required
          Fields
          • longitude number required
          • sign string required
          • sign_name string required
          • degree number required
          • formatted string required
      2. null
    • houses array of object or null required

      One of:

      1. array of object
        Fields
        • house integer required
        • longitude number required
        • sign string required
        • sign_name string required
        • degree number required
        • formatted string required
      2. null
    • balance object required
      Fields
      • elements object required
        Fields
        • fire integer required
        • earth integer required
        • air integer required
        • water integer required
      • modalities object required
        Fields
        • cardinal integer required
        • fixed integer required
        • mutable integer 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": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one