Natal Chart
GET /v1/natal-chart — Full natal chart with positions, houses, aspects, parallels, house placements, and optional dignities, patterns, and derived points.
Natal Chart
Compute a complete natal chart in a single request. Returns planetary positions with sign and degree, house cusps, aspects, parallels, house placements, retrograde flags, and out-of-bounds detection, and on request the essential dignities, aspect patterns, and derived points — all at the same 2 credits.
GET /v1/natal-chart
POST /v1/natal-chartCredit cost: 2
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
datetime | string | One of datetime or jd | — | ISO 8601 UTC datetime |
jd | number | One of datetime or jd | — | Julian Day in UT1 |
lat | number | Yes | — | Observer latitude (-90 to 90) |
lon | number | Yes | — | Observer longitude (-180 to 180) |
bodies | string | No | "planets" | Comma-separated body names, or "planets", "all" |
system | string | No | "placidus" | House system |
sidereal | string | No | — | Ayanamsha for sidereal mode |
aspects | string | No | Major 7 | Comma-separated aspect types |
orb | number | No | — | Global orb override in degrees |
applying | boolean | No | true | Compute the applying/separating flag on each aspect (null when false) |
parallels | boolean | No | true | Include declination parallels and contraparallels |
parallel_orb | number | No | 1.0 | Orb for parallels in degrees |
patterns | boolean | No | false | Populate patterns[] with detected aspect patterns; no extra cost |
pattern_types | string | No | All | Comma-separated pattern types to report when patterns=true |
stellium_min | integer | No | 3 | Minimum members for a stellium (2–10) |
stellium_scope | string | No | "sign" | "sign", "house", or "conjunction" |
derived_points | boolean | No | false | Populate derived_points[] with midpoints, antiscia, and lots; no extra cost |
midpoints, antiscia | boolean | No | true | Which derived points to include when derived_points=true |
lots | string | No | none | Lot names or default, added to derived_points[] when derived_points=true |
house_position_mode | string | No | "zodiacal" | "zodiacal" or "mundane" — see house position modes |
resolution | string | No | "lower" | 180° tie-break for derived midpoints: "lower" or "higher" |
dignities | boolean | No | false | Attach dignities[], the essential dignities of every body; no extra cost |
rulership | string | No | "traditional" | Rulership for dignities: "traditional" or "modern" |
day_chart | boolean | No | from the chart | Sect for the triplicity rulers. Omitted, the chart decides: the Sun on or above the horizon (measured along the ecliptic from the Ascendant, as for lots) is a day chart |
Response
{
"data": {
"chart_type": "natal",
"positions": [
{
"body": "sun",
"longitude": 84.388,
"latitude": 0.0001,
"distance_au": 1.0158,
"speed": 0.9551,
"retrograde": false,
"sign": "gemini",
"sign_degree": 24.388,
"house": 9,
"declination": 23.323,
"out_of_bounds": false
}
],
"houses": {
"cusps": [0.0, 200.1, 225.9, 256.3, 289.2, 320.6, 347.6, 20.1, 45.9, 76.3, 109.2, 140.6, 167.6],
"ascendant": 200.1,
"midheaven": 109.2,
"vertex": 318.5
},
"aspects": [
{
"body_a": "sun",
"body_b": "moon",
"aspect": "trine",
"angle": 121.23,
"orb": 1.23,
"max_orb": 8.0,
"applying": true
}
],
"parallels": [],
"patterns": [],
"derived_points": [],
"metadata": {
"datetime": 2448058.2708335,
"datetime_iso": "1990-06-15T18:30:00.000Z",
"location": { "latitude": 40.7128, "longitude": -74.006, "altitude": 0.0 },
"house_system": "Placidus",
"sidereal": null,
"bodies": ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "mean_node"],
"source": { "type": "natal" }
}
},
"meta": { "..." }
}Key response fields
| Field | Description |
|---|---|
chart_type | natal here; the derived-chart endpoints say davison, progressed, draconic, or return |
positions[] | One entry per body: longitude, latitude, distance_au, speed (degrees per day; negative when retrograde), sign, sign_degree, house, declination, retrograde, out_of_bounds |
positions[].house_position | Fractional house in [1, 13) (mundane mode only; house becomes its floor) |
houses | cusps is a 13-slot array — slot 0 is a placeholder, slots 1–12 are the cusps — plus ascendant, midheaven, and vertex |
aspects[] | Aspects between bodies: aspect, angle (the actual separation), orb (distance from exact), max_orb (the orb that admitted it), and applying (true, false, or null when applying=false) |
parallels[] | Declination parallels and contraparallels (unless parallels=false), each with declination_a, declination_b, orb, max_orb |
patterns[] | Aspect patterns — T-squares, grand trines, yods, … (when patterns=true; otherwise empty) |
derived_points[] | Midpoints, antiscia, and lots (when derived_points=true; otherwise empty) |
dignities[] | One dignity record per body, assessed for the chart's own sect (present only when dignities=true). Unlike /v1/dignities, which has no location and must be told day_chart, the chart finds its sect and always assesses the triplicity ruler |
metadata | datetime is the Julian Day (UT1) the chart was cast for, datetime_iso the same instant as UTC, location the place, house_system the system that produced the cusps (inside the polar circle the Porphyrius fallback rather than the one requested), sidereal the ayanamsha or null, bodies the list computed, and source a typed record of how the chart was derived ({ "type": "natal" } here) |
warnings | Engine conditions that degraded the chart (kind: high_latitude, ephemeris_fallback, low_precision, sidereal_not_configured), each with its details. Omitted when empty; the response's top-level warnings lists the same conditions as prose |
Examples
Basic natal chart
curl "https://api.morphemeris.com/v1/natal-chart?datetime=1990-06-15T18:30:00Z&lat=40.7128&lon=-74.006" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"const res = await fetch(
"https://api.morphemeris.com/v1/natal-chart?datetime=1990-06-15T18:30:00Z&lat=40.7128&lon=-74.006",
{ headers: { Authorization: "Bearer morphemeris_live_YOUR_KEY" } }
);
const { data } = await res.json();import requests
res = requests.get(
"https://api.morphemeris.com/v1/natal-chart",
params={"datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006},
headers={"Authorization": "Bearer morphemeris_live_YOUR_KEY"},
)
data = res.json()With parallels and modern rulership
curl "https://api.morphemeris.com/v1/natal-chart?datetime=1990-06-15T18:30:00Z&lat=40.7128&lon=-74.006¶llels=true&rulership=modern&applying=true" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"Vedic natal chart
curl "https://api.morphemeris.com/v1/natal-chart?datetime=1990-06-15T18:30:00Z&lat=40.7128&lon=-74.006&sidereal=lahiri&system=whole_sign" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"Tips
- Use
/v1/natal-chartinstead of separate/v1/chart+ manual aspect calculation — it costs 2 credits but returns everything you need for a complete chart interpretation. - Include
chironandmean_nodein the bodies list — most modern chart systems use them. - The default aspects are the 7 major aspects: conjunction, opposition, trine, square, sextile, quincunx, and semisextile.