October 24, 2026
·OpenEphemeris Team
How to Get a Geodetic Chart from the API
Send a latitude and longitude to POST /ephemeris/geodetic and get the geodetic Midheaven, Ascendant, 12 house cusps and sign zone of the place, with optional planets and angle contacts for a moment.
POST /ephemeris/geodetic returns the geodetic chart of a place. It was added in API 4.3.0. Geodetic astrology maps the Earth onto the zodiac: a place's east longitude from Greenwich is the zodiac longitude of that place's Midheaven. The Ascendant and the 12 house cusps follow from the latitude with the ordinary house engine.
Add a moment and the endpoint also places the planets of that moment in the place's geodetic houses, and reports their conjunctions, squares and oppositions to the four geodetic angles.
When to use it
Use it when your product works with places rather than people: a map layer, a "what does this city sit under" lookup, or a comparison of a transit against a fixed location.
The chart belongs to the place. The geodetic angles and houses do not depend on any date. A date only enters when you ask for planets or contacts, or when you ask for a sidereal chart.
The request
curl -X POST https://api.openephemeris.com/ephemeris/geodetic \
-H "X-API-Key: $OPENEPHEMERIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"latitude": 40.7128,
"longitude": -74.006,
"date_time": { "iso": "2026-10-24T12:00:00Z" },
"include": ["planets", "contacts"],
"orb_deg": 2
}'
For the place alone, send only latitude and longitude. The response then has place, geodetic and houses, with no planets or contacts.
Fields:
latitudeandlongitude(required): decimal degrees, east positive. A missing coordinate is a 422. It is never read as 0.date_time(optional): a moment, as{ "iso": "..." }with its zone. Required whenincludehasplanetsorcontacts, and forzodiac_typesidereal.include(optional):planets,contacts, or both.contactsimpliesplanets.orb_deg(optional, default 2): 0.1 to 10 degrees. Only allowed withcontacts.bodies(optional): up to 16 body names. The default is Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto and the Mean Node. Only allowed withplanetsorcontacts. An unknown name is a 422, never silently dropped.house_system(optional):P(default),K,O,R,C,EorW.zodiac_type(optional):tropical(default) orsidereal.ayanamsa(optional):lahiri,fagan_bradley,krishnamurti,ramanoryukteshwar. Only allowed withsidereal.anchorandanchor_offset_deg(optional):greenwichis the only named anchor.anchor_offset_deg(-180 to 180) is added to the longitude to move the anchor.format(optional):json(default) orllm. Withllmthe planet and contact rows move intometadataas fixed-width arrays.
The response
This is a real response to the request above, trimmed: 3 of the 11 bodies are shown, only the first 2 of 4 contacts are shown, some metadata keys are omitted, and most numbers are rounded to four decimals for display.
{
"success": true,
"data": {
"place": { "latitude": 40.7128, "longitude": -74.006 },
"geodetic": {
"anchor": "greenwich",
"anchor_offset_deg": 0,
"mc": { "longitude": 285.994, "sign": "Capricorn", "sign_longitude": 15.994 },
"ic": { "longitude": 105.994, "sign": "Cancer", "sign_longitude": 15.994 },
"asc": { "longitude": 29.2054, "sign": "Aries", "sign_longitude": 29.2054 },
"dsc": { "longitude": 209.2054, "sign": "Libra", "sign_longitude": 29.2054 },
"ramc": 287.3494,
"zone": { "sign": "Capricorn", "band_start_longitude": 270, "band_end_longitude": 300 }
},
"houses": {
"system": "P",
"effective_system": "P",
"cusps": [29.2054, 61.9975, 85.0594, 105.994, 129.5429, 161.8168, 209.2054, 241.9975, 265.0594, 285.994, 309.5429, 341.8168]
},
"planets": {
"Sun": { "longitude": 211.0936, "sign": "Scorpio", "sign_longitude": 1.0936, "house_number": 7 },
"Venus": { "longitude": 210.5397, "sign": "Scorpio", "sign_longitude": 0.5397, "house_number": 7 },
"North Node (Mean)": { "longitude": 326.4684, "sign": "Aquarius", "sign_longitude": 26.4684, "house_number": 11 }
},
"contacts": [
{ "body": "Sun", "angle": "asc", "aspect": "opposition", "orb": 1.8881 },
{ "body": "Sun", "angle": "dsc", "aspect": "conjunction", "orb": 1.8881 }
]
},
"metadata": {
"tradition": "geodetic_equivalents_greenwich",
"zodiac_type": "tropical",
"obliquity_deg": 23.439279444444445,
"obliquity_basis": "mean_j2000",
"mc_basis": "ecliptic_longitude",
"resolved_utc": "2026-10-24T12:00:00Z",
"julian_day": 2461338
}
}
How to read it:
- New York at 74.006 degrees west is 285.994 degrees east of Greenwich. That is the geodetic Midheaven, 15.994 degrees of Capricorn.
geodetic.zoneis the 30-degree band of the zodiac that holds the place: every place between those two meridians has its geodetic Midheaven in that sign. houses.cuspshas 12 values, houses 1 to 12.planetsis keyed by body name. Each planet is a geocentric ecliptic longitude in the zodiac you asked for, with the geodetic house that holds it.contactslists conjunctions, squares and oppositions between a planet andmc,ic,ascordsc, withinorb_deg.orbis the distance from exact, in degrees.ramcis the right ascension of the meridian. It is an equatorial angle in the tropical frame, whateverzodiac_typesays. It is not a zodiac degree.
Cost
1 credit per call, on every plan including the free Explorer tier. The price does not change with include.
Gotchas
The doctrine is a convention, and the response says which one it used. The geodetic mapping rests on secondary sources, and the primary text was not available. The Greenwich anchor is a convention. The Midheaven is the ecliptic degree, not the right ascension. The response states its choices: the anchor and offset, the fixed mean J2000 obliquity (obliquity_basis is mean_j2000, so the same place always gives the same answer), the house system and the zodiac. If you need a different anchor, send anchor_offset_deg.
A planet on one angle appears twice. The Ascendant and Descendant are opposite points. A planet conjunct the Descendant is also opposite the Ascendant, so it appears in contacts once for each. In the sample, the Sun is at orb 1.8881 to both asc (opposition) and dsc (conjunction). Filter on angle if you want one row per planet.
date_time needs a zone. A clock time without a zone, in the string or as a suffix such as Z, is rejected as ambiguous. A date alone resolves to 12:00 UTC. See A Timestamp Is Not a Moment.
Sidereal is the tropical chart shown in the sidereal zodiac. Every longitude, cusp and sign is shifted by the ayanamsa, so Greenwich reads about 6 degrees of Pisces rather than 0 degrees of Aries, and the shift grows with the date. That is why sidereal needs date_time. The response says so in metadata.sidereal_basis. If you want the place fixed to the sidereal zodiac instead, send anchor_offset_deg equal to the ayanamsa at that date.
Polar latitudes replace the house system. A quadrant house system inside the polar circle is replaced by Porphyry. houses.effective_system is then O, and metadata.warnings says so.
Options that do not apply are refused, not ignored. orb_deg without contacts, bodies without planets or contacts, ayanamsa without sidereal, an empty bodies list, and an unsupported anchor are each a 422. Body names look like the keys in the response, for example Sun, Saturn and North Node (Mean).