Composite Chart API: The Midpoint Relationship Method
A composite chart is not synastry. It merges two natal charts into one midpoint chart for the relationship. See the method and the composite chart API.
TL;DR
- A composite chart is not synastry: synastry compares two intact charts, a composite chart is one new chart built from the midpoints of both.
- The composite Sun is the exact midpoint of the two natal Suns, the composite Moon the midpoint of both Moons, and the same holds for every planet and angle.
POST /astrology/composite-chartreturns compositePlanets, compositeHouses, compositeAscendant, compositeMidheaven, aspects, and a relationship interpretation in one call.- Build a couples feature with the Astrology API in an afternoon.
Relationship astrology has two very different tools, and developers routinely conflate them. Synastry compares two separate birth charts by measuring the cross-aspects between the planets of one person and the planets of the other. A composite chart does something else entirely: it collapses two natal charts into one new chart built from the midpoints of every planet and angle, so the relationship itself becomes a single readable entity. If you build a couples feature and reach for synastry when you meant composite, the output answers the wrong question. This guide explains the composite chart midpoint method, shows a real response from the composite chart API, and interprets the placements that matter most. Every value below came from a live production call, and every planetary position is derived from Roxy Ephemeris, verified against NASA JPL Horizons.
How is a composite chart different from synastry?
A composite chart is one brand new chart created from the midpoints of two natal charts, while synastry keeps both charts intact and studies the aspects between them. Synastry asks how two individuals interact. A composite chart asks who the relationship is as its own entity. The composite Sun is not the Sun of either partner, it is the exact midpoint between their two Suns.
That single difference changes what you can build. Synastry produces inter-aspects, such as the Mars of one partner squaring the Venus of the other, and it is the right tool for a dating app that scores how two users match. A composite chart produces a self-contained chart with its own Sun sign, Moon sign, Ascendant, houses, and internal aspects, and it is the right tool for a relationship-insight feature that describes the bond as a unit. Both are valid and they answer different product questions, so the failure mode is treating them as interchangeable. For the cross-aspect approach, see the dedicated synastry calculation guide.
Ready to build this? The Astrology API gives you both composite and synastry from one key. See pricing.
How does the midpoint method build a composite chart?
The midpoint method computes the ecliptic midpoint of each matching pair of points. The composite Sun sits halfway between the two natal Suns, the composite Moon halfway between both Moons, and the same rule applies to every planet, the Ascendant, and the Midheaven. Houses and angles are calculated at the geographic and temporal midpoint of the two births, not for either birthplace alone.
For a sample couple born in New York and London, the composite Ascendant resolved to Cancer and the composite Midheaven to Pisces, and the response carried 14 composite planets across 12 house cusps from a single call. Because a midpoint is only as trustworthy as the two positions feeding it, accuracy compounds: a coarse ephemeris doubles its position drift into the midpoint. RoxyAPI derives every longitude from Roxy Ephemeris rather than a low-resolution table.
Median position deviation versus NASA JPL Horizons across the gold-standard suite, so every composite midpoint inherits arc-second-level accuracy. See methodology.
What does the composite chart API return?
A single POST returns the full relationship chart: compositePlanets with per-planet interpretations, compositeHouses, compositeAscendant, compositeMidheaven, the aspects between composite planets, and a top level interpretation block with summary, strengths, and challenges. No second call is needed to get readable meaning, and the interpretation is included on every response.
Here is a trimmed real response for the sample couple, with longitudes rounded for readability. The field names are exact.
{
"compositeAscendant": { "sign": "Cancer", "degree": 4.88, "longitude": 94.88 },
"compositeMidheaven": { "sign": "Pisces", "degree": 9.77, "longitude": 339.77 },
"compositePlanets": [
{
"name": "Sun",
"sign": "Virgo",
"degree": 1.4,
"house": 9,
"isRetrograde": false,
"compositeInterpretation": {
"summary": "Sun in Virgo (Virgin) brings graceful, organized, kind energy to the themes of self-awareness and ego.",
"relationshipMeaning": "The composite Sun in virgo represents the core identity and purpose of your relationship.",
"keywords": ["awareness", "consciousness", "graceful", "organized", "kind"]
}
}
],
"aspects": [
{ "planet1": "Venus", "planet2": "Jupiter", "type": "SEXTILE", "angle": 60, "orb": 0.25, "isApplying": true, "strength": 95.78, "interpretation": "harmonious" }
],
"interpretation": {
"summary": "This relationship has strong harmonious energy with natural flow and compatibility.",
"strengths": ["The composite Moon in taurus shows your emotional bond and how you nurture each other."],
"challenges": []
}
}
Each compositePlanets entry also carries longitude, latitude, speed, and degree, and each compositeHouses entry carries number, sign, degree, and longitude. You can open the endpoint in the reference and paste your key to test it live.
How do you read the composite Sun, Moon, Venus, and aspects?
Read the composite Sun as the core identity of the relationship, the composite Moon as its emotional tone, and the composite Venus as how it loves. Each composite planet in the response carries a relationshipMeaning string that states exactly that, and the aspects array shows how those energies interact inside the bond.
For the sample couple, the composite Sun landed in Virgo in the 9th house and the API returned the relationshipMeaning that "the composite Sun in virgo represents the core identity and purpose of your relationship." Composite Venus, also in Virgo, returned "the composite Venus in virgo reveals what you value together and how you express affection." Composite Moon in Taurus described "your emotional bond and how you nurture each other." Aspects use type, angle, orb, isApplying, strength on a 0 to 100 scale, and an interpretation flag of harmonious or challenging. The tightest harmonious aspect here was a Venus sextile Jupiter at an orb of 0.25 degrees and strength 95.78. The interpretation.strengths array is assembled from these core placements, while challenges came back empty for this pairing.
How do you call the composite chart API from code?
Resolve both birthplaces with the location endpoint first, then POST both people to the composite chart endpoint. Location search returns the latitude, longitude, and IANA timezone you feed into each person, and the timezone string is resolved to the DST-correct offset for that birth date automatically, so an IANA name like "America/New_York" becomes the right numeric offset without manual DST math.
# 1. Resolve each birthplace to coordinates and an IANA timezone
curl -s "https://roxyapi.com/api/v2/location/search?q=New%20York" -H "X-API-Key: YOUR_KEY"
# cities[0]: latitude 40.71427, longitude -74.00597, timezone "America/New_York"
curl -s "https://roxyapi.com/api/v2/location/search?q=London" -H "X-API-Key: YOUR_KEY"
# cities[0]: latitude 51.50853, longitude -0.12574, timezone "Europe/London"
Then pass both people to the composite chart endpoint. The houseSystem field is optional and defaults to placidus, with whole sign, equal, and koch also accepted.
curl -s -X POST "https://roxyapi.com/api/v2/astrology/composite-chart" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"person1": { "date": "1988-06-12", "time": "08:20:00", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York" },
"person2": { "date": "1990-11-03", "time": "17:45:00", "latitude": 51.50853, "longitude": -0.12574, "timezone": "Europe/London" },
"houseSystem": "placidus"
}'
const res = await fetch("https://roxyapi.com/api/v2/astrology/composite-chart", {
method: "POST",
headers: {
"X-API-Key": process.env.ROXYAPI_KEY!,
"Content-Type": "application/json",
},
body: JSON.stringify({
person1: { date: "1988-06-12", time: "08:20:00", latitude: 40.71427, longitude: -74.00597, timezone: "America/New_York" },
person2: { date: "1990-11-03", time: "17:45:00", latitude: 51.50853, longitude: -0.12574, timezone: "Europe/London" },
houseSystem: "placidus",
}),
});
const chart = await res.json();
console.log(chart.interpretation.summary);
import os, requests
res = requests.post(
"https://roxyapi.com/api/v2/astrology/composite-chart",
headers={"X-API-Key": os.environ["ROXYAPI_KEY"], "Content-Type": "application/json"},
json={
"person1": {"date": "1988-06-12", "time": "08:20:00", "latitude": 40.71427, "longitude": -74.00597, "timezone": "America/New_York"},
"person2": {"date": "1990-11-03", "time": "17:45:00", "latitude": 51.50853, "longitude": -0.12574, "timezone": "Europe/London"},
"houseSystem": "placidus",
},
)
chart = res.json()
print(chart["interpretation"]["summary"])
Every composite interpretation localizes with the ?lang= query across eight languages, native-speaker reviewed, so a Spanish or German relationship page renders from the same call with no second translation step.
To render a relationship reading in the browser with no backend, RoxyAPI also ships self-fetching widgets such as synastry-chart, compatibility-card, and natal-chart that read the API response with a publishable pk_ key. There is no composite-specific widget, so a composite chart is best drawn from the response in your own layer. Browse the set on the widgets page.
FAQ
What is the difference between a composite chart and synastry?
Synastry compares two intact birth charts by measuring the aspects between the planets of each person. A composite chart is a single new chart built from the midpoints of both charts, so it represents the relationship as one entity rather than a comparison. RoxyAPI returns the midpoint composite through the composite chart API and the cross-aspect view through the synastry endpoint, both from one key.
How is a composite Sun sign calculated?
The composite Sun is the exact ecliptic midpoint between the two natal Suns, not the Sun of either partner. Every other composite planet and both angles are computed the same way. RoxyAPI derives each underlying position from Roxy Ephemeris, verified against NASA JPL Horizons, so the midpoint inherits arc-second-level accuracy.
Does RoxyAPI have a composite chart API?
Yes. POST /astrology/composite-chart accepts two people plus an optional houseSystem and returns compositePlanets, compositeHouses, compositeAscendant, compositeMidheaven, aspects, and a relationship interpretation. Every response includes per-planet meanings and a summary with strengths and challenges, so you do not need a second call for readable output.
Can I get relationship interpretations from the composite chart API?
Yes. The interpretation block returns a summary, a strengths array, and a challenges array, and each composite planet carries its own compositeInterpretation with a summary, a relationshipMeaning, and keywords. The composite Sun reads as the core identity of the relationship, the composite Moon as its emotional tone, and the composite Venus as how it loves.
Which house system does the composite chart API use?
The composite chart API defaults to placidus and also accepts whole sign, equal, and koch through the optional houseSystem field. Houses are calculated at the geographic and temporal midpoint of the two births. Pass the value once in the request body and the composite house cusps come back on compositeHouses.
Conclusion
A composite chart is the one tool that treats a relationship as a single entity, and the midpoint method is what makes that possible. If synastry answers how two people interact, the composite answers who they are together, so shipping the right one starts with knowing the difference. Build it with the Astrology API and check pricing.