Compute a Natal Chart
Calculate planetary positions and house cusps for a birth chart.
Compute a Natal Chart
A natal (birth) chart requires planetary positions and house cusps for a specific date, time, and location. The /v1/chart endpoint returns both in a single request.
What you need
- Birth date and time in UTC (convert from local time + timezone)
- Birth location as latitude and longitude
Step 1: Convert local time to UTC
The API accepts UTC only. If the birth time is "June 15, 1990 at 2:30 PM EDT":
EDT = UTC-4
14:30 EDT = 18:30 UTC
→ 1990-06-15T18:30:00ZStep 2: Get latitude and longitude
For New York City: lat=40.7128, lon=-74.0060
Step 3: Make the request
curl "https://api.morphemeris.com/v1/chart?\
datetime=1990-06-15T18:30:00Z\
&lat=40.7128\
&lon=-74.0060\
&system=placidus\
&bodies=sun,moon,mercury,venus,mars,jupiter,saturn,uranus,neptune,pluto,mean_node,chiron" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"Step 4: Use the data
The response contains everything needed to draw or interpret the chart:
const response = await fetch(url, { headers });
const { data } = await response.json();
// Planetary positions
for (const planet of data.positions) {
console.log(`${planet.body}: ${planet.sign} ${planet.sign_degree.toFixed(2)}°`);
// → sun: Gemini 24.83°
// → moon: Scorpio 12.41°
}
// House cusps
console.log(`Ascendant: ${data.houses.ascendant.toFixed(2)}°`);
console.log(`Midheaven: ${data.houses.midheaven.toFixed(2)}°`);
for (let i = 0; i < 12; i++) {
console.log(`House ${i + 1}: ${data.houses.cusps[i].toFixed(2)}°`);
}Tips
- Use
/v1/chartinstead of separate/v1/positions+/v1/housescalls — it costs 1 credit instead of 2. - Include
chironandmean_nodein the bodies list — most modern chart interpretations use them. - For Vedic charts, add
&sidereal=lahiri&system=whole_sign. - Cache results — the chart for a given birth time never changes.