Chart basics
Ephemeris in Vedic astrology
Updated
Ephemeris: how the API computes it
The API reads the DE440s ephemeris from NASA's Jet Propulsion Laboratory for the Sun, Moon and planets. The file covers the years 1850 to 2149. So the API accepts birth dates and transit dates only in that range. It refuses anything outside it with a clear error.
The ephemeris gives each body's position in space at a given moment. The API turns that into an ecliptic longitude, the body's place along the Sun's yearly path. Then it subtracts the ayanamsa to make it sidereal, or measured against the stars.
The ayanamsa is the gap between the Western and Vedic zodiacs, and Lahiri is the default. That gives the sign, degree, nakshatra (star segment) and pada (quarter of a nakshatra). Rahu and Ketu are worked out from the Moon's orbit, since they are points and not bodies.
We check the results against Swiss Ephemeris, and the response meta shows the ayanamsa used. The ephemeris is built in, so every call is calculated from scratch. It does not depend on an outside service being online.
The same tables serve the planets, the ascendant, divisional charts (charts made by splitting each sign into parts) and the transit endpoints.
Get it from the API
POST /v1/planets
# John Doe, born Aug 15, 1990, 10:30 AM, New York
curl -X POST "https://apiforastrology.com/api/astrology/v1/planets" \
-H "Authorization: Bearer $ASTROLOGY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"year":1990,"month":8,"day":15,"hour":10,"minute":30,"second":0,"latitude":40.7128,"longitude":-74.006,"timezone":"America/New_York"}'{
"meta": {
"ayanamsa": "lahiri",
"ayanamsa_value": 23.7260727,
"julian_day": 2448119.10483,
"ephemeris": "JPL DE440s",
"node": "true",
"timezone": {
"source": "zone",
"offset_hours": -4,
"zone": "America/New_York",
"abbreviation": "EDT",
"dst": true,
"dst_hours": 1,
"ambiguous_resolved_by_fold": null,
"note": "read from the IANA tz database at this instant, so daylight saving and historical offset changes are included"
}
},
"ascendant": {
"name": "Ascendant",
"longitude": 169.934155,
"sign": "Virgo",
"sign_number": 6,
"degree_in_sign": 19.934155,
"degree_dms": "19 : 56 : 03",
"house": 1,
"nakshatra": "Hast",
"nakshatra_lord": "Moon",
"pada": 3,
"speed": 0,
"retrograde": false,
"combust": false,
"dignity": "n/a",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 6,
"bhaga": false,
"bhaga_degree": 9,
"bhaga_by_element": false,
"bhaga_degree_by_element": 14,
"sources_agree": true,
"orb_degrees": 1
}
},
"positions": [
{
"name": "Sun",
"longitude": 118.7753409,
"sign": "Cancer",
"sign_number": 4,
"degree_in_sign": 28.7753409,
"degree_dms": "28 : 46 : 31",
"house": 11,
"nakshatra": "Ashlesha",
"nakshatra_lord": "Mercury",
"pada": 4,
"speed": 0.9610665,
"retrograde": false,
"combust": false,
"dignity": "friend",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 9,
"bhaga": false,
"bhaga_degree": 8,
"bhaga_by_element": false,
"bhaga_degree_by_element": 7,
"sources_agree": true,
"orb_degrees": 1
}
},
{
"name": "Moon",
"longitude": 54.5750352,
"sign": "Taurus",
"sign_number": 2,
"degree_in_sign": 24.5750352,
"degree_dms": "24 : 34 : 30",
"house": 9,
"nakshatra": "Mrigashira",
"nakshatra_lord": "Mars",
"pada": 1,
"speed": 14.258194,
"retrograde": false,
"combust": false,
"dignity": "mulatrikona",
"vargottama": false,
"pushkara": {
"navamsa": false,
"navamsa_number": 8,
"bhaga": false,
"bhaga_degree": 14,
"bhaga_by_element": false,
"bhaga_degree_by_element": 14,
"sources_agree": true,
"orb_degrees": 1
}
},
{
"name": "Mars",
"longitude": 27.7149328,
"sign": "Aries",
"sign_number": 1,
"degree_in_sign": 27.7149328,
"degree_dms": "27 : 42 : 54",
"house": 8,
"nakshatra": "Krittika",
"nakshatra_lord": "Sun",
"pada": 1,
"speed": 0.5753266,
"retrograde": false,
"combust": false,
"dignity": "own sign",
"vargottama": false,
"pushkara": {
"navamsa": true,
"navamsa_number": 9,
"bhaga": false,
"bhaga_degree": 21,
"bhaga_by_element": false,
"bhaga_degree_by_element": 21,
"sources_agree": true,
"orb_degrees": 1
}
}
],
"planetary_war": []
}Where the API returns it
| POST | /v1/planets | Planet positions and the ascendant |
| GET | /v1/meta | Supported options and limits |
| POST | /v1/varshaphal | The Tajik annual chart (varshaphal) for one year |
| POST | /v1/varshaphal/dina | Tajik daily return (dina pravesh) for a day or a short window |
| POST | /v1/ascendant | The ascendant only |
| POST | /v1/chart/sudarshana | Sudarshana chakra: the chart from the ascendant, Moon and Sun |
Feature page: Kundli and birth charts. Who uses it: Astrology apps. The classical rules the API follows are in the rulebook.
How we check the numbers
Every value here starts from planet positions worked out from NASA JPL planet data (DE440). We test them against NASA JPL Horizons, NASA's planet position service. On 25,571 positions from 1850 to 2149, the Sun and planets agree within 0.001 arc seconds. The Moon agrees within 0.011. On 2,000 random birth charts, the rising sign agrees with Swiss Ephemeris within 0.004 arc seconds. An arc second is 1/3,600 of a degree. A practicing astrologer reviews the rules behind these answers. See how we test.
Related terms
Free tools
See it with your own details
Runs on the same API call. Enter your details and see the answer in your browser.
Free kundli
Your Vedic birth chart: the rising sign and all nine planets, with sign, house and nakshatra.
Make my kundli
From the blog
Astrology API
Get these values from the API
Create a free test key and call any endpoint on this page. Or try a request in the API reference first.
Your first answer
John Doe, New York
- RisingVirgoHast
- SunCancerAshlesha
- MoonTaurusMrigashira
- MarsAriesKrittika
Real API output. A free test key gets the same answer.
01
Test key: 1,000 test calls a month to build with
02
Free plan: 2,000 live calls a month, no card needed
03
Open rules: every rule is published, so you can check any answer
