Astrology Houses API
Cosmic Ephemeris uses Western (tropical), geocentric astrology by default. Sidereal or Vedic-style calculations are not applied unless explicitly enabled and documented.
The Houses API calculates astrological house systems and chart angles using precise astronomical calculations. In addition to house cusps, this endpoint returns full chart context required for accurate rendering and analysis. All access uses API key authentication.
Endpoint
POST https://api.cosmicephemeris.com/api/astro/houses
Include Authorization: Bearer <API_KEY>.
Supported House Systems
equal(default)whole_signplacidus(beta, opt-in; undefined polar-domain geometry is rejected)porphyry(beta, opt-in; each angle-to-angle ecliptic quadrant is divided into thirds)meridian(beta, opt-in; equal right-ascension divisions projected onto the ecliptic)campanus(beta, opt-in; equal prime-vertical divisions projected through the north/south horizon points)regiomontanus(beta, opt-in; equal equatorial divisions projected through the north/south horizon points)alcabitius(beta, opt-in; Ascendant upper/lower right-ascension arcs trisected and projected by hour circles)koch(beta, opt-in; natal Midheaven rising semiarc trisected by intermediate birthplace Ascendants)morinus(beta, opt-in; equal celestial-equator points transformed directly into ecliptic longitude)topocentric(beta, opt-in; Polich/Page trisected-tangent pole heights and physical Ascendant/Midheaven axes)sripati(beta, opt-in; forward midpoints of Porphyry house sectors)vehlow(beta, opt-in; equal 30-degree houses with the Ascendant centered in house 1)horizon(beta, opt-in; equal local-horizon azimuth divisions projected through vertical circles)krusinski(beta, opt-in; equal Ascendant-zenith great-circle divisions projected through celestial meridian circles)sunshine(beta, opt-in; Treindl construction from trisected solar diurnal and nocturnal semi-arcs)sunshine_alt(beta, opt-in; Makransky projection of trisected solar semi-arc points)savard(beta, opt-in; Savard-A latitude-circle geometry projected through the prime vertical)pullen_sd(beta, opt-in; Pullen Sinusoidal Delta ecliptic-quadrant weighting)pullen_sr(beta, opt-in; Pullen Sinusoidal Ratio ecliptic-quadrant weighting)carter(beta, opt-in; Carter Poli-Equatorial equal right-ascension divisions from the Ascendant)apc(beta, opt-in; Ascendant Parallel Circle divided above and below the horizon)equal_mc(beta, opt-in; twelve equal ecliptic houses with MC at cusp 10)natural(beta, opt-in; sign-boundary houses with cusp 1 at zero degrees Aries)gauquelin(beta, opt-in on Houses only; 36 clockwise semiarc sector boundaries)
The response includes only the selected system entry under houses.systems.
The legacy alias whole is accepted and normalized to whole_sign.
Placidus, Porphyry, Meridian, Campanus, Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, Vehlow, Horizon/Azimuth, Krusinski-Pisa-Goelzer, Sunshine, Sunshine alternative, Savard-A, Pullen SD, Pullen SR, Carter, APC, Equal MC, Natural, and Gauquelin never silently fall back to another system.
Meridian cusp 10 is the Midheaven; cusp 1 is the Equatorial Ascendant,
which is generally not the physical Ascendant.
Campanus, Regiomontanus, Alcabitius, and Koch cusp 10 are also the Midheaven and cusp 1 is the physical Ascendant. Morinus cusps are latitude-independent; cusp 10 is the transformed equatorial RAMC point and cusp 1 is the transformed RAMC-plus-90-degree point, not the physical Midheaven or Ascendant. Topocentric uses the physical Ascendant and Midheaven for cusps 1 and 10 and changes house geometry only, not planet positions. Sripati cusps are the forward midpoints of Porphyry sectors; cusps 1 and 10 are not the physical Ascendant and Midheaven. Vehlow uses equal 30-degree houses from cusp 1 at Ascendant minus 15 degrees; the Ascendant is the center of house 1 and MC is separately returned. Horizon/Azimuth projects twelve equal local-horizon divisions through vertical circles to the ecliptic; cusp 1 is the prime-vertical intersection rather than the physical Ascendant, and cusp 10 is MC. Krusinski-Pisa-Goelzer projects twelve equal Ascendant-zenith great-circle divisions through celestial meridian circles; cusps 1 and 10 are the physical Ascendant and Midheaven. Sunshine uses the Treindl construction from trisected solar diurnal and nocturnal semi-arcs; cusps 1 and 10 are the physical Ascendant and Midheaven. Sunshine alternative independently uses the Makransky prime-vertical projection for the same solar house points. Savard-A projects one-third and two-thirds geographic-latitude circles through the prime vertical; cusps 1 and 10 are the physical Ascendant and Midheaven and opposite cusps are antipodal. Pullen SD redistributes each ecliptic quadrant's deviation from 90 degrees with quarter/half/quarter weighting; cusp 10 is the physical Midheaven and cusp 1 uses the orientation-adjusted Ascendant. Pullen SR proportions complementary quadrant house widths as rx, x, rx and r³x, r⁴x, r³x; cusp 10 is the physical Midheaven and cusp 1 uses the orientation-adjusted Ascendant. Carter divides right ascension into twelve equal arcs from the orientation-adjusted Ascendant and projects them to the ecliptic; cusp 10 is generally not the physical Midheaven. APC divides the Ascendant parallel into six sectors below and six above the horizon; cusps 1 and 10 are the orientation-adjusted angles and intermediate opposite cusps are not generally antipodal. Equal MC fixes the physical Midheaven at cusp 10 and places twelve equal 30-degree ecliptic houses; cusp 1 is generally not the physical Ascendant. Natural fixes cusp 1 at zero degrees Aries in the selected zodiac and places all cusps on sign boundaries; physical angles remain separate. Gauquelin instead returns 36 clockwise semiarc sector boundaries in the houses map, with sectors 1 and 10 at the Ascendant and Midheaven; it is rejected by Natal SVG.
Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, Vehlow, Horizon/Azimuth, Krusinski-Pisa-Goelzer, Sunshine, Sunshine alternative, Savard-A, Pullen SD, Pullen SR, Carter, APC, Equal MC, Natural, and Gauquelin are calculation-only here and are not saved-profile options.
Example Request
{
"birth": {
"date": "1990-01-01",
"time": "12:00",
"timezone": "UTC",
"lat": 40.7128,
"lon": -74.0060
},
"system": "equal"
}
Example Response
This verified response is abbreviated and numerically rounded. The gateway spreads the calculated chart fields at the top level and adds type and house_system.
{
"type": "houses",
"house_system": "equal",
"status": "ok",
"zodiac": "tropical",
"ayanamsa": null,
"planets": {
"Sun": { "lon": 280.8143, "sign": "Capricorn" },
"Moon": { "lon": 333.2677, "sign": "Pisces" }
},
"houses": {
"ascendant": 274.64,
"mc": 208.91,
"systems": {
"equal": {
"name": "Equal",
"houses": { "1": 274.6398, "2": 304.6398 }
}
}
},
"aspects": [
{
"p1": "Sun",
"p2": "Mars",
"type": "semisextile",
"exact_angle": 30,
"distance": 30.8142,
"orb": 0.8142
}
],
"nodes": {
"mean": {
"longitude": 318.4317,
"sign": "Aquarius",
"deg_in_sign": 18.4317
}
},
"metadata": {
"note": "Geocentric positions using JPL DE421 ephemeris."
}
}
Quick Test / curl
Use this curl command to quickly test the Houses API endpoint with your API key:
curl -i https://api.cosmicephemeris.com/api/astro/houses \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${COSMICEPHEMERIS_KEY}" \
-d '{
"birth": {
"date": "2000-01-01",
"time": "12:00",
"timezone": "America/New_York",
"lat": 33.7488,
"lon": -84.3877
},
"system": "equal"
}'
Common Uses
- Chart wheel rendering
- Natal interpretations
- Synastry overlays
- Life-area analytics
- Astrology dashboards
This API provides raw calculation data only; interpretation, scoring, and compatibility logic are handled client-side.
Accuracy boundary
Ascendant and Midheaven use apparent sidereal time and date-dependent true obliquity,
with eastern-horizon selection at polar latitudes. Exact geographic poles and coincident
horizon/ecliptic geometry return 400 because the Ascendant is undefined.
Beta Placidus uses an original semiarc solver and rejects its undefined polar domain
without a fallback. This is not a Swiss Ephemeris runtime. Public dates are
limited to 1900-01-01 through 2050-12-31, and omitted
birth timezones default to UTC.
// Node.js 22+ — server-side only
fetch("https://api.cosmicephemeris.com/api/astro/houses", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${process.env.COSMICEPHEMERIS_KEY}`
},
body: JSON.stringify({
birth: {
date: "1990-01-01",
time: "12:00",
timezone: "America/New_York",
lat: 40.7128,
lon: -74.0060
},
system: "equal"
})
})
.then(res => res.json())
.then(data => console.log(data));
# Python — Houses API
import os
import requests
url = "https://api.cosmicephemeris.com/api/astro/houses"
payload = {
"birth": {
"date": "1990-01-01",
"time": "12:00",
"timezone": "America/New_York",
"lat": 40.7128,
"lon": -74.0060
},
"system": "equal"
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.environ['COSMICEPHEMERIS_KEY']}"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())