Skip to content

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

ParameterTypeRequiredDescription
dateTime1stringYesFirst person birth date/time in YYYY-MM-DDTHH:mm format
location1objectYesFirst person location (longitude, latitude, timezone)
dateTime2stringYesSecond person birth date/time in YYYY-MM-DDTHH:mm format
location2objectYesSecond person location (longitude, latitude, timezone)
houseSystemstringNoHouse system (default: "placidus")
languagestringNoLanguage code for text content (default: "en")
includeTextbooleanNoInclude interpretation text (default: false)
includeReadableEntitiesbooleanNoInclude human-readable entity titles (default: false)
pointsarrayNoCelestial points to include in the calculation (see Available Points)
orbsobjectNoCustom 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.
  • orb is the deviation from the exact aspect angle; applying is true when 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
    }
  }'

AstroAPI Documentation