Natal Chart API

Natal Chart API (JSON)

Send a birth moment and a place. Get planets, houses, angles, aspects and dignities back as JSON, computed from the NASA JPL DE440 ephemeris.

POST /ephemeris/natal-chart

1 credit for the JSON chart. On the free tier.

Request

Send your key in the X-API-Key header. Keep it on your server, not in browser code.

subject.birth_datetime
iso string, Julian Day or components.
subject.birth_location
latitude, longitude and an IANA timezone. Send the local time plus the zone, not your own UTC conversion.
configuration.house_system
Optional. For example placidus.
?format=llm
Optional query. A compact reply for AI use.
cURL
curl -X POST https://api.openephemeris.com/ephemeris/natal-chart \
  -H "X-API-Key: $OE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "name": "Example",
      "birth_datetime": {"iso": "1987-07-15T09:01:00"},
      "birth_location": {
        "latitude": {"decimal": 32.7767},
        "longitude": {"decimal": -96.797},
        "timezone": {"iana_name": "America/Chicago"}
      }
    },
    "configuration": {"house_system": "placidus"}
  }'
JavaScript (Node 18+)
const res = await fetch("https://api.openephemeris.com/ephemeris/natal-chart", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.OE_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    subject: {
      name: "Example",
      birth_datetime: { iso: "1987-07-15T09:01:00" },
      birth_location: {
        latitude: { decimal: 32.7767 },
        longitude: { decimal: -96.797 },
        timezone: { iana_name: "America/Chicago" },
      },
    },
    configuration: { house_system: "placidus" },
  }),
});
const chart = await res.json();
console.log(chart.angles.ascendant, chart.planets.Moon.sign_name);

Response

Planets are keyed by name, with longitude, sign, house and speed. Angles are degrees 0 to 360. Cusps start at the 1st house. Trimmed from a real response.

JSON
{
  "planets": {
    "Moon": {
      "longitude": 354.21634,
      "sign_name": "Pisces",
      "sign_longitude": 24.216333,
      "house_number": 8,
      "longitude_speed": 13.994535,
      "is_retrograde": false
    }
  },
  "angles": {
    "ascendant": 143.11507,
    "midheaven": 48.80119,
    "descendant": 323.11505,
    "imum_coeli": 228.8012
  },
  "houses": { "system": "P", "cusps": [143.11507, 167.4702, ...] },
  "aspects": [ { "planet1": "Sun", "planet2": "Moon", "aspect_type": "trine", ... } ]
}

Common questions

What does the natal chart endpoint return?

Planet and point positions, house cusps, angles, aspects and dignities. Extras such as midpoints, fixed stars and Arabic parts are options.

How accurate are the positions?

They come from the NASA JPL DE440 kernel. The proof page shows the measured gaps to JPL Horizons.

Can I get just the Ascendant?

Yes. The angles endpoint returns only the angles and points.

Is there a free tier?

Yes. The Explorer tier includes this endpoint, and a key needs no card.

Related: Ascendant API · Astrology API · Accuracy

Connect the MCP server in 30 seconds

Install it from the ChatGPT app directory in one click, or give Claude, Cursor, or any MCP client the same live data — no API key required to connect.