Morphemeris DocsBeta

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:00Z

Step 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/chart instead of separate /v1/positions + /v1/houses calls — it costs 1 credit instead of 2.
  • Include chiron and mean_node in 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.

On this page