Skip to content

Repository files navigation

Natal Chart API

Natal Chart API

Western natal chart with all 10 planetary positions, 12 house cusps across 4 house systems, major and minor aspects, Ascendant, Midheaven, dominant elements and modalities. One key covers 12+ spiritual domains. MCP-first, verified against NASA JPL Horizons.

Get API KeyTry LiveMethodologyMCP ServerSDK

What is Natal Chart API

A natal chart (birth chart) is the snapshot of the sky at the moment of birth. This repo ships working TypeScript, JavaScript, and Python samples against the RoxyAPI natal chart endpoint. The response returns a complete Western astrology natal chart with tropical zodiac. All 10 planetary positions (Sun through Pluto), 12 house cusps with customizable house systems (Placidus, Whole Sign, Equal, Koch), major and minor aspects, Ascendant, Midheaven, and dominant elements and modalities. One subscription unlocks 12+ spiritual domains: Western astrology, Vedic astrology, numerology, tarot, Human Design, Forecast, biorhythm, I Ching, crystals, dreams, angel numbers, and location. Every planetary position is computed by Roxy Ephemeris, verified against NASA JPL Horizons.

Why this API

PropertyValue
Coverage12+ spiritual domains in one subscription
CalculationRoxy Ephemeris, verified against NASA JPL Horizons
MCP serverhttps://roxyapi.com/mcp/astrology (Streamable HTTP, no local setup)
SDKsTypeScript on npm @roxyapi/sdk, Python on PyPI roxy-sdk, PHP on Packagist roxyapi/sdk, C# on NuGet RoxyApi.Sdk, Go github.com/RoxyAPI/sdk-go, WordPress plugin roxyapi
PricingOne key, flat per call, from $39/mo
LicensingPersonal and commercial use, including closed source apps. No AGPL or GPL entanglement. Full terms
Last verified2026-Q3

Quick start

  1. Get a key at roxyapi.com/pricing
  2. Pick a language below
  3. Copy the snippet, run, ship

cURL

# Step 1: geocode the birth city
curl -s "https://roxyapi.com/api/v2/location/search?q=New+York" \
-H "X-API-Key: $ROXY_API_KEY"# Step 2: call the natal chart endpoint with latitude, longitude, and timezone from cities[0]
curl -X POST https://roxyapi.com/api/v2/astrology/natal-chart \
-H "X-API-Key: $ROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "date": "1990-07-15", "time": "14:30:00", "latitude": 40.7128, "longitude": -74.006, "timezone": "America/New_York", "houseSystem": "placidus" }'

Python

importosfromroxy_sdkimportcreate_roxyroxy=create_roxy(os.environ["ROXY_API_KEY"])
# Step 1: geocode the birth city. Never hardcode coordinates.loc=roxy.location.search_cities(q="New York")
city=loc["cities"][0]
# Step 2: generate the full natal chartresult=roxy.astrology.generate_natal_chart(
date="1990-07-15",
time="14:30:00",
latitude=city["latitude"],
longitude=city["longitude"],
timezone=city["timezone"],
house_system="placidus",
)
print("Ascendant:", result["ascendant"]["sign"], result["ascendant"]["degree"])
print("Midheaven:", result["midheaven"]["sign"])
forplanetinresult["planets"][:3]:
print(planet["name"], "in", planet["sign"], "house", planet["house"])

JavaScript (Node)

import{createRoxy}from'@roxyapi/sdk';constroxy=createRoxy(process.env.ROXY_API_KEY);// Step 1: geocode the birth city. Never hardcode coordinates.const{data: loc}=awaitroxy.location.searchCities({query: {q: 'New York'}});const{ latitude, longitude, timezone }=loc.cities[0];// Step 2: generate the full natal chartconst{ data, error }=awaitroxy.astrology.generateNatalChart({body: {date: '1990-07-15',time: '14:30:00',
latitude,
longitude,
timezone,houseSystem: 'placidus',},});if(error)thrownewError(error.error);console.log('Ascendant:',data.ascendant.sign,data.ascendant.degree);console.log('Midheaven:',data.midheaven.sign);data.planets.slice(0,3).forEach(p=>console.log(`${p.name} in ${p.sign} house ${p.house}`));

