Synastry & Composite Charts
Compare two natal charts for relationship analysis.
Synastry
Calculate aspects between two charts:
bash
curl -X POST "https://api.astroapi.cloud/api/calc/synastry" \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"dateTime1": "1990-06-15T14:30",
"location1": {
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": "Europe/London"
},
"dateTime2": "1988-03-22T09:15",
"location2": {
"latitude": 48.8566,
"longitude": 2.3522,
"timezone": "Europe/Paris"
}
}'javascript
const response = await fetch("https://api.astroapi.cloud/api/calc/synastry", {
method: "POST",
headers: {
"X-Api-Key": "your-api-key",
"Content-Type": "application/json"
},
body: JSON.stringify({
dateTime1: "1990-06-15T14:30",
location1: {
latitude: 51.5074,
longitude: -0.1278,
timezone: "Europe/London"
},
dateTime2: "1988-03-22T09:15",
location2: {
latitude: 48.8566,
longitude: 2.3522,
timezone: "Europe/Paris"
}
})
});
const data = await response.json();
console.log(JSON.stringify(data, null, 2));python
import requests
response = requests.post(
"https://api.astroapi.cloud/api/calc/synastry",
headers={
"X-Api-Key": "your-api-key",
"Content-Type": "application/json"
},
json={
"dateTime1": "1990-06-15T14:30",
"location1": {
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": "Europe/London"
},
"dateTime2": "1988-03-22T09:15",
"location2": {
"latitude": 48.8566,
"longitude": 2.3522,
"timezone": "Europe/Paris"
}
}
)
print(response.json())Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
dateTime1 | string | Yes | First person birth date/time in YYYY-MM-DDTHH:mm format |
location1 | object | Yes | First person location (longitude, latitude, timezone) |
dateTime2 | string | Yes | Second person birth date/time in YYYY-MM-DDTHH:mm format |
location2 | object | Yes | Second person location (longitude, latitude, timezone) |
houseSystem | string | No | House system (default: "placidus") |
language | string | No | Language code for text content (default: "en") |
includeText | boolean | No | Include interpretation text (default: false) |
includeReadableEntities | boolean | No | Include human-readable entity titles (default: false) |
points | array | No | Celestial points to include in the calculation (see Available Points) |
orbs | object | No | Custom orb values per aspect type |
Response
The response contains the cross-aspects in both directions, plus chart URLs:
json
{
"data": {
"aspects1to2": [
{
"pointA": "sun",
"pointB": "moon",
"aspect": "trine",
"angle": 117.7,
"orb": 2.3,
"applying": true
}
],
"aspects2to1": [
{
"pointA": "venus",
"pointB": "mars",
"aspect": "conjunction",
"angle": 1.4,
"orb": 1.4,
"applying": false
}
],
"charts": {
"synastry": {
"title": "Synastry Chart (Bi-wheel)",
"description": "Person 1 (inner) + Person 2 (outer)",
"url": "https://api.astroapi.cloud/api/chart2/natal.svg?..."
},
"person1": { "title": "Person 1 Natal", "description": "1990-06-15T14:30", "url": "..." },
"person2": { "title": "Person 2 Natal", "description": "1988-03-22T09:15", "url": "..." }
}
}
}aspects1to2— aspects from person 1's points (pointA) to person 2's points (pointB).aspects2to1— the same in the opposite direction.orbis the deviation from the exact aspect angle;applyingistruewhen the aspect is tightening.
Planetary positions
Synastry returns the cross-aspects only, not the two underlying charts. If you also need each person's raw longitudes, houses and angles, call /api/calc/natal once per person.
Composite Charts
Generate a composite (midpoint) chart:
bash
curl -X POST "https://api.astroapi.cloud/api/calc/composite" \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"dateTime1": "1990-06-15T14:30",
"location1": {
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": "Europe/London"
},
"dateTime2": "1988-03-22T09:15",
"location2": {
"latitude": 48.8566,
"longitude": 2.3522,
"timezone": "Europe/Paris"
}
}'javascript
const response = await fetch("https://api.astroapi.cloud/api/calc/composite", {
method: "POST",
headers: {
"X-Api-Key": "your-api-key",
"Content-Type": "application/json"
},
body: JSON.stringify({
dateTime1: "1990-06-15T14:30",
location1: {
latitude: 51.5074,
longitude: -0.1278,
timezone: "Europe/London"
},
dateTime2: "1988-03-22T09:15",
location2: {
latitude: 48.8566,
longitude: 2.3522,
timezone: "Europe/Paris"
}
})
});
const data = await response.json();
console.log(JSON.stringify(data, null, 2));python
import requests
response = requests.post(
"https://api.astroapi.cloud/api/calc/composite",
headers={
"X-Api-Key": "your-api-key",
"Content-Type": "application/json"
},
json={
"dateTime1": "1990-06-15T14:30",
"location1": {
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": "Europe/London"
},
"dateTime2": "1988-03-22T09:15",
"location2": {
"latitude": 48.8566,
"longitude": 2.3522,
"timezone": "Europe/Paris"
}
}
)
print(response.json())Davison Chart
Calculate a Davison relationship chart (time-space midpoint):
bash
curl -X POST "https://api.astroapi.cloud/api/calc/davison" \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"chart1": { ... },
"chart2": { ... }
}'Aspect Scoring
Get a compatibility score based on synastry aspects:
bash
curl -X POST "https://api.astroapi.cloud/api/calc/synastry/score" \
-H "X-Api-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"chart1": { ... },
"chart2": { ... },
"weights": {
"sun": 10,
"moon": 10,
"venus": 8,
"mars": 7
}
}'