Skip to content
POST/api/astro/western/natal-chart/1 credit

Western natal chart

A tropical natal chart: the same twelve bodies, plus every aspect between them. TROPICAL, not sidereal. Every other chart endpoint here subtracts the ayanamsa — about 24 degrees at present — which moves nearly every planet into the previous sign. Someone born on 15 August is a Leo here and a Cancer on /api/astro/chart/. Both are correct for their own tradition; pick the one your product uses and do not mix them. Twelve bodies: the ten Western planets, the true north node and Chiron. Each returns its longitude, the sign and degrees within it, a formatted position, its daily motion and whether it is retrograde. Send a date, a time and a place. Nothing else — the zodiac is fixed by the route. Aspects cover the five Ptolemaic angles — conjunction, sextile, square, trine, opposition — plus quincunx and semisextile. Each carries its exact angle, the `orb` by which it misses exact, and the `allowed_orb` that admitted it, so you can filter tighter than our defaults without recalculating. `applying` is true while the aspect is still forming and false once it has passed exact, derived from the bodies' own daily motion. Orbs are a matter of convention and astrologers disagree; ours are the widely used defaults and are stated on every hit rather than assumed.

https://api.occultapi.com/api/astro/western/natal-chart/
Test Request

Authentication

Send your key in the X-API-Key header. Keys are server-side credentials — never put one in browser JavaScript or a mobile app.

X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/json

Request fields

FieldTypeRequiredNotes
date_timestring (date-time)required

The moment to calculate for, ISO 8601. ALWAYS include an offset or a trailing Z - a value with no zone is read as Asia/Kolkata (UTC+05:30), not UTC, and can return the previous day's result with a 200. '2026-09-01T06:00:00Z' and '2026-09-01 06:00:00' are different instants and give different answers.

latitudenumber (double)required

Latitude of the place, in decimal degrees. Positive is north, negative is south. Example: 26.9124 for Jaipur, 40.7128 for New York. Minutes and seconds are not accepted - convert first.

min -89.9 · max 89.9

longitudenumber (double)required

Longitude of the place, in decimal degrees. Positive is east, negative is west. Example: 75.7873 for Jaipur, -74.0060 for New York. Note the sign: a missing minus puts New York in China.

min -180 · max 180

timezone_as_floatnumber (double)required

UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30), -5 for New York in winter, 5.75 for Nepal. This is NOT validated against date_time - if the two disagree you get a successful response for the wrong moment, so derive both from the same source. Use the offset in force on that date, not today's: a summer birth in a country with daylight saving needs the summer offset.

min -12 · max 14

ayanamsastringoptional

TROPICAL (the default) or an ayanamsa name such as LAHIRI, KRISHNAMURTI, RAMAN or FAGAN_BRADLEY, case-insensitive. A sidereal ayanamsa subtracts its value at each moment from every returned longitude.

include_asteroid_lilithbooleanoptional

Add the asteroid (1181) Lilith, a different body from Black Moon Lilith, named "asteroid_lilith", after the other bodies.

include_lilithbooleanoptional

Add Black Moon Lilith (the mean lunar apogee) as a body named "lilith", after the other bodies.

keysarrayoptional

Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls.

Example request

curl -X POST https://api.occultapi.com/api/astro/western/natal-chart/ \
  -H "X-API-Key: $OCCULT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_time":"1990-08-15T10:30:00+05:30","timezone_as_float":5.5,"latitude":26.9124,"longitude":75.7873}'

Response

{
  "_truncated": true,
  "_note": "Response shortened for the catalogue.",
  "preview": "{\"data\": {\"zodiac\": \"tropical\", \"planets\": [{\"name\": \"sun\", \"longitude\": 142.125, \"sign\": \"Leo\", \"sign_index\": 5, \"degree_in_sign\": 22.125, \"formatted\": \"22°07' Leo\", \"speed\": 0.960934, \"retrograde\": false}, {\"name\": \"moon\", \"longitude\": 72.66, \"sign\": \"Gemini\", \"sign_index\": 3, \"degree_in_sign\": 12.66, \"formatted\": \"12°39' Gemini\", \"speed\": 14.262958, \"retrograde\": false}, {\"name\": \"mercury\", \"longitude\": 169.176, \"sign\": \"Virgo\", \"sign_index\": 6, \"degree_in_sign\": 19.176, \"formatted\": \"19°10' Virgo\", \"speed\": 0.776615, \"retrograde\": false}, {\"name\": \"venus\", \"longitude\": 121.573, \"sign\": \"Leo\", \"sign_index\": 5, \"degree_in_sign\": 1.573, \"formatted\": \"1°34' Leo\", \"speed\": 1.22118, \"retrograde\": false}, {\"name\": \"mars\", \"longitude\": 51.217, \"sign\": \"Taurus\", \"sign_index\": 2, \"degree_in_sign\": 21.217, \"formatted\": \"21°13' Taurus\", \"speed\": 0.576982, \"retrograde\": false}, {\"name\": \"jupiter\", \"longitude\": 119.337, \"sign\": \"Cancer\", \"sign_index\": 4, \"degree_in_sign\": 29.337, \"formatted\": \"29°20' Cancer\", \"speed\": 0.214649, \"retrograde\": false}, {\"name\": \"saturn\", \"longitude\": 289.878, \"sign\": \"Capricorn\", \"sign_index\": 10, \"degree_in_sign\": 19.878, \"formatted\": \"19°52' Capricorn\", \"speed\": -0.056381, \"retrograde\": true}, {\"name\": \"uranus\", \"longitude\": 275.978, \"sign\": \"Capricorn\", \"sign_index\": 10, \"degree_in_sign\": 5.978, \"formatted\": \"5°58' Capricorn\", \"speed\": -0.023775, \"retrograde\": true}, {\"name\": \"neptune\", \"longitude\": 282.199, \"sign\": \"Capricorn\", \"sign_index\": 10, \"degree_in_sign\": 12.199, \"formatted\": \"12°11' Capricorn\", \"speed\": -0.019063, \"retrograde\": true}, {\"name\": \"pluto\", \"longitude\": 225.084, \"sign\": \"Scorpio\", \"sign_index\": 8, \"degree_in_sign\": 15.084, \"formatted\": \"15°05' Scorpio\", \"speed\": 0.011469, \"retrograde\": false}, {\"name\": \"north_node\", \"longitude\": 307.233, \"sign\": \"Aquarius\", \"sign_index\": 11, \"degree_in_sign\": 7.233, \"formatted\": \"7°13' Aquarius\", \"speed\": 0.014476, \"retrograde\": false}, {\"name\": \"chiron\", \"longitude\": 112.438, \"sign\": \"Cancer\", \"sign_index\": 4, \"degree_in_sign\": 22.438, \"formatted\": \"22°26' Cancer\", \"speed\": 0.099053, \"retrograde\": false}], \"aspects\": [{\"from\": \"sun\", \"to\": \"mars\", \"aspect\": \"square\", \"exact_angle\": 90.0, \"orb\": 0.908, \"allowed_orb\": 8.0, \"applying\": false, \"separation\": 90.908}, {\"from\": \"sun\", \"to\": \"saturn\", \"aspect\": \"quincunx\", \"exact_angle\": 150.0, \"orb\": 2.247, \"allowed_orb\": 3.0, \"applying\": false, \"separation\": 147.753}, {\"from\": \"sun\", \"to\": \"pluto\", \"aspect\": \"square\", \"exact_angle\": 90.0, \"orb\": 7.041, \"allowed_orb\": 8.0, \"applying\": false, \"separation\": 82.959}, {\"from\": \"sun\", \"to\": \"chiron\", \"aspect\": \"semisextile\", \"exact_angle\": 30.0, \"orb\": 0.313, \"allowed_orb\": 2.0, \"applying\": true, \"separation\": 29.687}, {\"from\": \"moon\", \"to\": \"mercury\", \"aspect\": \"square\", \"exact_angle\": 90.0, \"orb\": 6.516, \"allowed_orb\": 8.0, \"applying\": true, \"separation\": 96.516}, {\"from\": \"moon\", \"to\": \"neptune\", \"aspect\": \"quincunx\", \"exact_angle\": 150.0, \"orb\": 0.461, \"allowed_orb\": 3.0, \"applying\": false, \"separation\": 150.461}, {\"from\": \"moon\", \"to\": \"pluto\", \"aspect\": \"quincunx\", \"exact_angle\": 150.0, \"orb\": 2.424, \"allowed_orb\": 3.0, \"applying\": true, \"separation\": 152.424}, {\"from\": \"moon\", \"to\": \"north_node\", \"aspect\": \"trine\", \"exact_angle\": 120.0, \"orb\": 5.427, \"allowed_orb\": 8.0, \"applying\": false, \"separation\": 125.427}, {\"from\": \"mercury\", \"to\": \"mars\", \"aspect\": \"trine\", \"exact_angle\": 120.0, \"orb\": 2.041, \"allowed_orb\": 8.0, \"applying\": true, \"separation\": 117.959}, {\"from\": \"mercury\", \"to\": \"saturn\", \"aspect\": \"trine\", \"exact_angle\": 120.0, \"orb\": 0.702, \"allowed_orb\": 8.0, \"applying\": true, \"separation\": 120.702}, {\"from\": \"mercury\", \"to\": \"neptune\", \"aspect\": \"trine\", \"exact_angle\": 120.0, \"orb\": 6.977, \"allowed_orb\": 8.0, \"applying\": false, \"separation\": 113.023}, {\"from\": \"mercury\", \"to\": \"pluto\", \"aspect\": \"sextile\", \"exact_angle\": 60.0, \"orb\": 4.092, \"allowed_orb\": 6.0, \"applying\": false, \"separation\": 55.908}, {\"from\": \"mercury\", \"to\": \"chiron\", \"asp"
}

Captured from a real call using the exact request above. Results sit under data.

Errors

Metering errors return { "error": "…", "message": "<code>", "is_error": true }. Show error to people and branch on message. See the error reference.