Sidereal Astrology Synastry API
AstroAPI uses Western (tropical), geocentric astrology by default.
Sidereal calculations are applied only when explicitly enabled
using "zodiac": "sidereal" and an ayanamsa selection.
This endpoint provides sidereal coordinate transforms only and does not
implement full Vedic astrology systems.
The Sidereal Synastry API compares two complete natal charts using sidereal zodiac coordinates and calculates planetary aspects between them. It is designed for passive, server-to-server usage using API key authentication.
Endpoint
POST https://api.astroapi.io/api/astro/synastry
Include Authorization: Bearer <API_KEY>.
Required Request Fields
personA.date— ISO date (YYYY-MM-DD)personA.time— 24-hour time (HH:MM)personA.lat— latitude (decimal)personA.lon— longitude (decimal)personB.date— ISO date (YYYY-MM-DD)personB.time— 24-hour time (HH:MM)personB.lat— latitude (decimal)personB.lon— longitude (decimal)
Supply an IANA timezone inside each person when the time is local;
omission means UTC. Public dates are limited to 1900-01-01 through
2050-12-31. Lahiri is the default; Raman and Krishnamurti are also supported.
How Sidereal Synastry Works
Two full birth charts are generated independently using sidereal planetary longitudes derived from the selected ayanamsa and then compared. Planetary aspects are calculated between charts. The API returns raw chart and aspect data rather than a compatibility score.
Returns
- Complete sidereal birth chart for
personA - Complete sidereal birth chart for
personB - Cross-chart planetary aspects
- House systems, lunar nodes, and metadata
All calculation results are returned as raw chart and aspect data. Interpretation and scoring must be handled client-side.
Example Request (Sidereal)
{
"personA": {
"date": "1990-01-01",
"time": "12:00",
"timezone": "UTC",
"lat": 40.7128,
"lon": -74.0060
},
"personB": {
"date": "1992-06-15",
"time": "18:30",
"timezone": "America/Los_Angeles",
"lat": 34.0522,
"lon": -118.2437
},
"zodiac": "sidereal",
"ayanamsa": "lahiri"
}
Example Response
This verified response is abbreviated. In the current cross-aspect field names,
natal means person A and transit means person B.
{
"type": "synastry",
"input": {
"zodiac": "sidereal",
"ayanamsa": "lahiri"
},
"charts": {
"personA": { "status": "ok", "zodiac": "sidereal", "ayanamsa": "lahiri" },
"personB": { "status": "ok", "zodiac": "sidereal", "ayanamsa": "lahiri" }
},
"aspects": [
{
"transit": "Sun",
"natal": "Pluto",
"type": "biquintile",
"exact_angle": 144,
"distance": 141.9676,
"orb": 2.0324
}
]
}
Quick Test / curl
Use this curl command to quickly test the Sidereal Synastry API endpoint with your API key:
curl -i https://api.astroapi.io/api/astro/synastry \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ASTROAPI_KEY}" \
-d '{
"personA": {
"date": "2000-01-01",
"time": "12:00",
"timezone": "America/New_York",
"lat": 33.7488,
"lon": -84.3877
},
"personB": {
"date": "2001-06-15",
"time": "18:30",
"timezone": "America/Los_Angeles",
"lat": 34.0522,
"lon": -118.2437
},
"zodiac": "sidereal",
"ayanamsa": "lahiri"
}'
Common Uses
- Sidereal relationship analysis tools
- Cross-chart comparison dashboards
- Synastry chart visualization
- Coordinate-system research
// Node.js 22+ — server-side only
fetch("https://api.astroapi.io/api/astro/synastry", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.ASTROAPI_KEY}`
},
body: JSON.stringify({
personA: {
date: "1990-01-01",
time: "12:00",
timezone: "UTC",
lat: 40.7128,
lon: -74.0060
},
personB: {
date: "1992-06-15",
time: "18:30",
timezone: "America/Los_Angeles",
lat: 34.0522,
lon: -118.2437
},
zodiac: "sidereal",
ayanamsa: "lahiri"
})
})
.then(res => res.json())
.then(data => console.log(data));
# Python — Sidereal Synastry API
import os
import requests
url = "https://api.astroapi.io/api/astro/synastry"
payload = {
"personA": {
"date": "1990-01-01",
"time": "12:00",
"timezone": "UTC",
"lat": 40.7128,
"lon": -74.0060
},
"personB": {
"date": "1992-06-15",
"time": "18:30",
"timezone": "America/Los_Angeles",
"lat": 34.0522,
"lon": -118.2437
},
"zodiac": "sidereal",
"ayanamsa": "lahiri"
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['ASTROAPI_KEY']}"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())