TypeScript

import{createRoxy}from'@roxyapi/sdk';constroxy=createRoxy(process.env.ROXY_API_KEY!);// Step 1: geocode the birth city. Never hardcode coordinates.const{data: loc}=awaitroxy.location.searchCities({query: {q: 'New York'}});const{ latitude, longitude, timezone }=loc.cities[0];// Step 2: generate the full natal chart with planets, houses, aspects, Ascendant, Midheavenconst{ data, error }=awaitroxy.astrology.generateNatalChart({body: {date: '1990-07-15',time: '14:30:00',
latitude,
longitude,
timezone,houseSystem: 'placidus',},});if(error)thrownewError(error.error);console.log('Ascendant:',data.ascendant.sign,data.ascendant.degree);console.log('Midheaven:',data.midheaven.sign);console.log('Dominant element:',data.summary.dominantElement);console.log('Dominant modality:',data.summary.dominantModality);data.planets.slice(0,3).forEach(p=>console.log(`${p.name} in ${p.sign} (house ${p.house}) ${p.isRetrograde ? 'retrograde' : ''}`));console.log('Total aspects:',data.aspects.length);console.log('Pattern:',data.aspectsInterpretation.summary);

Request schema

FieldTypeRequiredDescription
datestringyesBirth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day
timestringyesBirth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown
latitudenumberyesBirth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. Call /location/search to get this
longitudenumberyesBirth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. Call /location/search to get this
timezonenumber or stringyesDecimal hours from UTC (e.g. -5 for EST, 5.5 for IST) OR IANA name (e.g. "America/New_York", "Asia/Kolkata"). IANA strings resolve to the DST-correct offset for the given date, so you can pass cities[0].timezone from /location/search directly
houseSystemstringnoplacidus (default), whole-sign, equal, or koch. Placidus is most popular in Western astrology and time-sensitive. Whole Sign assigns one sign per house. Equal divides the chart into 30 degree segments from the Ascendant. Koch emphasizes houses in high latitudes

Response shape

{
"birthDetails": {
"date": "1990-07-15",
"time": "14:30:00",
"latitude": 40.7128,
"longitude": -74.006,
"timezone": -4
},
"planets": [
{
"name": "Sun",
"longitude": 113.01,
"latitude": 0.0,
"sign": "Cancer",
"degree": 23.01,
"house": 9,
"speed": 0.9541,
"isRetrograde": false,
"interpretation": {
"summary": "Your Sun in Cancer in The Ninth House reveals how you express self-awareness and ego in the realm of beliefs.",
"detailed": "Sun represents self-awareness and ego. In Cancer, this energy becomes intuitive, nurturing, protective...",
"keywords": ["intuitive", "emotional", "intelligent", "passionate"]
}
}
],
"houses": [
{ "number": 1, "longitude": 216.94, "sign": "Scorpio", "degree": 6.94 }
],
"houseSystem": "placidus",
"aspects": [
{
"planet1": "Sun",
"planet2": "Moon",
"type": "TRINE",
"angle": 120,
"orb": 2.5,
"isApplying": true,
"strength": 75,
"interpretation": "harmonious"
}
],
"aspectsInterpretation": {
"summary": "Your chart contains 33 aspects: 5 harmonious, 16 challenging, and 12 neutral.",
"dominant": "balanced",
"harmonious": 5,
"challenging": 16,
"neutral": 12
},
"ascendant": { "sign": "Scorpio", "degree": 6.94, "longitude": 216.94 },
"midheaven": { "sign": "Leo", "degree": 14.37, "longitude": 134.37 },
"summary": {
"dominantElement": "Earth",
"dominantModality": "Cardinal",
"retrogradePlanets": ["Saturn", "Uranus", "Neptune", "Pluto"],
"elementDistribution": { "Fire": 3, "Earth": 4, "Air": 2, "Water": 4 },
"modalityDistribution": { "Cardinal": 7, "Fixed": 5, "Mutable": 1 }
}
}
FieldTypeDescription
birthDetailsobjectBirth details echoed back from the request. Confirms the input used for this chart
planetsarrayAll 10 planetary positions with zodiac signs, house placements, and interpretations. Includes North Node, South Node, and Chiron
planets[].signstringTropical zodiac sign this planet occupies
planets[].housenumberHouse placement (1-12) based on the selected house system
planets[].speednumberDaily motion in degrees per day. Negative values indicate retrograde
planets[].isRetrogradebooleanWhether the planet is in retrograde motion
planets[].interpretationobjectPlanet-in-sign-in-house narrative analysis with summary, detailed, and keywords
housesarrayAll 12 house cusps with zodiac positions. House cusps divide the chart into life areas
houseSystemstringHouse system used for this chart (placidus, whole-sign, equal, or koch)
aspectsarrayAll planetary aspects found in this chart with orbs, strength, and interpretation
aspects[].typestringAspect type: CONJUNCTION, OPPOSITION, TRINE, SQUARE, SEXTILE, and minor aspects
aspects[].orbnumberDistance from exact aspect in degrees. Tighter orb means stronger influence
aspects[].strengthnumberAspect strength percentage (0-100) based on orb tightness
aspects[].isApplyingbooleanWhether the aspect is applying (growing stronger) or separating (fading)
aspectsInterpretationobjectAspect pattern analysis: count of harmonious, challenging, neutral plus narrative summary and dominant flag
ascendantobjectRising sign at the eastern horizon. Defines outward personality and physical appearance
midheavenobjectMC. The highest point of the ecliptic at birth, representing career direction and public image
summaryobjectChart summary with dominantElement, dominantModality, retrogradePlanets, elementDistribution, modalityDistribution

