Synastry
GET /v1/synastry — Two-chart synastry with inter-chart aspects and parallels.
Synastry
Compute synastry (chart comparison) between two natal charts. Returns both individual charts plus inter-chart aspects and parallels — the angular relationships between bodies in chart A and bodies in chart B.
GET /v1/synastry
POST /v1/synastryCredit cost: 3
Parameters
This endpoint uses _a and _b suffixes for the two charts' datetime and location parameters.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
datetime_a | string | One of datetime_a or jd_a | — | Person A: ISO 8601 UTC datetime |
jd_a | number | One of datetime_a or jd_a | — | Person A: Julian Day in UT1 |
lat_a | number | Yes | — | Person A: latitude |
lon_a | number | Yes | — | Person A: longitude |
datetime_b | string | One of datetime_b or jd_b | — | Person B: ISO 8601 UTC datetime |
jd_b | number | One of datetime_b or jd_b | — | Person B: Julian Day in UT1 |
lat_b | number | Yes | — | Person B: latitude |
lon_b | number | Yes | — | Person B: longitude |
bodies | string | No | "planets" | Comma-separated body names (same for both charts) |
system | string | No | "placidus" | House system |
sidereal | string | No | — | Ayanamsha for sidereal mode |
aspects | string | No | Major 7 | Comma-separated aspect types |
orb | number | No | — | Global orb override in degrees |
applying | boolean | No | false | Include applying/separating flag |
parallels | boolean | No | false | Include declination parallels |
parallel_orb | number | No | 1.0 | Orb for parallels in degrees |
Response
{
"data": {
"chart_a": {
"metadata": { "..." },
"bodies": [ "..." ],
"houses": { "..." }
},
"chart_b": {
"metadata": { "..." },
"bodies": [ "..." ],
"houses": { "..." }
},
"inter_aspects": [
{
"body_a": "sun",
"body_b": "venus",
"aspect": "conjunction",
"angle": 0.0,
"orb": 3.12,
"applying": false
}
],
"inter_parallels": []
},
"meta": { "..." }
}| Field | Type | Description |
|---|---|---|
chart_a | object | Full chart data for person A (same structure as /v1/natal-chart) |
chart_b | object | Full chart data for person B |
inter_aspects[] | array | Aspects between bodies in chart A and bodies in chart B |
inter_parallels[] | array | Declination parallels between charts (when parallels=true) |
In inter_aspects, body_a always refers to a body from chart A, and body_b to a body from chart B.
Examples
Two-person synastry
curl "https://api.morphemeris.com/v1/synastry?\
datetime_a=1990-06-15T18:30:00Z&lat_a=40.7128&lon_a=-74.006\
&datetime_b=1988-03-22T10:00:00Z&lat_b=51.5074&lon_b=-0.1278" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"const params = new URLSearchParams({
datetime_a: "1990-06-15T18:30:00Z", lat_a: "40.7128", lon_a: "-74.006",
datetime_b: "1988-03-22T10:00:00Z", lat_b: "51.5074", lon_b: "-0.1278",
});
const res = await fetch(
`https://api.morphemeris.com/v1/synastry?${params}`,
{ headers: { Authorization: "Bearer morphemeris_live_YOUR_KEY" } }
);
const { data } = await res.json();import requests
res = requests.get(
"https://api.morphemeris.com/v1/synastry",
params={
"datetime_a": "1990-06-15T18:30:00Z", "lat_a": 40.7128, "lon_a": -74.006,
"datetime_b": "1988-03-22T10:00:00Z", "lat_b": 51.5074, "lon_b": -0.1278,
},
headers={"Authorization": "Bearer morphemeris_live_YOUR_KEY"},
)
data = res.json()With parallels and applying flag
curl "https://api.morphemeris.com/v1/synastry?\
datetime_a=1990-06-15T18:30:00Z&lat_a=40.7128&lon_a=-74.006\
&datetime_b=1988-03-22T10:00:00Z&lat_b=51.5074&lon_b=-0.1278\
¶llels=true&applying=true" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"