Common use cases

Use caseEndpoint flow
Birth chart generator on an astrology websiteCall /location/search, then POST to /astrology/natal-chart. Render the chart wheel from planets[] and houses[]
Co-Star style natal chart productUse planets[].interpretation.summary for the personality blurb per planet placement
Astrology app rising sign and big three displayRead ascendant.sign plus the Sun and Moon entries in planets[]
Astrological consultation tool with full reportCombine planets[].interpretation.detailed plus aspectsInterpretation.summary for a long-form report
Aspect grid table (classic chart UI)Pivot aspects[] by planet1 and planet2 for a grid view, sorted by strength descending
Chart wheel SVG rendererUse houses[].longitude and planets[].longitude to plot positions on a 360 degree wheel

Related endpoints in this domain

  • POST /astrology/synastry (calculateSynastry) - inter-aspect analysis between two natal charts plus a compatibility score
  • POST /astrology/transits (calculateTransits) - current sky transits to a natal chart for live timing overlays
  • GET /astrology/horoscope/{sign}/daily (getDailyHoroscope) - daily horoscope by zodiac sign with overview, love, career, health

Use this in your AI agent

Connect Claude, GPT, Gemini, or Cursor to RoxyAPI through the remote MCP server. No Docker. No self hosting. The full MCP tool catalog for this domain is at https://roxyapi.com/mcp/astrology.

{
"mcpServers": {
"astrology": {
"url": "https://roxyapi.com/mcp/astrology",
"headers": { "X-API-Key": "$ROXY_API_KEY" }
}
}
}

See docs/mcp for Claude Desktop, Cursor, Windsurf, VS Code, and Claude Code setup.

For AI coding agents

This repo ships an AGENTS.md execution playbook. Cursor, Claude Code, Aider, Codex, Windsurf, RooCode, and Gemini CLI will pick it up automatically. Top level overview lives at roxyapi.com/AGENTS.md.

Resources

Other RoxyAPI samples

KP Astrology APISynastry APIDaily Horoscope APIKundli APINumerology API

License

MIT for this sample repo. See LICENSE.

Catalog licensing: Personal and commercial use, including closed source proprietary apps. No AGPL or GPL entanglement. RoxyAPI APIs and SDKs are safe to embed in commercial products. Full terms at roxyapi.com/policy/license.

Contact

About

Natal chart API. Per planet sign and house interpretations across 12 signs and 12 houses. Aspects, midheaven, ascendant. RoxyAPI verified.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages