Adjust Page Text Size

API Reference

Everything you need to build with Open Ephemeris, in one clear place.

Explore the full API with working payloads, pricing context, and copy-paste examples designed to help you move from first request to production with confidence.

QuickstartAPI key auth

Base URL

https://api.openephemeris.com

Auth — API Key

Use X-OpenEphemeris-API-Key in your app or server. Generate a key from the dashboard to start testing.

Auth — MCP / AI Tools

No key needed. Run npx -y @openephemeris/mcp-server — auto-connects via OAuth Device Auth. Credentials are cached and auto-refresh.

Auth — Remote MCP (Claude Web)

No local install. Add https://mcp.openephemeris.com/mcp as a custom connector — leave OAuth Client ID and Secret blank. The server uses OAuth 2.1 + PKCE with Dynamic Client Registration; Claude handles auth via a browser popup on first connect.

First request

curl -X POST "https://api.openephemeris.com/ephemeris/natal-chart" \
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": {
      "name": "Jane Smith",
      "birth_datetime": { "iso": "1985-03-20T08:15:00" },
      "birth_location": {
        "latitude": { "decimal": 37.7749 },
        "longitude": { "decimal": -122.4194 },
        "timezone": { "iana_name": "America/Los_Angeles" }
      }
    }
  }'

Every endpoint shows its credit cost up front — design with clarity before you write a line of integration code.

Stability

Versioning & Stability

OpenEphemeris is currently on v1. We are committed to API stability so integrations keep working without surprise.

90-Day Notice

No breaking changes will ship without at least 90 days' advance notice via the changelog, docs, and a deprecation response header on affected endpoints.

Deprecation Process

Deprecated features follow three phases: header warning on live responses → docs notice with sunset date → removal. The changelog is the canonical record of all changes.

Changelog

Every notable change is documented in the Changelog, including added endpoints, schema changes, and deprecation timelines.

Trust & Provenance

Why Open Ephemeris

Open Ephemeris calculates the exact positions of planets, the Moon, and other celestial bodies for any moment in time, anywhere on Earth. It is built on the same astronomical data and math libraries used by research observatories. Every result is deterministic — the same input always produces the same output, with no hidden adjustments.

Where the Data Comes From

Planet positions come from NASA JPL's DE440 ephemeris — the same dataset used by space missions and professional observatories. "Powered by NASA JPL" means we use their published planetary tables, not that OpenEphemeris is a NASA product. The calculations are performed by the SuperNOVAS and Calceph open-source libraries, both widely used in academic astronomy. DE440 covers dates from 1550 through 2650 CE with sub-arcsecond precision.

How Precise It Is

Planetary positions are accurate to better than one arcsecond — roughly the width of a coin viewed from two miles away. Earth's orientation data comes from the IERS (the international service that tracks how Earth spins). Every endpoint uses the same math pipeline, so a natal chart calculation and a full astrocartography sweep produce perfectly consistent results.

How Time & Location Work

You provide a date, time, and place. OpenEphemeris converts the date into a Julian Day number (the standard way astronomers count days), applies a correction called ΔT to account for variations in Earth's rotation, and resolves the timezone using the IANA timezone database — the same one your phone uses. Coordinates can be sent as decimal degrees, degree-minute-second strings, or structured objects.

Engine Details

How Calculations Work

Understanding the calculation steps helps you interpret results and explains why OpenEphemeris numbers may differ slightly from other tools.

What Happens When You Send a Request

  • Date & time — your date is converted to a Julian Day number, then a small correction (ΔT) is applied to translate from clock time to the precise astronomical timescale. This ensures planet positions are computed to the correct fraction of a second.
  • Planet positions — the NASA DE440 tables are queried for each planet's position on the ecliptic (the plane of Earth's orbit). Positions are measured in degrees along the zodiac, starting from the March equinox point.
  • Houses & angles — based on your location and house system choice (Placidus by default), the sky is divided into twelve segments. The Ascendant, Midheaven, and other angles are derived from your latitude and sidereal time.
  • Output format — you receive full-precision JSON by default. Add format=llm to get a compact, AI-friendly format that reduces the response size by 50–75% while keeping all essential information.

Why Results May Differ From Other Tools

If you compare OpenEphemeris results to other astrology software, small differences are normal. Here are the most common reasons:

  • Different planet tables — OpenEphemeris uses NASA DE440. Many other tools use older ephemeris libraries or DE405 tables. These produce slightly different positions (usually less than a few arcseconds).
  • Different time corrections — the ΔT value (the difference between clock time and astronomical time) varies between tools, especially for historical dates before precise timekeeping existed.
  • Different house systems — Placidus is the default in OpenEphemeris. Other tools may default to Koch, Whole Sign, or Equal houses. Switching systems changes house cusps and planet placements.
  • Western vs. Vedic zodiac — western astrology uses the tropical zodiac (aligned to the seasons). Vedic astrology uses the sidereal zodiac (aligned to the fixed stars), which is currently about 24° behind. OpenEphemeris handles both — vedic endpoints default to the sidereal Lahiri ayanamsa.

Capability Map

Every astrological computation

Explore the breadth of the API across core ephemeris features, predictive timing, astrocartography, and specialized astrological traditions.

Coverage Snapshot13 verticals126 operations representedPrioritized by implementation value

Ephemeris Core

Start with reliable positions, houses, aspects, and chart fundamentals. This is the base layer most product experiences depend on.

Predictive Timing

Turn celestial motion into actionable timing windows for forecasting, reminders, and ongoing user guidance.

Electional Astrology

Programmatically discover optimal timing windows with constraint-based searching, moment scoring, and exact phase tracking.

Astrocartography

Add location intelligence by showing where planetary lines are strongest and how places compare.

Time & Calendar Intelligence

Keep results aligned with timezone, calendar, and astronomical time standards across regions. Powered by an offline geocoder covering 229,000+ cities worldwide.

Visualization + Delivery

Generate chart visuals and delivery-ready payloads so your UI, exports, and automations ship faster.

Comparative & Relationship

Build richer relationship features with structured synastry and composite outputs instead of static compatibility text.

LLM + Agent Workflows

Integrate clean, compact responses into AI workflows so models can reason faster with lower token cost.

Lunar, Venus & Eclipse Cycles

Track phases, lunations, eclipses, and cycle milestones for event-based planning and notifications.

Human Design + Tradition Systems

Support Human Design chart analysis and traditional system coverage in one integration path.

Eclipse & Advanced Timing

Go deeper with precision eclipse visibility, Besselian elements, and advanced analytical endpoints for forecasting.

Vedic + Chinese Astrology

Compute core Vedic and BaZi outputs with the same API patterns used across the platform.

Agriculture + Tidal Planning

Use practical timing data for farming, marine, and environmental planning workflows.

Precision & Scope

Supported Math & Bodies

OpenEphemeris provides native astronomical and interpretive computations under a unified API surface. No trigonometric or manual post-processing of variables required.

Planetary Bodies

Standard: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto.
Asteroids & Centaurs: Chiron, Ceres, Pallas, Juno, Vesta, Eros, Sappho, Pholus, Nessus, Chariklo, Hygiea, etc. (50+ extended bodies).
Trans-Neptunian: Eris, Makemake, Haumea, Sedna, Quaoar, Orcus, Ixion, Varuna.

Angles & Calculated Points

Nodes: True North Node, Mean North Node, True South Node, Mean South Node.
Lunar Apogee: True Lilith (Osculating), Mean Lilith, Interpolated (Natural) Lilith.
Mathematical Angles: Ascendant, Midheaven (MC), Descendant, Imum Coeli (IC), Equatorial Ascendant, Vertex, Anti-Vertex, East Point.

Interpretive Mathematics

Dignities: Domicile, Exaltation, Detriment, Fall.
Planetary State: Retrograde, Station Direct, Station Retrograde, Velocity (Daily Motion), Out of Bounds (Declination).
Solar Phasis: Combustion (under the sunbeams), Cazimi (in the heart of the sun).
Sect: Diurnal (Day chart) and Nocturnal (Night chart) determinations.

House Systems

We natively support 12 distinct topological divisions:
Placidus (default), Koch, Whole Sign, Equal, Campanus, Regiomontanus, Porphyry, Meridian, Morinus, Alcabitius, Vehlow, and Krusinski.

Hermetic Lots (Arabic Parts)

Computed natively with strict adherence to day/night sect reversals:
Part of Fortune (Lot of the Moon), Part of Spirit (Lot of the Sun), Part of Necessity (Mercury), Part of Love/Eros (Venus), Part of Courage (Mars), Part of Victory (Jupiter), Part of Nemesis (Saturn).

Fixed Stars

High-precision equatorial and ecliptical coordinates alongside transit/natal parans for 110 predefined stellar bodies, including:
Algol, Aldebaran, Rigel, Capella, Betelgeuse, Sirius, Castor, Pollux, Procyon, Regulus, Spica, Arcturus, Antares, Vega, Altair, Fomalhaut.

Zodiac Frameworks

Tropical: Standard western, seasonally aligned.
Sidereal Ayanamsas: Lahiri, Fagan-Bradley, Raman, Krishnamurti, Yukteshwar.

Endpoint Guide

How to Choose the Right Endpoint

OpenEphemeris has 121 endpoints across 20 groups. Start from what you want to build and the table below will point you to the right place.

If you want to…Start here
Generate a birth chart (planet positions, houses, aspects)Ephemeris
Know when planets change signs or form alignmentsPredictive
Compare two people's charts for compatibilityComparative
Show planetary influence lines on a world mapACG
Display a chart wheel image (SVG or PNG)Visualization
Find when the next eclipse happens (or check a past one)Eclipse
Track the Moon — sign, phase, void-of-courseLunar
Calculate a Human Design chart (type, profile, gates, channels)Human Design
Run Vedic (Jyotish) or Chinese (BaZi) calculationsVedic / Chinese
Get planting or farming calendars based on the MoonAgricultural
Find the best time to start something (electional timing)Electional
Convert a place name to latitude/longitude and timezoneLocation
Browse supported planets, house systems, or star catalogsCatalogs

MCP Integration

Connect to Your AI Assistant

OpenEphemeris integrates with AI assistants via the Model Context Protocol (MCP). Choose the method that fits your setup.

Local (stdio) — Developers

  1. Install Node.js ≥ 18
  2. Add to your MCP config: npx -y @openephemeris/mcp-server
  3. The server auto-authenticates via browser on first use

Works with Cursor, Windsurf, Zed, Claude Desktop, Claude Code, and any stdio MCP client.

Remote (Streamable HTTP) — Claude Web & Mobile

  1. Open claude.ai → Settings → Connectors → Add custom connector
  2. Paste this URL: https://mcp.openephemeris.com/mcp
  3. Leave OAuth Client ID and Secret blank — do not fill Advanced Settings
  4. Click Connect — sign in (or sign up free in 30s) in the browser popup; tools are discovered automatically

No downloads. No Node.js. OAuth 2.1 + PKCE with Dynamic Client Registration per MCP 2025-11-25 Streamable HTTP spec. Custom connectors require a paid Claude plan (Pro or higher); on Claude Desktop and Claude Code, all plans work.

AI Skills — Interpretation Packs

Download free skill packs (natal charts, timing, compatibility, Human Design, Chinese & Vedic) that teach any AI assistant to interpret OpenEphemeris data like a professional astrologer.

Upload to Claude via Settings → Skills. For other LLMs, use the .md content as a system prompt.

ChatGPT — Custom GPT Action

  1. Go to chatgpt.com → Create a GPT → Actions → Import from URL
  2. Enter: https://api.openephemeris.com/openapi.json
  3. Set auth: API Key in header X-OpenEphemeris-API-Key

Uses the OpenAPI spec directly — no MCP required. ChatGPT natively understands all endpoints.

Code Examples

Official Integration Repository

We maintain a public repository of copy-paste ready scripts spanning Python, TypeScript, and Shell. Whether you are fetching raw astrocartography geoJSON for a map, requesting JSON-LD LLM context, or testing Human Design transits locally, our examples repository gets you to production faster.

Tier Access

Which endpoints need which plan?

Every endpoint has a minimum tier. Explorer-tier endpoints are available to all authenticated users (including the free plan). Higher-tier endpoints return a structured 403 error with upgrade response with upgrade instructions if your plan doesn't include them.

After You Upgrade or Downgrade

When your plan changes, the new tier takes effect within 45 seconds for API key users and within 60 seconds for JWT (session) users. During that brief window, the previous tier may still apply. If you need to force an immediate refresh, generate a new API key from the dashboard. Cached API responses expire after 120 seconds.

Exploring the API?

Explorer accounts start with 150 free credits. Need more to finish testing? Add credits from $5 — no subscription required, no auto-renewal, and credits never expire.

Tier Access MatrixExplorer · 70Pro · 30Startup · 1Scale · 8113 endpoints
MethodEndpointMin TierCredits
ACG14 endpoints
GET/acg/datasetsExplorer0
GET/acg/metaExplorer0
POST/acg/ccgPro10
POST/acg/hitsPro10
POST/acg/local-spacePro10
POST/acg/power-linesPro10
POST/acg/aspectsScale10
POST/acg/ccg/paransScale10
POST/acg/crossingsScale10
POST/acg/declination-linesScale10
POST/acg/hermetic-linesScale10
POST/acg/midpointsScale10
POST/acg/paransScale10
POST/acg/relational-paransScale20
calendar3 endpoints
GET/calendar/astrology/cross-quarterExplorer10
GET/calendar/astrology/lunar-standstillExplorer10
GET/calendar/astrology/moon-phasesExplorer10
catalogs3 endpoints
GET/catalogs/bodiesExplorer0
GET/catalogs/fixed-starsExplorer0
GET/catalogs/fixed-stars/groupsExplorer0
chinese8 endpoints
POST/chinese/baziExplorer1
GET/chinese/zodiacExplorer1
POST/chinese/bazi/annual-pillarPro3
POST/chinese/bazi/compatibilityPro3
POST/chinese/bazi/element-balancePro3
POST/chinese/bazi/luck-pillarsPro3
POST/chinese/bazi/solar-termsPro3
POST/chinese/bazi/ten-godsPro3
eclipse5 endpoints
GET/eclipse/besselian-elementsExplorer1
GET/eclipse/lunar/globalExplorer1
GET/eclipse/next-visibleExplorer1
GET/eclipse/solar/globalExplorer1
GET/eclipse/solar/localExplorer1
agricultural3 endpoints
GET/ephemeris/agro/calendarExplorer1
GET/ephemeris/agro/dailyExplorer1
GET/ephemeris/agro/void-of-courseExplorer1
ephemeris19 endpoints
POST/ephemeris/angles-pointsExplorer1
POST/ephemeris/antisciaExplorer1
POST/ephemeris/aspect-checkExplorer1
POST/ephemeris/declinationsExplorer1
POST/ephemeris/dignitiesExplorer1
POST/ephemeris/dispositor-treeExplorer1
POST/ephemeris/draconicExplorer1
POST/ephemeris/fixed-starsExplorer1
POST/ephemeris/harmonicsExplorer1
POST/ephemeris/hermetic-lotsExplorer1
POST/ephemeris/house-cuspsExplorer1
POST/ephemeris/lunar-phaseExplorer1
POST/ephemeris/midpointsExplorer1
POST/ephemeris/natal-chartExplorer1
POST/ephemeris/planet-positionExplorer1
POST/ephemeris/retrograde-statusExplorer1
POST/ephemeris/prenatal-lunationPro5
POST/ephemeris/relocationPro1
POST/ephemeris/natal/batchStartup1
api-metadata3 endpoints
GET/ephemeris/house-systemsExplorer0
GET/ephemeris/schemas/natal-responseExplorer0
GET/ephemeris/supported-objectsExplorer0
lunar4 endpoints
GET/ephemeris/moon/aspectsExplorer1
GET/ephemeris/moon/ingressesExplorer1
GET/ephemeris/moon/phaseExplorer1
GET/ephemeris/moon/void-of-courseExplorer1
predictive12 endpoints
POST/ephemeris/progressedExplorer1
POST/predictive/transit-chartexplorer1
POST/predictive/transits/planet-to-degreeexplorer5
POST/predictive/transits/searchexplorer5
POST/predictive/transits/sign-ingressesexplorer5
POST/predictive/primary-directionsPro5
POST/predictive/returnsPro5
POST/predictive/returns/lunarPro5
POST/predictive/returns/solarPro5
POST/predictive/time-lords/firdariaPro5
POST/predictive/time-lords/profectionsPro5
POST/predictive/time-lords/zodiacal-releasingPro5
venus-cycles6 endpoints
POST/ephemeris/venus-star-pointsExplorer1
POST/ephemeris/venus-star-points/conjunctionsExplorer1
POST/ephemeris/venus-star-points/eight-year-starExplorer1
POST/ephemeris/venus-star-points/elongationsExplorer1
POST/ephemeris/venus-star-points/phaseExplorer1
POST/ephemeris/venus-star-points/stationsExplorer1
Human Design8 endpoints
POST/human-design/chartExplorer2
POST/human-design/cycles/oppositionExplorer2
POST/human-design/cycles/returnExplorer2
POST/human-design/cycles/solar-returnExplorer2
POST/human-design/pentaExplorer2
POST/human-design/transitExplorer2
POST/human-design/compositePro3
POST/human-design/transit-chartPro3
location-timezone4 endpoints
GET/location/autocompleteExplorer1
GET/location/reverseExplorer1
POST/timezone/lookupExplorer1
POST/timezone/offsetExplorer1
tidal2 endpoints
GET/tidal/forcingExplorer1
GET/tidal/forcing/deep-timeExplorer1
Time Conversion6 endpoints
GET/time/delta-tExplorer1
GET/time/equation-of-timeExplorer1
POST/time/julian-dayExplorer1
POST/time/scalesExplorer1
GET/time/siderealExplorer1
GET/time/solar-eventExplorer1
vedic1 endpoints
POST/vedic/chartExplorer1
visualization3 endpoints
POST/visualization/bi-wheelExplorer2
POST/visualization/bodygraphExplorer2
POST/visualization/chart-wheelExplorer2
comparative5 endpoints
POST/comparative/compositePro3
POST/comparative/composite/midpointPro3
POST/comparative/natal-transitsPro3
POST/comparative/overlayPro3
POST/comparative/synastryPro3
electional4 endpoints
GET/electional/aspect-searchPro5
GET/electional/find-windowPro5
GET/electional/moment-analysisPro5
GET/electional/station-trackerPro5

Auto-generated from the API's OpenAPI specification and tier gating middleware. Public endpoints (health checks, metadata, schemas) are omitted. All authenticated users access Explorer-tier endpoints. Higher-tier endpoints return a 403 Tier upgrade required response with upgrade instructions.

Read-Only Reference

Browse every endpoint without console noise.

This page stays read-only on purpose. Each endpoint includes the path, billing cost, required parameters, a working payload, and starter code for real integrations.

121 endpoints shown/121 total/17 metered groups/3 free groups

health

System health and readiness checks. Free — not metered.

System health checks. Verify that the API and its calculation engines are online and responding. Useful for monitoring dashboards and uptime checks.

GETFreeExplorer

Global Health Check

/health

Basic health check for the entire API service.

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/health"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

503

Service Unavailable - readiness check failed

GETFreeExplorer

Detailed Health Check

/health/detailed

Comprehensive health check with dependency status validation.

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/health/detailed"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

503

Service Unavailable - readiness check failed

api-metadata

Discover the API schema and current contract hash. Free — not metered.

Discovery and schema endpoints. Retrieve the OpenAPI specification, supported house systems, available celestial objects, and request/response schemas — useful for code generation and dynamic client configuration.

GETFreeExplorer

API Root

/

Welcome endpoint with API information and links to documentation.

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200Response Root Get

Successful Response

GETFreeExplorer

Get Supported House Systems

/ephemeris/house-systems

Get list of supported astrological house systems

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/house-systems"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

List of supported house systems

400

Bad Request - Input validation failed

404

Not found

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

GETFreeExplorer

Get Natal Chart Request Schema

/ephemeris/schemas/natal-request

Get JSON schema for natal chart request format

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/schemas/natal-request"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

JSON schema for natal chart requests

400

Bad Request - Input validation failed

404

Not found

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

GETFreeExplorer

Get Natal Chart Response Schema

/ephemeris/schemas/natal-response

Get JSON schema for natal chart response format

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/schemas/natal-response"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

JSON schema for natal chart responses

400

Bad Request - Input validation failed

404

Not found

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

GETFreeExplorer

Get Supported Metadata

/ephemeris/supported-metadata

Get canonical metadata lookups used by calculations (sign elements/modalities, supported enums like dignity systems, house systems, node sources, etc.).

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/supported-metadata"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Supported metadata

400

Bad Request - Input validation failed

404

Not found

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

GETFreeExplorer

Get Supported Celestial Objects

/ephemeris/supported-objects

Get list of supported celestial objects in calculations

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/supported-objects"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Supported celestial objects

400

Bad Request - Input validation failed

404

Not found

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

GETFreeExplorer

Get Openapi Schema

/meta/openapi.json

Return the OpenAPI schema for automated client generation. Used by frontend build processes to generate type-safe API clients. Authentication is NOT required for this discovery endpoint to facilitate automated toolchain integration. Returns: OpenAPI 3.0 schema (JSON)

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/meta/openapi.json"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

GETFreeExplorer

Get Api Version

/meta/version

Return current API version and contract hash for cache invalidation. Frontend CI uses this to detect schema changes and trigger client regeneration. Authentication is not required for this discovery endpoint.

No auth requiredStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/meta/version"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

ephemeris

Discover the foundation of any chart. Get natal positions, houses, lots, core aspects, and fixed stars. Calculated with NASA-grade precision (DE440). Deep-time queries (DE441) are fully supported. 1 unit per request.

The core of OpenEphemeris. Send a birth date, time, and place to receive a complete snapshot of where every planet was at that moment — positions, houses, angles, aspects, and more. This is the starting point for most integrations.

POST1 call / requestExplorer

Calculate angles + points (granular)

/ephemeris/angles-points

Mechanical endpoint returning Asc/MC/Desc/IC plus Vertex/Anti-Vertex.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "house_system": "P",
  "latitude": 40.7128,
  "longitude": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/angles-points"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "house_system": "P",
  "latitude": 40.7128,
  "longitude": -74.006
}'

Responses

200AnglesPointsResponse

Angles calculated successfully

400ErrorResponse

Invalid input

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

POST1 call / requestExplorer

Calculate antiscia and contra-antiscia

/ephemeris/antiscia

Calculate antiscia (mirror points across the Cancer/Capricorn solstice axis) and contra-antiscia for a set of planetary longitudes. Detects hidden conjunctions where one planet's antiscion falls on another planet's natal position. Central to Hellenistic and traditional Western astrology. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "bodies": [
    {
      "id": 0,
      "longitude": 15
    },
    {
      "id": 1,
      "longitude": 165
    },
    {
      "id": 4,
      "longitude": 225
    }
  ],
  "orb": 2
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/antiscia"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "bodies": [
    {
      "id": 0,
      "longitude": 15
    },
    {
      "id": 1,
      "longitude": 165
    },
    {
      "id": 4,
      "longitude": 225
    }
  ],
  "orb": 2
}'

Responses

200AntisciaResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Check aspects between two longitudes

/ephemeris/aspect-check

Lightweight endpoint for calculating aspects between two celestial longitudes. Supports filtering by aspect type and custom orb limits.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "aspect_types": [
    "conjunction",
    "opposition",
    "square",
    "trine"
  ],
  "longitude1": 120,
  "longitude2": 180,
  "max_orb": 6
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/aspect-check"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "aspect_types": [
    "conjunction",
    "opposition",
    "square",
    "trine"
  ],
  "longitude1": 120,
  "longitude2": 180,
  "max_orb": 6
}'

Responses

200AspectCheckResponse

Aspects calculated successfully

400ErrorResponse

Invalid input (e.g., longitude out of range)

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

POST1 call / requestExplorer

Out-of-Bounds Declination Analysis

/ephemeris/declinations

Analyse ecliptic coordinates to compute equatorial declinations, detect out-of-bounds (OOB) planets, and find declination aspects (parallels and contraparallels). A planet is out of bounds when its declination exceeds the obliquity of the ecliptic (~23.44°). OOB planets operate outside the Sun's framework and are interpreted as wildcards in contemporary astrology. The Moon is the most frequently OOB body. Parallels (same declination, same hemisphere) behave like conjunctions; contraparallels (equal but opposite declination) behave like oppositions. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris kernel required.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "bodies": [
    {
      "id": 1,
      "latitude": 1,
      "longitude": 1
    }
  ],
  "obliquity": 23.4393,
  "parallel_orb": 1
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/declinations"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "bodies": [
    {
      "id": 1,
      "latitude": 1,
      "longitude": 1
    }
  ],
  "obliquity": 23.4393,
  "parallel_orb": 1
}'

Responses

200DeclinationAnalysisResponse

Successful Response

422ErrorResponse

Unprocessable Entity - Invalid input

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calculate essential dignities (granular)

/ephemeris/dignities

Mechanical endpoint returning essential dignity scores for Sun..Pluto.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "latitude": 40.7128,
  "longitude": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/dignities"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "latitude": 40.7128,
  "longitude": -74.006
}'

Responses

200DignitiesResponse

Dignities calculated successfully

400ErrorResponse

Invalid input

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

POST1 call / requestExplorer

Build dispositor tree from planetary placements

/ephemeris/dispositor-tree

Build a dispositor tree from a set of planetary sign placements. Each planet is "disposed" by the ruler of the sign it occupies. The algorithm walks these rulership chains to identify final dispositors (planets ruling their own sign) and mutual receptions (pairs disposing each other). No ephemeris kernel required — pass in pre-computed sign placements. Signs are 0-based in the API (0=Aries … 11=Pisces) and converted internally. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

API key or signed-in accountStatus: live

Parameters

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "planets": [
    {
      "planet_id": 1,
      "sign": 1
    }
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/dispositor-tree"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "planets": [
    {
      "planet_id": 1,
      "sign": 1
    }
  ]
}'

Responses

200DispositorTreeResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calculate Draconic Chart

/ephemeris/draconic

Calculates draconic chart with True Node as 0 Aries.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "format": "json"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/draconic"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "format": "json"
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST1 call / requestExplorer

Fixed star position calculations

/ephemeris/fixed-stars

Calculate positions for fixed stars at a specific moment. Supports individual star names, predefined groups (royal_stars, behenian, navigational, foundation_24, galactic), and magnitude filtering. Returns ecliptic coordinates, proper motion, and metadata for each star. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2023-12-07T15:30:00Z"
  },
  "min_magnitude": 2,
  "star_names": [
    "Regulus",
    "Spica",
    "Aldebaran"
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/fixed-stars"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2023-12-07T15:30:00Z"
  },
  "min_magnitude": 2,
  "star_names": [
    "Regulus",
    "Spica",
    "Aldebaran"
  ]
}'

Responses

200FixedStarsCalculationResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Harmonic Chart Analysis

/ephemeris/harmonics

Calculate harmonic chart positions by multiplying natal longitudes by a harmonic number N and reducing modulo 360°. Finds conjunctions in the harmonic space to reveal hidden aspect patterns. Harmonic analysis is the mathematical backbone of aspect theory: the 5th harmonic unfolds quintiles, the 7th reveals septiles, the 9th produces the Vedic navamsa. Higher harmonics expose increasingly subtle geometric relationships invisible in a standard chart wheel. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "bodies": [
    {
      "id": 1,
      "longitude": 1
    }
  ],
  "harmonic": 1,
  "orb": 8
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/harmonics"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "bodies": [
    {
      "id": 1,
      "longitude": 1
    }
  ],
  "harmonic": 1,
  "orb": 8
}'

Responses

200HarmonicsResponse

Successful Response

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calculate Hermetic lots for datetime and location

/ephemeris/hermetic-lots

Calculate Hermetic lots (Fortune Suite + optional/legacy) for a given datetime and location. Returns normalized lot positions with traditional source references, formulas, and keywords. Includes sect determination (diurnal/nocturnal) and house placements. Follows standalone pattern: direct Julian Day calculation without chart context. Supports format=json|llm via query params.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "1985-06-15T14:30:00Z"
  },
  "include_legacy": false,
  "include_optional": false,
  "latitude": 40.7128,
  "longitude": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/hermetic-lots"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "1985-06-15T14:30:00Z"
  },
  "include_legacy": false,
  "include_optional": false,
  "latitude": 40.7128,
  "longitude": -74.006
}'

Responses

200HermeticLotsCalculationResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calculate house cusps (granular)

/ephemeris/house-cusps

Mechanical endpoint returning house cusps for up to 5 house systems.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "house_systems": [
    "P",
    "W"
  ],
  "latitude": 40.7128,
  "longitude": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/house-cusps"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "house_systems": [
    "P",
    "W"
  ],
  "latitude": 40.7128,
  "longitude": -74.006
}'

Responses

200HouseCuspsResponse

House cusps calculated successfully

400ErrorResponse

Invalid input

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

POST1 call / requestExplorer

Calculate lunar phase for datetime

/ephemeris/lunar-phase

Calculate the current lunar phase based on Sun-Moon elongation. Returns phase name/angle, illumination percentage, and lunation metadata (New Moon/Full Moon dates, day of lunation, void-of-course status). 🤖 AI-optimized output available — add format=llm to reduce payload ~50%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/lunar-phase"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  }
}'

Responses

200LunarPhaseCalculationResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calculate midpoints for datetime

/ephemeris/midpoints

Calculate zodiacal midpoints from planetary longitudes, detecting conjunctions and oppositions to sensitive points. Supports sort-by-type, tree grouping, and dial-degree formatting. 🤖 AI-optimized output available — add format=llm to reduce payload ~65%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "arc_type": "short",
  "date_time": {
    "iso": "2023-12-07T15:30:00Z"
  },
  "include_angles": true,
  "include_occupied": false,
  "latitude": 40.7128,
  "longitude": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/midpoints"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "arc_type": "short",
  "date_time": {
    "iso": "2023-12-07T15:30:00Z"
  },
  "include_angles": true,
  "include_occupied": false,
  "latitude": 40.7128,
  "longitude": -74.006
}'

Responses

200MidpointsCalculationResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Enhanced Natal Chart Calculation

/ephemeris/natal-chart

Calculate a comprehensive natal chart with optional enhanced features. Features - Core: Planetary positions, houses, angles. - Enhanced: Aspects, patterns, midpoints, harmonics, fixed stars, Arabic parts, dignities. - Output modes: full (default), simple (core only), llm (AI-optimized). Input Flexibility - Coordinates: decimal degrees, DMS strings, or component objects - DateTime: ISO-8601 strings, Julian Day, or component objects - Timezone: IANA names, UTC offsets, or auto-detection Legacy request fields (e.g., custom orb tables) are safely ignored under the simplified contract but remain accepted for compatibility. 🤖 AI-optimized output available — add format=llm to reduce payload ~75%.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. Controls what is computed (pre-calculation).

Example: full

formatquery

Response format: json | llm. Controls response projection only.

Example: json

Functional Request Payload

{
  "configuration": {
    "ayanamsa": "lahiri",
    "coordinate_frame": "equatorial",
    "coordinate_system": "topocentric",
    "house_system": "W",
    "object_set": "asteroids_major",
    "zodiac_type": "sidereal"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1985-03-20T08:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 37.7749
      },
      "longitude": {
        "decimal": -122.4194
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Jane Smith"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/natal-chart"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "configuration": {
    "ayanamsa": "lahiri",
    "coordinate_frame": "equatorial",
    "coordinate_system": "topocentric",
    "house_system": "W",
    "object_set": "asteroids_major",
    "zodiac_type": "sidereal"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1985-03-20T08:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 37.7749
      },
      "longitude": {
        "decimal": -122.4194
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Jane Smith"
  }
}'

Responses

200NatalChartEnhancedResponse

Successful enhanced chart calculation

400ErrorResponse

Input validation error

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Chart calculation error

POST1 call / requestStartup

Batch natal calculations

/ephemeris/natal/batch

Compute multiple natal charts in a single request with shared guardrails. 🤖 AI-optimized output available — add format=llm to reduce payload ~80%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "enhanced_options": {
    "aspect_patterns": true,
    "include_midpoints": true
  },
  "format": "json",
  "items": [
    {
      "configuration": {
        "coordinate_frame": "ecliptic",
        "coordinate_system": "geocentric",
        "house_system": "W",
        "object_set": "modern_plus_chiron",
        "zodiac_type": "tropical"
      },
      "subject": {
        "birth_datetime": {
          "iso": "1992-01-10T04:15:00"
        },
        "birth_location": {
          "latitude": {
            "decimal": 40
          },
          "longitude": {
            "decimal": -74
          },
          "timezone": {
            "iana_name": "America/New_York"
          }
        },
        "name": "Batch Subject 1"
      }
    },
    {
      "subject": {
        "birth_datetime": {
          "iso": "1988-07-22T19:45:00"
        },
        "birth_location": {
          "latitude": {
            "decimal": 34.0522
          },
          "longitude": {
            "decimal": -118.2437
          },
          "timezone": {
            "iana_name": "America/Los_Angeles"
          }
        },
        "name": "Batch Subject 2"
      }
    }
  ],
  "limits": {
    "max_payload_kilobytes": 512,
    "max_subjects": 10
  },
  "preset": "full"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/natal/batch"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "enhanced_options": {
    "aspect_patterns": true,
    "include_midpoints": true
  },
  "format": "json",
  "items": [
    {
      "configuration": {
        "coordinate_frame": "ecliptic",
        "coordinate_system": "geocentric",
        "house_system": "W",
        "object_set": "modern_plus_chiron",
        "zodiac_type": "tropical"
      },
      "subject": {
        "birth_datetime": {
          "iso": "1992-01-10T04:15:00"
        },
        "birth_location": {
          "latitude": {
            "decimal": 40
          },
          "longitude": {
            "decimal": -74
          },
          "timezone": {
            "iana_name": "America/New_York"
          }
        },
        "name": "Batch Subject 1"
      }
    },
    {
      "subject": {
        "birth_datetime": {
          "iso": "1988-07-22T19:45:00"
        },
        "birth_location": {
          "latitude": {
            "decimal": 34.0522
          },
          "longitude": {
            "decimal": -118.2437
          },
          "timezone": {
            "iana_name": "America/Los_Angeles"
          }
        },
        "name": "Batch Subject 2"
      }
    }
  ],
  "limits": {
    "max_payload_kilobytes": 512,
    "max_subjects": 10
  },
  "preset": "full"
}'

Responses

200NatalBatchResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Get single planet position

/ephemeris/planet-position

Lightweight endpoint for retrieving a single planet's position at a specific time. Supports both geocentric (default) and topocentric (with latitude/longitude) calculations.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "latitude": 40.7128,
  "longitude": -74.006,
  "planet_id": 0
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/planet-position"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "latitude": 40.7128,
  "longitude": -74.006,
  "planet_id": 0
}'

Responses

200PlanetPositionResponse

Planet position calculated successfully

400ErrorResponse

Invalid input (e.g., unknown planet_id)

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

POST5 calls / requestPro

Calculate Prenatal Lunation

/ephemeris/prenatal-lunation

Calculates the prenatal new and full moon for a subject.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "birth_datetime": "string",
  "latitude": 1,
  "longitude": 1,
  "format": "json",
  "house_system": "string",
  "prenatal_type": "auto"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/prenatal-lunation"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": "string",
  "latitude": 1,
  "longitude": 1,
  "format": "json",
  "house_system": "string",
  "prenatal_type": "auto"
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST1 call / requestPro

Calculate relocation chart

/ephemeris/relocation

Return angles, house cusps, and planet house changes for a relocated chart. 🤖 AI-optimized output available — add format=llm to reduce payload ~55%.

API key or signed-in accountStatus: beta

Parameters

formatquery

Response format: json | llm.

Example: string

Functional Request Payload

{
  "house_system": "P",
  "natal": {
    "subject": {
      "birth_datetime": {
        "iso": "1990-01-01T12:00:00Z"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Relocation Client"
    }
  },
  "relocation_lat": 40.7128,
  "relocation_lon": -74.006
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/relocation"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "house_system": "P",
  "natal": {
    "subject": {
      "birth_datetime": {
        "iso": "1990-01-01T12:00:00Z"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Relocation Client"
    }
  },
  "relocation_lat": 40.7128,
  "relocation_lon": -74.006
}'

Responses

200RelocationResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

Example Success Response

{
  "angles": {
    "asc": {
      "longitude": 123.45,
      "sign": "Leo",
      "sign_longitude": 3.45,
      "sign_symbol": "Leo"
    },
    "dsc": {
      "longitude": 303.45,
      "sign": "Aquarius",
      "sign_longitude": 3.45,
      "sign_symbol": "Aquarius"
    },
    "ic": {
      "longitude": 30.1,
      "sign": "Taurus",
      "sign_longitude": 0.1,
      "sign_symbol": "Taurus"
    },
    "mc": {
      "longitude": 210.1,
      "sign": "Scorpio",
      "sign_longitude": 0.1,
      "sign_symbol": "Scorpio"
    }
  },
  "calculation_metadata": {
    "coordinate_system": "geocentric",
    "ephemeris_source": "SuperNOVAS / Calceph",
    "zodiac_type": "tropical"
  },
  "houses": [
    {
      "index": 1,
      "longitude": 123.45,
      "sign": "Leo",
      "sign_longitude": 3.45,
      "size": 30
    },
    {
      "index": 2,
      "longitude": 153.45,
      "sign": "Virgo",
      "sign_longitude": 3.45,
      "size": 28.7
    }
  ],
  "metadata": {
    "calculation_source": "SuperNOVAS / Calceph",
    "house_system": "P",
    "natal_house_system": "P",
    "observer_location": {
      "latitude": 40.7128,
      "longitude": -74.006
    },
    "reference_frame": "geocentric_ecliptic_J2000",
    "requested_house_system": "P",
    "time_system": "UTC",
    "topocentric_flag": false
  },
  "planet_house_changes": [
    {
      "body": "Sun",
      "from_house": 10,
      "to_house": 9
    },
    {
      "body": "Venus",
      "from_house": 7,
      "to_house": 8
    }
  ],
  "success": true,
  "summary": {
    "changed_houses": 12,
    "changed_planets": 2,
    "notes": "Relocated using Placidus; planetary longitudes unchanged."
  }
}
POST1 call / requestExplorer

Check planet retrograde status

/ephemeris/retrograde-status

Lightweight endpoint for determining whether a planet is retrograde at a specific time. Returns motion type (direct/retrograde/stationary) and speed data.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "planet_id": 2
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/retrograde-status"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date_time": {
    "iso": "2025-12-11T12:00:00Z"
  },
  "planet_id": 2
}'

Responses

200RetrogradeStatusResponse

Retrograde status determined successfully

400ErrorResponse

Invalid input (e.g., unknown planet_id)

422HTTPValidationError

Validation Error

500ErrorResponse

Calculation error

predictive

Look ahead (or behind). Find exact times for transits, cast solar & lunar returns, and calculate progressions. 5 units per request.

Answer the question "what happens next?" Find the exact dates when planets change signs, form alignments, or return to their birth position. Use these for transit alerts, horoscope engines, or timing features.

POST1 call / requestExplorer

Calculate progressed chart (Secondary, Tertiary, Solar Arc)

/ephemeris/progressed

Return progressed positions, aspects, and metadata for a subject. Supports Secondary (Naibod), Tertiary, and Solar Arc methods. 🤖 AI-optimized output available — add ormat=llm to reduce payload ~70%.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. For non-full formats this controls what is computed (pre-calculation).

Example: full

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "configuration": {
    "house_system": "P",
    "object_set": "asteroids_major",
    "zodiac_type": "tropical"
  },
  "options": {
    "include_aspects": true,
    "include_declination_aspects": true
  },
  "progression_options": {
    "day_year_ratio": 1,
    "method": "secondary"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1990-01-01T12:00:00Z"
    },
    "birth_location": {
      "latitude": {
        "decimal": 34.0522
      },
      "longitude": {
        "decimal": -118.2437
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Secondary Progression Example"
  },
  "target_datetime": {
    "iso": "2025-11-06T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/progressed"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "configuration": {
    "house_system": "P",
    "object_set": "asteroids_major",
    "zodiac_type": "tropical"
  },
  "options": {
    "include_aspects": true,
    "include_declination_aspects": true
  },
  "progression_options": {
    "day_year_ratio": 1,
    "method": "secondary"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1990-01-01T12:00:00Z"
    },
    "birth_location": {
      "latitude": {
        "decimal": 34.0522
      },
      "longitude": {
        "decimal": -118.2437
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Secondary Progression Example"
  },
  "target_datetime": {
    "iso": "2025-11-06T00:00:00Z"
  }
}'

Responses

200ProgressedChartResponse

Successful progressed chart calculation

400ErrorResponse

Input validation error

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Calculation or internal error

POST5 calls / requestPro

Calculate Primary Directions

/predictive/primary-directions

Calculates Placidian semi-arc primary directions.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "format": "json",
  "include_aspects": [
    1
  ],
  "include_converse": true,
  "max_age_years": 1
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/primary-directions"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "format": "json",
  "include_aspects": [
    1
  ],
  "include_converse": true,
  "max_age_years": 1
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST5 calls / requestPro

Calculate Planetary Return Timing

/predictive/returns

Calculate the nearest return timing (body returns to its natal longitude) near a target datetime. Supported bodies: Sun–Uranus, Mean Node, Mean/True Lilith. 🤖 AI-optimized output available — add format=llm to reduce payload ~65%.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. Controls what is computed when include_chart=true.

Example: full

formatquery

Response format: json | llm.

Example: json

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

include_housesquery

No description provided.

Example: true

include_aspectsquery

No description provided.

Example: true

include_minor_aspectsquery

No description provided.

Example: true

include_declination_aspectsquery

No description provided.

Example: true

include_dignitiesquery

No description provided.

Example: true

include_hermetic_lotsquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "body": "Sun",
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 5,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/returns"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "body": "Sun",
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 5,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}'

Responses

200PlanetaryReturnResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

404ErrorResponse

Return not found within the specified search window (increase search_window_days)

422ErrorResponse

Unprocessable Entity - Invalid input

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error

POST5 calls / requestPro

Calculate Lunar Return Timing

/predictive/returns/lunar

Calculate the nearest lunar return timing (Moon returns to its natal longitude) near a target datetime.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. Controls what is computed when include_chart=true.

Example: full

formatquery

Response format: json | llm.

Example: json

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

include_housesquery

No description provided.

Example: true

include_aspectsquery

No description provided.

Example: true

include_minor_aspectsquery

No description provided.

Example: true

include_declination_aspectsquery

No description provided.

Example: true

include_dignitiesquery

No description provided.

Example: true

include_hermetic_lotsquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 30,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/returns/lunar"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 30,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}'

Responses

200LunarReturnResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

404ErrorResponse

Return not found within the specified search window (increase search_window_days)

422ErrorResponse

Unprocessable Entity - Invalid input

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error

POST5 calls / requestPro

Calculate Solar Return Timing

/predictive/returns/solar

Calculate the nearest solar return timing (Sun returns to its natal longitude) near a target datetime.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. Controls what is computed when include_chart=true.

Example: full

formatquery

Response format: json | llm.

Example: json

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

include_housesquery

No description provided.

Example: true

include_aspectsquery

No description provided.

Example: true

include_minor_aspectsquery

No description provided.

Example: true

include_declination_aspectsquery

No description provided.

Example: true

include_dignitiesquery

No description provided.

Example: true

include_hermetic_lotsquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 5,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/returns/solar"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": {
    "iso": "1990-06-15T14:30:00Z"
  },
  "house_system": "P",
  "include_chart": true,
  "location": {
    "elevation": 10,
    "latitude": {
      "decimal": 40.7128
    },
    "longitude": {
      "decimal": -74.006
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "return_location": {
    "elevation": 71,
    "latitude": {
      "decimal": 34.0522
    },
    "longitude": {
      "decimal": -118.2437
    },
    "timezone": {
      "iana_name": "UTC"
    }
  },
  "search_window_days": 5,
  "target_datetime": {
    "iso": "2024-06-15T00:00:00Z"
  }
}'

Responses

200SolarReturnResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

404ErrorResponse

Return not found within the specified search window (increase search_window_days)

422ErrorResponse

Unprocessable Entity - Invalid input

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error

POST5 calls / requestPro

Firdaria Planetary Periods

/predictive/time-lords/firdaria

Calculate firdaria (فرادير) — the medieval Persian planetary period system that assigns each of the seven classical planets a fixed number of years as the dominant ruler of life. The 75-year master cycle differs for day births (diurnal) and night births (nocturnal). Each major period is subdivided into seven sub-periods in Chaldean order. Firdaria operates independently of signs and houses — it is purely a time-based system making it complementary to profections and transits. Think of it as a 75-year program schedule: knowing your current major and sub-period ruler tells you which planetary archetype is most active in your life right now. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "birth_datetime": "2025-01-01T00:00:00Z",
  "is_day_birth": true,
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "target_datetime": "2025-01-01T00:00:00Z"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/time-lords/firdaria"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": "2025-01-01T00:00:00Z",
  "is_day_birth": true,
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "target_datetime": "2025-01-01T00:00:00Z"
}'

Responses

200FirdariaResponse

Successful Response

422ErrorResponse

Unprocessable Entity - Invalid input

500ErrorResponse

Internal Server Error

POST5 calls / requestPro

Annual Profections Time Lords

/predictive/time-lords/profections

Calculate annual profections — the foundational Hellenistic timing technique that advances one zodiac sign per birthday from the natal Ascendant. Returns the profected sign, activated house, time lord planet, element, modality, and a full multi-year timeline. Profections are the simplest and most widely used timing technique in traditional astrology, experiencing a major revival in modern Hellenistic practice. Each year of life activates one whole-sign house from the Ascendant; the ruler of that sign becomes the "time lord" coloring the entire year. Angular years (1st, 4th, 7th, 10th) are typically the most eventful. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "ascendant_sign": 0,
  "birth_datetime": "2025-01-01T00:00:00Z",
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "target_datetime": "2025-01-01T00:00:00Z",
  "years_backward": 5
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/time-lords/profections"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "ascendant_sign": 0,
  "birth_datetime": "2025-01-01T00:00:00Z",
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "target_datetime": "2025-01-01T00:00:00Z",
  "years_backward": 5
}'

Responses

200ProfectionsResponse

Successful Response

422ErrorResponse

Unprocessable Entity - Invalid input

500ErrorResponse

Internal Server Error

POST5 calls / requestPro

Zodiacal Releasing Time Lords

/predictive/time-lords/zodiacal-releasing

Calculate zodiacal releasing — the most powerful timing technique in Hellenistic astrology. Divides life into chapters ruled by zodiac signs, starting from a sensitive Lot (Fortune or Spirit). Each sign rules for its planetary ruler's minor years in months. Angular periods (1st, 4th, 7th, 10th from the Lot) mark peak chapters. Loosing of the bond occurs when a period's ruler falls in a cadent sign. Returns L1 major periods with optional L2 sub-periods, peak period identification, angular/loosing flags, and an optional current-period highlight at the target datetime. 🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: json

Functional Request Payload

{
  "birth_datetime": "2025-01-01T00:00:00Z",
  "lot_name": "fortune",
  "lot_sign": 0,
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "max_years": 100
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/time-lords/zodiacal-releasing"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime": "2025-01-01T00:00:00Z",
  "lot_name": "fortune",
  "lot_sign": 0,
  "house_system": "string",
  "latitude": -90,
  "longitude": -180,
  "max_years": 100
}'

Responses

200ZodiacalReleasingResponse

Successful Response

422ErrorResponse

Unprocessable Entity - Invalid input

500ErrorResponse

Internal Server Error

POST1 call / requestexplorer

Calculate transit chart (full chart snapshot)

/predictive/transit-chart

Return a full chart payload for a given moment (transit chart). Includes all supported bodies: Sun–Pluto (core) plus Chiron, Mean/True North & South Nodes, Mean/True Lilith (Black Moon), and Ceres (extended bodies — gracefully omitted when ephemeris kernels are unavailable). Also returns houses/angles, aspects (major; minor opt-in), and a body_categories map for UI rendering. This is a chart snapshot endpoint (not a transit event search). 🤖 AI-optimized output: add format=llm to reduce payload ~70%.

API key or signed-in accountStatus: live

Parameters

presetquery

Computation preset: full | simple. Controls what is computed (pre-calculation).

Example: full

formatquery

Response format: json | llm. Controls response projection only.

Example: json

include_minor_aspectsquery

Opt-in to minor aspects (e.g., quincunx, semisquare, quintile).

Example: true

Functional Request Payload

{
  "configuration": {
    "ayanamsa": "lahiri",
    "coordinate_frame": "equatorial",
    "coordinate_system": "topocentric",
    "house_system": "W",
    "object_set": "asteroids_major",
    "zodiac_type": "sidereal"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1985-03-20T08:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 37.7749
      },
      "longitude": {
        "decimal": -122.4194
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Jane Smith"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/transit-chart"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "configuration": {
    "ayanamsa": "lahiri",
    "coordinate_frame": "equatorial",
    "coordinate_system": "topocentric",
    "house_system": "W",
    "object_set": "asteroids_major",
    "zodiac_type": "sidereal"
  },
  "subject": {
    "birth_datetime": {
      "iso": "1985-03-20T08:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 37.7749
      },
      "longitude": {
        "decimal": -122.4194
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Jane Smith"
  }
}'

Responses

200EnhancedChartSuccessResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

422ErrorResponse

Unprocessable Entity - Invalid input format

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error - Calculation failed

POST5 calls / requestexplorer

Calculate Planetary Transit to Degree

/predictive/transits/planet-to-degree

Calculate when a planet transits to a specific longitude degree. Features: - Sub-minute precision for transit timing - Retrograde motion handling with multiple crossings - Duration calculations (approach and separation) - All traditional and modern planets supported Performance: <50ms for single transit calculations

API key or signed-in accountStatus: live

Parameters

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "max_crossings": 3,
  "planet_name": "Mars",
  "start_date": "2024-01-01T00:00:00Z",
  "target_degree": 15.5
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/transits/planet-to-degree"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "max_crossings": 3,
  "planet_name": "Mars",
  "start_date": "2024-01-01T00:00:00Z",
  "target_degree": 15.5
}'

Responses

200PlanetTransitResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

422ErrorResponse

Unprocessable Entity - Invalid input format

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error - Calculation failed

POST5 calls / requestexplorer

Search Transit Events

/predictive/transits/search

Search for various types of transit events within a date range. Features: - Comprehensive transit searches - Configurable date ranges (up to 5 years) - Multiple transit types and aspects - Detailed timing and metadata Performance: Optimized for large-scale searches

API key or signed-in accountStatus: live

Parameters

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "end_date": "2025-01-01T00:00:00Z",
  "planet_names": [
    "Mars",
    "Jupiter"
  ],
  "start_date": "2024-01-01T00:00:00Z",
  "target_degrees": [
    0,
    90,
    180,
    270
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/transits/search"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "end_date": "2025-01-01T00:00:00Z",
  "planet_names": [
    "Mars",
    "Jupiter"
  ],
  "start_date": "2024-01-01T00:00:00Z",
  "target_degrees": [
    0,
    90,
    180,
    270
  ]
}'

Responses

200TransitSearchResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

422ErrorResponse

Unprocessable Entity - Invalid input format

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error - Calculation failed

POST5 calls / requestexplorer

Calculate Sign Ingresses

/predictive/transits/sign-ingresses

Calculate planetary sign ingresses (when planets change zodiac signs). Features: - Sub-minute precision for ingress timing - Retrograde status detection - All traditional and modern planets - Batch processing for multiple planets Performance: <200ms for batch ingress calculations

API key or signed-in accountStatus: live

Parameters

include_metadataquery

No description provided.

Example: true

trim_precisionquery

No description provided.

Example: true

decimal_placesquery

No description provided.

Example: 1

angle_formatquery

No description provided.

Example: string

Functional Request Payload

{
  "end_date": "2025-01-01T00:00:00Z",
  "planet_names": [
    "Mars",
    "Jupiter"
  ],
  "start_date": "2024-01-01T00:00:00Z",
  "target_sign": "Aries"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/predictive/transits/sign-ingresses"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "end_date": "2025-01-01T00:00:00Z",
  "planet_names": [
    "Mars",
    "Jupiter"
  ],
  "start_date": "2024-01-01T00:00:00Z",
  "target_sign": "Aries"
}'

Responses

200SignIngressResponse

Successful Response

400ErrorResponse

Bad Request - Input validation failed

422ErrorResponse

Unprocessable Entity - Invalid input format

429ErrorResponse

Rate Limit Exceeded - Too many requests

500ErrorResponse

Internal Server Error - Calculation failed

comparative

Explore relationships and overlays. Cast synastry, composite, and transit-to-natal charts effortlessly. 3 units per request. (Scales by subject count for composites/overlays.)

Compare two people. Synastry measures how two birth charts interact, composite blends them into one relationship chart, and overlay shows one chart laid on top of another. Built for relationship and compatibility features.

POST3 calls / requestPro

Calculate Composite

/comparative/composite

Calculate a composite chart (Davidson or Midpoint). 🤖 AI-optimized output available — add format=llm to reduce payload ~65%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "method": "davidson",
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/comparative/composite"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "method": "davidson",
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}'

Responses

200NatalChartEnhancedResponse

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Calculate Composite Midpoint

/comparative/composite/midpoint

Calculate a 2-person midpoint composite (planets averaged; houses/angles from Davison midpoint time+place). 🤖 AI-optimized output available — add format=llm to reduce payload ~65%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "method": "davidson",
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/comparative/composite/midpoint"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "method": "davidson",
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}'

Responses

200NatalChartEnhancedResponse

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Calculate Natal Transits

/comparative/natal-transits

Calculate a synastry-style overlay between a natal chart and transits. - Chart A: natal subject at birth - Chart B: the same subject/location at transit_datetime (defaults to now UTC)

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "transit_datetime": {
    "iso": "2025-01-01T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/comparative/natal-transits"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "transit_datetime": {
    "iso": "2025-01-01T00:00:00Z"
  }
}'

Responses

200NatalTransitsResponse

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Calculate Overlay

/comparative/overlay

Return lightweight chart payloads for an overlay across multiple subjects (no aspects).

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/comparative/overlay"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subjects": [
    {
      "birth_datetime": {
        "iso": "1990-06-15T14:30:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 40.7128
        },
        "longitude": {
          "decimal": -74.006
        },
        "timezone": {
          "iana_name": "America/New_York"
        }
      },
      "name": "Alice"
    },
    {
      "birth_datetime": {
        "iso": "1992-02-10T09:15:00"
      },
      "birth_location": {
        "latitude": {
          "decimal": 34.0522
        },
        "longitude": {
          "decimal": -118.2437
        },
        "timezone": {
          "iana_name": "America/Los_Angeles"
        }
      },
      "name": "Bob"
    }
  ]
}'

Responses

200OverlayResponse

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Calculate Synastry

/comparative/synastry

Calculate a synastry chart (comparison between two subjects). 🤖 AI-optimized output available — add format=llm to reduce payload ~65%.

API key or signed-in accountStatus: live

Parameters

presetquery

No description provided.

Example: full

formatquery

No description provided.

Example: json

Functional Request Payload

{
  "subject_a": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "subject_b": {
    "birth_datetime": {
      "iso": "1992-02-10T09:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 34.0522
      },
      "longitude": {
        "decimal": -118.2437
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Bob"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/comparative/synastry"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject_a": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "subject_b": {
    "birth_datetime": {
      "iso": "1992-02-10T09:15:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 34.0522
      },
      "longitude": {
        "decimal": -118.2437
      },
      "timezone": {
        "iana_name": "America/Los_Angeles"
      }
    },
    "name": "Bob"
  }
}'

Responses

200SynastryResponse

Successful Response

422HTTPValidationError

Validation Error

ACG

Map the cosmos to the earth. Astrocartography (ACG), cyclocartography (CCG), and Local Space endpoints. Returns GeoJSON feature collections—perfect for drawing maps in your app. 2 units per request.

Plot where planetary influence is strongest on a world map. Astrocartography lines show locations where specific planets were rising, setting, or at their peak when you were born. Returns GeoJSON for custom rendering — overlay planetary lines on an interactive map without computing geometry client-side.

POST10 calls / requestScale

Calculate Astrocartography Aspect Lines

/acg/aspects

Calculate strictly isolated ACG aspect lines. Options configurations to include power lines/midpoints will be explicitly stripped.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/aspects"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

FeatureCollection response (features is always an array; may be empty).

422HTTPValidationError

Validation Error

POST10 calls / requestPro

Cyclocartography Time-Series

/acg/ccg

Compute cyclocartography transit snapshots over a time window.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/ccg"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST10 calls / requestScale

Transit Parans

/acg/ccg/parans

Computes on-demand transit parans at a single epoch.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/ccg/parans"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}'

Responses

200

FeatureCollection response

422HTTPValidationError

Validation Error

POST10 calls / requestScale

ACG Line Crossing Points

/acg/crossings

Find exact geographic points where two ACG lines intersect. This is a novel feature — no other public ACG API provides crossing points as structured data. Returns GeoJSON Point features. Response packaging is stable: type=FeatureCollection, features is always an array (possibly empty), and crossing_count matches the feature count.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/crossings"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

FeatureCollection response (features is always an array; may be empty).

422HTTPValidationError

Validation Error

GETFreeExplorer

Available ACG Datasets

/acg/datasets

List available celestial body catalogs and aspect angles.

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/acg/datasets"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

POST10 calls / requestScale

ACG Declination Parallel Lines

/acg/declination-lines

Compute declination parallel and contra-parallel latitude bands. A NOVEL feature — no other ACG tool maps declination parallels geographically. Returns horizontal GeoJSON lines where two bodies share (parallel) or oppose (contra-parallel) declination. Current endpoint contract uses a fixed 1.5° orb (DefaultDeclinationOrb). No max_orb query parameter is accepted on this route.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/declination-lines"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POSTMeteredservice

ACG Feature Collection

/acg/features

Query ACG features as a GeoJSON FeatureCollection.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/features"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST10 calls / requestScale

Hermetic Lines

/acg/hermetic-lines

Calculates Astrocartography (ACG) geometry exclusively for the seven classical Hermetic Lots (Lot of Fortune, Spirit, Eros, Necessity, Courage, Victory, and Nemesis). ### Astrological & Mathematical Geometry Hermetic Lots are sensitive mathematical points derived from the natal Ascendant and two planetary positions (e.g., Day Fortune = Ascendant + Moon − Sun). Unlike planets, their ecliptic longitude shifts with the observer's natal birthplace, so natal.birthplace_lat and natal.birthplace_lon are required fields for this endpoint. The engine converts each lot's ecliptic longitude to equatorial coordinates (Right Ascension and Declination) using the standard ecliptic-to-equatorial transformation, then runs those coordinates through the same angular line generators used for all ACG bodies. ### Line Types Returned All four standard angular line types are returned for each lot: - MC — Meridian where the lot culminates (2-point vertical meridian) - IC — Anti-culmination meridian, 180° opposite the MC (2-point vertical meridian) - AC — Horizon curve where the lot's equivalent point rises (181-point sinusoidal arc) - DC — Horizon curve where the lot's equivalent point sets (181-point sinusoidal arc) Use the options.line_types field to restrict output to a subset (e.g., ["MC", "IC"]). ### Sect Awareness Sect (day/night chart) is determined from the Sun's actual altitude at the natal birthplace and time. The day and night formulas are applied accordingly — e.g., Fortune uses ASC + Moon − Sun for day charts and ASC + Sun − Moon for night charts.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/hermetic-lines"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

FeatureCollection response (features is always an array; may be empty).

422HTTPValidationError

Validation Error

POST10 calls / requestPro

ACG Line Proximity Hits

/acg/hits

Find ACG lines closest to a geographic location. Supports two modes: 1. Proximity mode (recommended): Provide query_lat and query_lon in the request body to find lines near any arbitrary point. Optionally set radius_deg (default: 3.0, max: 90). Returns features sorted by distance (closest first) with min_distance_deg and min_distance_km in each feature's properties. 2. Birthplace fallback: If query_lat/query_lon are omitted but natal.birthplace_lat/natal.birthplace_lon are present, those coordinates are used as the query location. 3. Unfiltered mode (backward-compatible): If neither query location nor natal birthplace is provided, all computed features are returned unfiltered. New request fields (all optional): - query_lat (float): Latitude of the query point (-90 to 90) - query_lon (float): Longitude of the query point (-180 to 180) - radius_deg (float): Proximity radius in degrees (1° ≈ 111 km). Default: 3.0

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/hits"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST10 calls / requestPro

Local Space Azimuth Lines

/acg/local-space

Compute local space azimuth/altitude lines from observer location.

API key or signed-in accountStatus: beta

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/local-space"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

GETFreeExplorer

ACG Engine Metadata

/acg/meta

ACG engine version, capabilities, and status.

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/acg/meta"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200

Successful Response

POST10 calls / requestScale

ACG Midpoint Lines

/acg/midpoints

Compute astrocartography lines for all N(N-1)/2 body-pair midpoints. Uses short-arc RA averaging in equatorial space, then runs each virtual midpoint body through the standard MC/IC/AC/DC generators. Returns MIDPOINT_MC, MIDPOINT_IC, MIDPOINT_AC, MIDPOINT_DC line types.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "configuration": {
    "coordinate_system": "geocentric",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  },
  "options": {
    "include_aspects": true
  },
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/midpoints"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "configuration": {
    "coordinate_system": "geocentric",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  },
  "options": {
    "include_aspects": true
  },
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}'

Responses

200

Successful Response

422HTTPValidationError

Validation Error

POST10 calls / requestScale

Natal Parans

/acg/parans

Computes exact angular simultaneity events between N planetary bodies for a single chart.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/parans"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}'

Responses

200

FeatureCollection response

422HTTPValidationError

Validation Error

POST10 calls / requestPro

Calculate Astrocartography Power Lines

/acg/power-lines

Calculate strictly isolated ACG power lines (MC, IC, AC, DC). Options configurations to include aspects/midpoints will be explicitly stripped.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/power-lines"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "epoch": "1990-06-15T14:30:00Z",
  "natal": {
    "birthplace_lat": 34.05,
    "birthplace_lon": -118.24
  },
  "options": {
    "asteroid_groups": [
      "centaur",
      "muse"
    ]
  }
}'

Responses

200

FeatureCollection response (features is always an array; may be empty).

422HTTPValidationError

Validation Error

POST20 calls / requestScale

Relational Parans

/acg/relational-parans

Computes exact cross-chart angular simultaneity events between NxM planetary bodies for two charts.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject1": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "subject2": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/acg/relational-parans"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject1": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "subject2": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  }
}'

Responses

200

FeatureCollection response

422HTTPValidationError

Validation Error

visualization

Render chart imagery. Generate natal chart wheels and comparative bi-wheels as SVG or PNG. Requires Pro tier. 2 units per request.

Get a finished chart image you can display directly. Returns SVG or PNG natal wheel diagrams and bi-wheel overlays — no drawing code needed on your side.

POST2 calls / requestExplorer

Generate Bi Wheel

/visualization/bi-wheel

Generate SVG/PNG bi-wheel chart. Requires Pro tier.

API key or signed-in accountStatus: live

Parameters

formatquery

No description provided.

Example: svg

sizequery

No description provided.

Example: 800

stylequery

No description provided.

Example: light

no_logoquery

When true, suppresses the OpenEphemeris watermark/logomark in the rendered SVG. Intended for white-label and embedded use cases where the chart is presented inside a host product's branded shell.

Example: false

Functional Request Payload

{
  "subject_a": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "subject_b": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "configuration": {
    "coordinate_system": "geocentric",
    "delta_t_profile": "swiss_default",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/visualization/bi-wheel"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject_a": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "subject_b": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "configuration": {
    "coordinate_system": "geocentric",
    "delta_t_profile": "swiss_default",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  }
}'

Responses

200

Successful Response

403

Forbidden (tier upgrade required)

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Human Design Bodygraph

/visualization/bodygraph

Generates a visually premium Human Design bodygraph (SVG or PNG).

API key or signed-in accountStatus: live

Parameters

formatquery

No description provided.

Example: svg

sizequery

No description provided.

Example: 800

stylequery

No description provided.

Example: light

show_variablesquery

No description provided.

Example: false

show_planet_columnsquery

No description provided.

Example: false

Functional Request Payload

{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_chiron": false,
  "include_lilith": false,
  "include_visual": false,
  "latitude": 0,
  "longitude": 0
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/visualization/bodygraph"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_chiron": false,
  "include_lilith": false,
  "include_visual": false,
  "latitude": 0,
  "longitude": 0
}'

Responses

200

Successful Response

403

Forbidden (tier upgrade required)

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Generate Chart Wheel

/visualization/chart-wheel

Generate SVG/PNG chart wheel. Requires Pro tier. Explorer-tier and lower API keys receive 403 by design; there is no lower-tier fallback wheel-rendering endpoint in the current contract.

API key or signed-in accountStatus: live

Parameters

formatquery

No description provided.

Example: svg

sizequery

No description provided.

Example: 800

stylequery

No description provided.

Example: light

no_logoquery

When true, suppresses the OpenEphemeris watermark/logomark in the rendered SVG. Intended for white-label and embedded use cases where the chart is presented inside a host product's branded shell.

Example: false

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "configuration": {
    "coordinate_system": "geocentric",
    "delta_t_profile": "swiss_default",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/visualization/chart-wheel"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "2023-12-07T15:30:00Z"
    },
    "birth_location": {
      "city": "New York",
      "country": "USA",
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "houses": {},
    "name": "string",
    "positions": [
      {}
    ]
  },
  "configuration": {
    "coordinate_system": "geocentric",
    "delta_t_profile": "swiss_default",
    "house_system": "P",
    "object_set": "modern_plus_chiron",
    "zodiac_type": "tropical"
  }
}'

Responses

200

Successful Response

403

Forbidden (tier upgrade required)

422HTTPValidationError

Validation Error

eclipse

Find the shadows. Calculate solar and lunar eclipses, global circumstances, next-visible searches, and Saros series data. 3 units per request.

Find when and where eclipses happen. Returns dates, types (total, partial, annular), visibility paths, and technical elements for both solar and lunar eclipses — past and future.

GET1 call / requestExplorer

Raw Besselian Elements

/eclipse/besselian-elements

Raw Besselian elements (X, Y, d, μ, l₁, l₂, f₁, f₂) and their time derivatives for any eclipse. For researchers and advanced users.

API key or signed-in accountStatus: live

Parameters

datequery

Eclipse date (ISO 8601)

Example: string

jdquery

Julian Day

Example: 1

delta_t_modelquery

No description provided.

Example: espenak_meeus

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/eclipse/besselian-elements"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200BesselianElementsResponse

Besselian elements for the eclipse

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Lunar Eclipse Global Circumstances

/eclipse/lunar/global

Lunar eclipse visibility with contact times (penumbral, partial, total). Safe to view without eye protection. 🤖 AI-optimized output available — add output_format=llm to reduce payload ~55%.

API key or signed-in accountStatus: live

Parameters

datequery

Eclipse date (ISO 8601)

Example: string

jdquery

Julian Day

Example: 1

delta_t_modelquery

No description provided.

Example: espenak_meeus

output_formatquery

No description provided.

Example: raw

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/eclipse/lunar/global"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200LunarEclipseGlobalResponse

Lunar eclipse global circumstances

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Next Visible Eclipse

/eclipse/next-visible

Find the next solar or lunar eclipse visible from specific coordinates. Planning tool for eclipse chasers.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Observer latitude

Example: -90

lonqueryRequired

Observer longitude

Example: -180

typequery

'solar', 'lunar', or 'any'

Example: any

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/eclipse/next-visible?lat=-90&lon=-180"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200NextVisibleResponse

Next visible eclipse with local circumstances

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Solar Eclipse Global Circumstances

/eclipse/solar/global

Calculate complete solar eclipse circumstances with Besselian elements and global path for a given date. Returns eclipse classification, Saros series, safety warnings, and uncertainty analysis. 🤖 AI-optimized output available — add output_format=llm to reduce payload ~55%.

API key or signed-in accountStatus: live

Parameters

datequery

Eclipse date (ISO 8601, e.g. 2026-08-12)

Example: string

jdquery

Julian Day (alternative to date)

Example: 1

delta_t_modelquery

'espenak_meeus' or 'stephenson_2021'

Example: espenak_meeus

output_formatquery

'raw' or 'llm'

Example: raw

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/eclipse/solar/global"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200SolarEclipseGlobalResponse

Solar eclipse global circumstances with Besselian elements

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Solar Eclipse Local Circumstances

/eclipse/solar/local

Local circumstances for a specific observer: magnitude, obscuration, contact times (C1-C4), duration, and sun position. 🤖 AI-optimized output available — add output_format=llm to reduce payload ~55%.

API key or signed-in accountStatus: live

Parameters

datequery

Eclipse date (ISO 8601)

Example: string

jdquery

Julian Day

Example: 1

latqueryRequired

Observer latitude

Example: -90

lonqueryRequired

Observer longitude

Example: -180

elevquery

Observer elevation in meters

Example: 0

delta_t_modelquery

No description provided.

Example: espenak_meeus

output_formatquery

No description provided.

Example: raw

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/eclipse/solar/local?lat=-90&lon=-180"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200SolarEclipseLocalResponse

Solar eclipse local circumstances for observer

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

Human Design

Map the energetic blueprint. Bodygraphs, composite charts, transit fields, and pentas. 3 units per request.

Human Design combines astrology, the I Ching, Kabbalah, and the chakra system into a personality framework. These endpoints calculate a full chart including type, authority, profile, gates, channels, and defined centers from birth data.

POST2 calls / requestExplorer

Create Human Design Chart

/human-design/chart

Generate a full Human Design bodygraph. Requires 'service' tier or admin access (Beta).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_chiron": false,
  "include_lilith": false,
  "include_visual": false,
  "latitude": 0,
  "longitude": 0
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/chart"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_chiron": false,
  "include_lilith": false,
  "include_visual": false,
  "latitude": 0,
  "longitude": 0
}'

Responses

200HumanDesignResponse

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Human Design Composite

/human-design/composite

Generate a Composite / Relationship Chart. Analyzes Electromagnetic connection, Split definition bridging, etc.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject_1": {
    "birth_datetime_utc": "2025-01-01T00:00:00Z",
    "format": "json",
    "include_chiron": false,
    "include_lilith": false,
    "include_visual": false,
    "latitude": 0,
    "longitude": 0
  },
  "subject_2": {
    "birth_datetime_utc": "2025-01-01T00:00:00Z",
    "format": "json",
    "include_chiron": false,
    "include_lilith": false,
    "include_visual": false,
    "latitude": 0,
    "longitude": 0
  },
  "format": "json",
  "include_visual": false,
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/composite"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject_1": {
    "birth_datetime_utc": "2025-01-01T00:00:00Z",
    "format": "json",
    "include_chiron": false,
    "include_lilith": false,
    "include_visual": false,
    "latitude": 0,
    "longitude": 0
  },
  "subject_2": {
    "birth_datetime_utc": "2025-01-01T00:00:00Z",
    "format": "json",
    "include_chiron": false,
    "include_lilith": false,
    "include_visual": false,
    "latitude": 0,
    "longitude": 0
  },
  "format": "json",
  "include_visual": false,
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}'

Responses

200HumanDesignCompositeResponse

Successful Response

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Planetary Opposition Chart

/human-design/cycles/opposition

Calculate the Human Design chart at the moment a planet opposes its natal position (180°). Most commonly used for Uranus Opposition (~age 42), Saturn Opposition (~age 14-15, ~44), and Jupiter Opposition (~age 6, ~18, ~30).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "planet": "uranus",
  "target_year": 1,
  "format": "json",
  "include_chiron": true,
  "include_lilith": false,
  "include_visual": false
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/cycles/opposition"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "planet": "uranus",
  "target_year": 1,
  "format": "json",
  "include_chiron": true,
  "include_lilith": false,
  "include_visual": false
}'

Responses

200HumanDesignResponse

Successful Response

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Planetary Return Chart

/human-design/cycles/return

Calculate a Human Design chart at the moment any planet returns to its natal longitude. Supports all major HD-relevant planets: sun, moon, mars, jupiter, saturn, chiron, uranus.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "planet": "sun",
  "return_year": 1,
  "format": "json",
  "include_chiron": true,
  "include_lilith": false,
  "include_visual": false
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/cycles/return"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "planet": "sun",
  "return_year": 1,
  "format": "json",
  "include_chiron": true,
  "include_lilith": false,
  "include_visual": false
}'

Responses

200HumanDesignResponse

Successful Response

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Solar Return Chart

/human-design/cycles/solar-return

Calculate a Solar Return Chart for a specific year. Determines exact moment Sun returns to natal degree, then runs a full chart.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "return_year": 1,
  "format": "json",
  "include_visual": false,
  "node_mode": "True",
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/cycles/solar-return"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "birth_datetime_utc": "2025-01-01T00:00:00Z",
  "return_year": 1,
  "format": "json",
  "include_visual": false,
  "node_mode": "True",
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}'

Responses

200HumanDesignResponse

Successful Response

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Human Design Penta

/human-design/penta

Generate a Penta (Group Dynamics) Analysis. Valid for groups of 3 to 5 people. Focuses on trans-auric forms (BG5).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "group_name": "string",
  "members": [
    {
      "birth_data": {
        "birth_datetime_utc": "2025-01-01T00:00:00Z",
        "format": "json",
        "include_chiron": false,
        "include_lilith": false,
        "include_visual": false,
        "latitude": 0,
        "longitude": 0
      },
      "id": "string",
      "name": "string"
    }
  ],
  "format": "json",
  "settings": {}
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/penta"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "group_name": "string",
  "members": [
    {
      "birth_data": {
        "birth_datetime_utc": "2025-01-01T00:00:00Z",
        "format": "json",
        "include_chiron": false,
        "include_lilith": false,
        "include_visual": false,
        "latitude": 0,
        "longitude": 0
      },
      "id": "string",
      "name": "string"
    }
  ],
  "format": "json",
  "settings": {}
}'

Responses

200PentaResponse

Successful Response

422HTTPValidationError

Validation Error

POST2 calls / requestExplorer

Human Design Transit

/human-design/transit

Get current Human Design planetary transit field (Neutrino Weather). Returns only personality activations (no design/type calculation).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_visual": false,
  "node_mode": "True",
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/transit"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "datetime_utc": "2025-01-01T00:00:00Z",
  "format": "json",
  "include_visual": false,
  "node_mode": "True",
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}'

Responses

200Response Human Design Transit Human Design Transit Post

Successful Response

422HTTPValidationError

Validation Error

POST3 calls / requestPro

Human Design Transit Chart

/human-design/transit-chart

Personalized Human Design transit overlay. Overlays the transiting field on a person's natal bodygraph and reports the channels a transit temporarily completes plus any newly-defined centers. Requires Pro tier. Set include_visual=true for an overlay bodygraph SVG/PNG (+2 credits).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "transit_datetime": {
    "iso": "2025-01-01T00:00:00Z"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/human-design/transit-chart"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "Alice"
  },
  "transit_datetime": {
    "iso": "2025-01-01T00:00:00Z"
  }
}'

Responses

200Response Human Design Transit Chart Human Design Transit Chart Post

Successful Response

422HTTPValidationError

Validation Error

chinese

Eastern insights. BaZi (Four Pillars), Zi Wei Dou Shu, and I Ching endpoints. 1 unit per request.

Chinese astrology, also called the Four Pillars of Destiny (BaZi). Returns the year, month, day, and hour pillars with their heavenly stems, earthly branches, and elemental balance for any birth date.

POST1 call / requestExplorer

Calculate Four Pillars of Destiny (BaZi)

/chinese/bazi

Compute the Four Pillars (八字 BaZi) for a birth date and time. Returns the Heavenly Stem and Earthly Branch for each pillar (year, month, day, hour), along with the Day Master — the core element of BaZi self-analysis. Heavenly Stems: 10 stems cycling through 5 elements × 2 polarities. Earthly Branches: 12 branches, each associated with a zodiac animal. Day Master (日主): The Day Stem's element represents the self. Note: This MVP uses Jan 1 as the year boundary. Traditional BaZi uses Lì Chūn (立春, ~Feb 4). See metadata for details. Metering: 1 unit per call.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json (full) or llm (compact columnar).

Example: json

Functional Request Payload

{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}'

Responses

200BaZiResponse

Full Four Pillars with stems, branches, and Day Master.

422

Validation error (bad date, out-of-range values).

POST3 calls / requestPro

BaZi Annual Pillar (Liu Nian)

/chinese/bazi/annual-pillar

Calculate the Heavenly Stem and Earthly Branch for any given Gregorian year (Liu Nian 流年 annual pillar). Optionally returns the NaYin resonance element. Metering: 1 unit per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "year": 1
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/annual-pillar"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "year": 1
}'

Responses

200BaZiAnnualPillarResponse

Annual pillar stem, branch, and NaYin.

422

Validation error.

POST3 calls / requestPro

BaZi Compatibility (八字合婚)

/chinese/bazi/compatibility

Assess the compatibility between two BaZi charts using Six Harmonies (六合), Three Harmonies (三合), Six Clashes (六冲), Six Harms (六害), and Day Master element interactions. Returns a 0–100 composite score, an assessment label (excellent / good / moderate / challenging), and a list of specific factors found. Note: The 0–100 scoring is an Open Ephemeris algorithmic interpretation. BaZi compatibility analysis is nuanced and multi-layered; this endpoint provides a structured starting point. Metering: 3 units per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "chart_a": {
    "day": 15,
    "month": 1,
    "year": 1990,
    "format": "json",
    "hour": 8
  },
  "chart_b": {
    "day": 15,
    "month": 1,
    "year": 1990,
    "format": "json",
    "hour": 8
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/compatibility"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "chart_a": {
    "day": 15,
    "month": 1,
    "year": 1990,
    "format": "json",
    "hour": 8
  },
  "chart_b": {
    "day": 15,
    "month": 1,
    "year": 1990,
    "format": "json",
    "hour": 8
  }
}'

Responses

200BaZiCompatibilityResponse

Compatibility score, assessment, and contributing factors.

422

Validation error.

POST3 calls / requestPro

BaZi Element Balance (Wu Xing)

/chinese/bazi/element-balance

Calculate the weighted Wu Xing (五行) element balance across all four pillars of a BaZi chart, including hidden stems within the earthly branches. Returns percentage scores for each of the five elements, Day Master strength (strong/weak/neutral), and the recommended Yong Shen (用神) favourable element. Metering: 2 units per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/element-balance"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}'

Responses

200BaZiElementBalanceResponse

Five-element scores, Day Master strength, and Yong Shen.

422

Validation error.

POST3 calls / requestPro

BaZi Luck Pillars (Da Yun)

/chinese/bazi/luck-pillars

Calculate the eight 10-year Da Yun (大运) luck pillars for a BaZi chart. Starting age is computed from the nearest solar term (Jié) boundary — 3 days from birth = 1 year of starting age (classical Zi Ping rule). Requires gender to determine whether pillars progress forward or backward through the sexagenary cycle. Metering: 2 units per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "gender": "male",
  "datetime": "2025-01-01T00:00:00Z",
  "day": 1,
  "format": "json",
  "hour": 12,
  "month": 1,
  "year": 1
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/luck-pillars"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "gender": "male",
  "datetime": "2025-01-01T00:00:00Z",
  "day": 1,
  "format": "json",
  "hour": 12,
  "month": 1,
  "year": 1
}'

Responses

200BaZiLuckPillarsResponse

Eight Da Yun luck pillars with starting age and direction.

422

Validation error.

POST3 calls / requestPro

24 Solar Terms for a Year

/chinese/bazi/solar-terms

Return all 24 Jiéqì (节气) solar terms for a given Gregorian year, with exact datetime (UTC) computed from true apparent solar longitude. Includes both the 12 Jié (节, month-starting terms used in BaZi) and the 12 Qì (气, mid-month terms). Dates are computed via the same ephemeris bridge used by /chinese/bazi. Metering: 2 units per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "year": 1800
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/solar-terms"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "year": 1800
}'

Responses

200BaZiSolarTermsResponse

All 24 solar terms for the requested year.

422

Validation error.

POST3 calls / requestPro

BaZi Ten Gods Analysis

/chinese/bazi/ten-gods

Calculate the Ten Gods (十神 Shí Shén) for a BaZi chart relative to the Day Master. Returns the Ten God label, Chinese name, category, and hidden stem Ten Gods for all four pillars. The Ten Gods describe the nature of each element in the chart relative to the self (Day Master): Friend, Rob Wealth, Eating God, Hurting Officer, Indirect Wealth, Direct Wealth, Seven Killings, Direct Officer, Indirect Resource, Direct Resource. Metering: 2 units per call.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/chinese/bazi/ten-gods"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "day": 15,
  "month": 1,
  "year": 1990,
  "format": "json",
  "hour": 8
}'

Responses

200BaZiTenGodsResponse

Ten Gods for all four pillars.

422

Validation error.

GET1 call / requestExplorer

Chinese zodiac animal and element for a year

/chinese/zodiac

Quick lookup of the Chinese zodiac animal, element, and Yin/Yang polarity for any Gregorian year. Also returns the year's Heavenly Stem and Earthly Branch. The 12-animal cycle: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig. The 5-element cycle: Wood, Fire, Earth, Metal, Water (each element governs two consecutive years). Metering: 1 unit per call.

API key or signed-in accountStatus: live

Parameters

yearqueryRequired

Gregorian year to look up.

Example: 2024

formatquery

Response format: json (full) or llm (compact).

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/chinese/zodiac?year=2024"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ZodiacResponse

Zodiac animal, element, polarity, and stem/branch.

422

Validation error (missing or out-of-range year).

vedic

Vedic (Jyotish) calculations including Ayanamsha, Vargas, Dashas, and Panchang elements. 1 unit per request.

Vedic astrology (Jyotish) uses a sidereal zodiac that accounts for the precession of the equinoxes. Returns a sidereal birth chart with nakshatras (lunar mansions), dashas (planetary periods), and yogas (special combinations).

POST1 call / requestExplorer

Generate a Vedic (sidereal) natal chart

/vedic/chart

Calculate planetary positions in the sidereal zodiac with Jyotish overlays. Each planet receives its rashi (sign), nakshatra (lunar mansion) with pada and ruling planet, and navamsa (D-9 divisional chart) sign. Ayanamsa: Defaults to Lahiri, the standard for North Indian Jyotish. Also supports Fagan-Bradley and Krishnamurti. Planets: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Rahu (North Node), and Ketu (South Node). Metering: 1 unit per call.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json (full) or llm (compact columnar).

Example: json

Functional Request Payload

{
  "datetime_utc": "1990-01-15T08:30:00",
  "latitude": 28.6139,
  "longitude": 77.209,
  "ayanamsa": "lahiri",
  "include_visual": true,
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/vedic/chart"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "datetime_utc": "1990-01-15T08:30:00",
  "latitude": 28.6139,
  "longitude": 77.209,
  "ayanamsa": "lahiri",
  "include_visual": true,
  "visual_config": {
    "format": "svg",
    "size": 800,
    "theme": "light"
  }
}'

Responses

200VedicChartResponse

Vedic chart with sidereal positions, nakshatras, and navamsa.

422

Validation error (bad datetime, unsupported ayanamsa, etc.)

agricultural

Work with the earth's rhythms. Biodynamic planting profiles and multi-day agricultural calendars. 2 units per request.

Moon-based timing for farming and gardening. Biodynamic agriculture tracks the Moon's sign, phase, and aspects to suggest optimal days for planting, pruning, harvesting, or resting. Returns daily profiles and monthly calendars.

GET1 call / requestExplorer

Biodynamic monthly calendar

/ephemeris/agro/calendar

Returns compact biodynamic summaries for a date range (max 31 days). Each day includes: day type, quality score, ascending status, void-of-course active flag, phase name, and illumination percentage. Designed for building monthly planning calendars. 🤖 AI-optimized output available — add format=llm to reduce payload ~80%.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Observer latitude (WGS84, degrees)

Example: -90

lonqueryRequired

Observer longitude (WGS84, degrees)

Example: -180

startqueryRequired

Start date as YYYY-MM-DD

Example: 2026-03-01

endqueryRequired

End date as YYYY-MM-DD (inclusive, max 31 days from start)

Example: 2026-03-31

tzquery

IANA timezone identifier

Example: Australia/Sydney

elev_mquery

Observer elevation in metres

Example: 0

formatquery

Output format

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/agro/calendar?lat=-90&lon=-180&start=2026-03-01&end=2026-03-31"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200AgroCalendarResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Biodynamic daily profile

/ephemeris/agro/daily

Returns a complete Maria Thun biodynamic day profile for a given date and location. Includes: - Moon sign, element, latitude velocity (ascending/descending) - Thun day type (root / leaf / flower / fruit) with quality score (0–100) - Aspect modifiers with explained score impacts (Saturn, Jupiter, Mars, Node) - Activity recommendations (favorable / unfavorable / optimal tasks) - Void-of-course window (active status + next window) - Lunar phase + illumination - Sunrise, sunset, moonrise, moonset (topocentric, ±1s precision) Zodiac: Always tropical for Thun classification (per Thun methodology). Ephemeris: DE440. 🤖 AI-optimized output available — add format=llm to reduce payload ~70%.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Observer latitude (WGS84, degrees)

Example: -90

lonqueryRequired

Observer longitude (WGS84, degrees)

Example: -180

datequeryRequired

Date as YYYY-MM-DD

Example: 2026-03-15

tzquery

IANA timezone identifier

Example: Australia/Sydney

elev_mquery

Observer elevation in metres

Example: 0

formatquery

Output format

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/agro/daily?lat=-90&lon=-180&date=2026-03-15"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200AgroDailyResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Void of Course Moon

/ephemeris/agro/void-of-course

Returns the current Void of Course (VoC) Moon window for a given Julian Day. Method 3: scans backward from the Moon's next sign ingress to find the last major Ptolemaic aspect (conjunction, sextile, square, trine, opposition) to a traditional planet. The VoC period runs from that aspect until the ingress.

API key or signed-in accountStatus: live

Parameters

jdqueryRequired

Julian Day (UT1)

Example: 2451545

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/agro/void-of-course?jd=2451545"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200VoCData

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

tidal

Calculate tidal forces and lunar coastal influences. 1 unit per request.

Astronomical tidal forcing — the gravitational pull of the Moon and Sun on Earth's oceans. Returns tidal potential values for any date and location, useful for maritime planning, coastal research, or deep-time paleoclimate studies.

GET1 call / requestExplorer

Astronomical Tidal Forcing

/tidal/forcing

Calculate astronomical gravitational forcing potential (spring/neap, perigee, etc) for a specific location.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Observer latitude

Example: -90

lonqueryRequired

Observer longitude

Example: -180

datequery

Date in YYYY-MM-DD format

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/tidal/forcing?lat=-90&lon=-180"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200TidalForcingResponse

Tidal forcing metrics and indices

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Astronomical Tidal Forcing (Deep Time)

/tidal/forcing/deep-time

Calculate astronomical gravitational forcing for dates outside the standard Gregorian calendar range using DE441.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Observer latitude

Example: -90

lonqueryRequired

Observer longitude

Example: -180

jdqueryRequired

Julian Day

Example: 1

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/tidal/forcing/deep-time?lat=-90&lon=-180&jd=1"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200TidalForcingResponse

Tidal forcing metrics and indices

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

503ErrorResponse

DE441 ephemeris not loaded in engine

venus-cycles

Explore the elegant dance of Venus. Synodic cycle analysis and Star Points. 2 units per request.

Track the Venus cycle — the planet's 8-year pattern of conjunctions with the Sun that traces a five-pointed star in the sky. Returns station dates, elongation points, synodic phases, and the complete star-point pattern.

POST1 call / requestExplorer

Compute Venus Star Points

/ephemeris/venus-star-points

Compute the five Venus Star Point events (conjunctions of Venus and Sun around birth). Returns a list of five ConjunctionEvent objects: three occurring before birth and two after. Includes extended metadata such as zodiac dignity, visibility phase, and combustion status. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "beams_orb": 17,
  "combust_orb": 8.5,
  "exact_threshold": 0.0166
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "subject": {
    "birth_datetime": {
      "iso": "1990-06-15T14:30:00"
    },
    "birth_location": {
      "latitude": {
        "decimal": 40.7128
      },
      "longitude": {
        "decimal": -74.006
      },
      "timezone": {
        "iana_name": "America/New_York"
      }
    },
    "name": "John Doe"
  },
  "beams_orb": 17,
  "combust_orb": 8.5,
  "exact_threshold": 0.0166
}'

Responses

200VenusStarPointsResponse

Venus Star Points calculated successfully

400ErrorResponse

Invalid input validation

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Calculation failed

POST1 call / requestExplorer

Range-based Venus conjunctions

/ephemeris/venus-star-points/conjunctions

Find all Venus-Sun conjunctions in a specific date range. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points/conjunctions"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}'

Responses

200VenusConjunctionsResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

POST1 call / requestExplorer

Venus 8-year star pattern

/ephemeris/venus-star-points/eight-year-star

Compute the 5-point star pattern surrounding a specific date. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "date": "string"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points/eight-year-star"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date": "string"
}'

Responses

200VenusEightYearStarResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

POST1 call / requestExplorer

Venus greatest elongations

/ephemeris/venus-star-points/elongations

Find all Venus greatest elongations in a date range. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points/elongations"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}'

Responses

200VenusElongationsResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

POST1 call / requestExplorer

Venus phase and visibility

/ephemeris/venus-star-points/phase

Compute current visibility and cycle phase for Venus. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "date": "string"
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points/phase"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "date": "string"
}'

Responses

200VenusPhaseResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

POST1 call / requestExplorer

Venus station points

/ephemeris/venus-star-points/stations

Find all Venus stationary points (Retrograde/Direct) in range. 🤖 AI-optimized output available — add format=llm to reduce payload ~60%.

API key or signed-in accountStatus: live

Parameters

formatquery

Response format: json | llm.

Example: string

ephemeris_servicequery

No description provided.

Functional Request Payload

{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/ephemeris/venus-star-points/stations"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "end_date": "string",
  "start_date": "string",
  "beams_orb": 17,
  "combust_orb": 8.5
}'

Responses

200VenusStationsResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error - Calculation failed

calendar

Mark the turning of the wheel. Cross-quarter days, exact moon phases, and lunar standstills. 2 units per request.

Astronomical calendar events. Get exact dates for solstices, equinoxes, cross-quarter days (midpoints between solstices and equinoxes), Moon phase dates, and lunar standstill status — useful for event apps and seasonal features.

GET10 calls / requestExplorer

Wheel of the Year — True Astronomical Dates

/calendar/astrology/cross-quarter

Returns the 8 Wheel of the Year events (4 cross-quarters + 4 cardinal points) calculated using true apparent solar longitude from JPL DE440. Cross-quarter dates are the true midpoints between solstices and equinoxes, NOT the traditional Gregorian approximations. 🤖 AI-optimized output available — add format=llm to reduce payload ~45%.

API key or signed-in accountStatus: live

Parameters

yearqueryRequired

Calendar year (Gregorian). Standard range: 1550–2650 (DE440). Deep-time: -13000–17000 (DE441, paid tier only).

Example: 2025

formatquery

Response format: json | llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/calendar/astrology/cross-quarter?year=2025"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200CrossQuarterResponse

8 Wheel of the Year events in chronological order

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET10 calls / requestExplorer

Lunar Standstill — 18.6-Year Nodal Cycle Status

/calendar/astrology/lunar-standstill

Returns the current state of the 18.6-year lunar nodal cycle. Identifies Major Standstill (Moon reaches ±28.6° declination) and Minor Standstill (Moon limited to ±18.3°) epochs. The most recent Major Standstill is circa 2025.4.

API key or signed-in accountStatus: live

Parameters

datequery

Date in YYYY-MM-DD format.

Example: string

jdquery

Julian Day.

Example: 1

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/calendar/astrology/lunar-standstill"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200LunarStandstillResponse

Nodal cycle status and next standstill dates

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET10 calls / requestExplorer

8-Phase Lunar Classification + Next Principal Phases

/calendar/astrology/moon-phases

Returns the current 8-phase lunar phase classification (not just 4), illumination fraction, Moon age in hours, and the next 4 principal phase moments (New, First Quarter, Full, Third Quarter). 🤖 AI-optimized output available — add format=llm to reduce payload ~45%.

API key or signed-in accountStatus: live

Parameters

datequery

Date in YYYY-MM-DD format. Mutually exclusive with jd.

Example: string

jdquery

Julian Day. Mutually exclusive with date.

Example: 1

formatquery

Response format: json | llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/calendar/astrology/moon-phases"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200MoonPhasesResponse

Current phase and upcoming principal phases

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

lunar

Track the Moon's journey. Phases, void-of-course windows, and exact lunar ingresses. 1 unit per request.

Everything about the Moon right now. Get the current Moon sign, illumination percentage, phase name, void-of-course status (when the Moon makes no more major aspects before changing signs), and upcoming sign changes.

GET1 call / requestExplorer

Get current Moon aspects

/ephemeris/moon/aspects

Returns all current Moon aspects to traditional planets with applying/separating classification. Performance: 15-30ms Aspect Classification: - Applying: Moon approaching exact aspect (energies building) - Separating: Moon departing from exact aspect (energies waning) - Classification based on Moon vs planet speeds (Moon moves ~13°/day, faster than any planet) Orb System: Fixed traditional orbs (no custom orbs in v1) - Major aspects: Conjunction, Opposition, Square, Trine, Sextile - Minor aspects: Semi-sextile, Quincunx (optional via include_minor parameter) Planets Checked: Sun, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto Use Cases: - "What aspects is the Moon making right now?" - Moon aspect tracking for timing decisions - Lunar aspect calendars - Real-time lunar energy awareness Example:

API key or signed-in accountStatus: live

Parameters

datetimequeryRequired

ISO 8601 datetime

Example: 2025-12-11T12:00:00Z

zodiac_modequery

Zodiac mode: 'tropical' or 'sidereal'

Example: tropical

include_minorquery

Include minor aspects (semi-sextile, quincunx)

Example: false

formatquery

Response format: json | llm.

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/moon/aspects?datetime=2025-12-11T12%3A00%3A00Z"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200MoonAspectsResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

Example Success Response

{
  "applying": [
    {
      "applying": true,
      "aspect_type": "square",
      "orb": 2.3,
      "planet": "Sun"
    }
  ],
  "aspects": [
    {
      "applying": true,
      "aspect_type": "square",
      "orb": 2.3,
      "planet": "Sun"
    }
  ],
  "count": 1,
  "metadata": {
    "calculation_time_ms": 18.5
  },
  "separating": [],
  "success": true
}
GET1 call / requestExplorer

Get Moon sign ingresses for date range

/ephemeris/moon/ingresses

Returns all Moon sign ingress events within a date range. Moon Ingress Frequency: ~13 ingresses per month (Moon changes signs every ~2.5 days) Performance: <5ms (cached), 50-100ms (cache miss) Cache is pre-warmed for ±3 months on startup and refreshed daily at 00:01 UTC. Cache Strategy: - Tropical and sidereal ingresses cached separately (different times due to ~24° ayanamsa offset) - Redis backend with 30-day TTL - Rolling 3-month window maintained automatically - Graceful fallback to live calculation if cache miss - Startup health check reports cache status Use Cases: - Monthly lunar calendars - "Best days for haircuts" timing apps - Moon sign tracking applications - Gardening/manifestation by Moon sign - Electional astrology lookups Rate Limiting: Max 90-day range per query to prevent abuse. Example:

API key or signed-in accountStatus: live

Parameters

start_datequeryRequired

Range start date (ISO 8601 format)

Example: 2025-12-01T00:00:00Z

end_datequeryRequired

Range end date (ISO 8601 format, max 90 days from start)

Example: 2025-12-31T23:59:59Z

zodiac_modequery

Zodiac mode: 'tropical' or 'sidereal'

Example: tropical

formatquery

Response format: json | llm.

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/moon/ingresses?start_date=2025-12-01T00%3A00%3A00Z&end_date=2025-12-31T23%3A59%3A59Z"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200MoonIngressesResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

Example Success Response

{
  "count": 13,
  "ingresses": [
    {
      "from_sign": "Aries",
      "time": "2025-12-01T08:15:00+00:00",
      "to_sign": "Taurus"
    },
    {
      "from_sign": "Taurus",
      "time": "2025-12-03T18:30:00+00:00",
      "to_sign": "Gemini"
    }
  ],
  "metadata": {
    "average_ingresses_per_month": 13,
    "cache_hit": true,
    "calculation_time_ms": 2.1,
    "end_date": "2025-12-31T23:59:59+00:00",
    "start_date": "2025-12-01T00:00:00+00:00",
    "zodiac_mode": "tropical"
  },
  "success": true
}
GET1 call / requestExplorer

Get lunar phase

/ephemeris/moon/phase

Returns lunar phase information for a specific datetime. Performance: <10ms (trigonometric calculation via SuperNOVAS / Calceph) Phase Names: - New Moon - Waxing Crescent - First Quarter - Waxing Gibbous - Full Moon - Waning Gibbous - Last Quarter - Waning Crescent Data Returned: - Phase name and illumination percentage (0-100%) - Sun-Moon elongation angle (0-360°) - Waxing/waning classification - Moon age in days (~0-29.53 day cycle) - Moon distance from Earth (km) - Moon angular diameter (degrees) Use Cases: - Daily lunar calendars - Gardening by Moon phase (Full Moon planting, etc.) - Manifestation/ritual timing (New Moon intentions, Full Moon releases) - General lunar awareness apps - Fishing/hunting activity timing Example:

API key or signed-in accountStatus: live

Parameters

datetimequeryRequired

ISO 8601 datetime

Example: 2025-12-11T12:00:00Z

formatquery

Response format: json | llm.

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/moon/phase?datetime=2025-12-11T12%3A00%3A00Z"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200LunarPhaseResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

Example Success Response

{
  "days_to_full": 2.5,
  "days_to_new": 12.3,
  "illumination": 78.5,
  "metadata": {
    "calculation_time_ms": 5.2
  },
  "phase_angle": 125.3,
  "phase_name": "Waxing Gibbous",
  "success": true,
  "waxing": true
}
GET1 call / requestExplorer

Get Void of Course Moon status

/ephemeris/moon/void-of-course

Returns Void of Course Moon status for a specific datetime using Method 3 definition. Void of Course (VoC) Definition: Moon is VoC when it makes no major aspects (conjunction, opposition, square, trine, sextile) to traditional planets (Sun through Pluto) before changing zodiac signs. Method 3 Logic: - VoC period cannot start before Moon's last sign ingress - Searches backwards from next ingress for last major aspect (COQTS) - If no aspects found, VoC starts at previous ingress (calendar-accurate) - Uses fixed traditional orbs (no custom orbs in v1) Performance: 20-50ms (aspect search + ingress calculation) Use Cases: - Electional astrology: "Is now a good time to sign contracts?" - Daily VoC calendars for timing decisions - Timing-sensitive decision support tools Example:

API key or signed-in accountStatus: live

Parameters

datetimequeryRequired

ISO 8601 datetime (e.g., '2025-12-11T12:00:00Z')

Example: 2025-12-11T12:00:00Z

zodiac_modequery

Zodiac mode: 'tropical' or 'sidereal'

Example: tropical

formatquery

Response format: json | llm.

Example: json

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/ephemeris/moon/void-of-course?datetime=2025-12-11T12%3A00%3A00Z"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200VoidOfCourseResponse

Successful Response

400ErrorResponse

Bad Request

422

Unprocessable Entity - Invalid input format

500ErrorResponse

Internal Server Error

Example Success Response

{
  "current_sign": "Gemini",
  "is_void": true,
  "last_aspect": {
    "aspect_type": "sextile",
    "planet": "Venus",
    "time": "2025-12-11T14:32:00+00:00"
  },
  "metadata": {
    "cache_hit": false,
    "calculation_time_ms": 25.3
  },
  "next_sign": "Cancer",
  "success": true,
  "void_end": "2025-12-11T18:45:00+00:00",
  "void_start": "2025-12-11T14:32:00+00:00"
}

location-timezone

Geocoding and timezone resolution to help you locate your charts accurately. 1 unit per request.

Turn a place name into coordinates, or coordinates into a place name, and resolve the correct timezone. These utility endpoints handle the geography side of chart calculations so you don't have to.

GET1 call / requestExplorer

Search for locations by name

/location/autocomplete

Returns location suggestions with coordinates and timezone for typeahead search. Results are cached according to backend cache configuration.

API key or signed-in accountStatus: live

Parameters

queryqueryRequired

Search query (city name, address, etc.)

Example: San Francisco

limitquery

Maximum number of suggestions to return

Example: 5

typesquery

Place types: place (cities), address, poi

Example: place

countryquery

Optional ISO 3166-1 alpha-2 country code (e.g., US, GB) used to bias ranking toward that country. Boost, not filter: results in other countries remain reachable.

Example: string

regionquery

Optional admin1 (state/province/region) qualifier used to bias ranking. Accepts a full name ("Michigan", "Quebec"), an ASCII name, or a GeoNames admin1 code ("MI"). Boost, not filter.

Example: string

admin1query

Alias for region: admin1 (state/province) qualifier used to bias ranking. region takes precedence if both are supplied.

Example: string

nearquery

Optional "lat,lon" proximity hint (e.g., "37.77,-122.42") used to bias ranking toward nearby places. Boost, not filter.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/location/autocomplete?query=San+Francisco"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200LocationAutocompleteResponse

Successful Response

400

Bad Request - Invalid parameters

422HTTPValidationError

Validation Error

503

Service Unavailable - Geocoding provider down

Example Success Response

{
  "cached": false,
  "query": "san fran",
  "suggestions": [
    {
      "confidence": 0.97,
      "country_code": "US",
      "display_name": "San Francisco, California, United States",
      "latitude": 37.7749,
      "longitude": -122.4194,
      "place_id": "place.12345",
      "short_name": "San Francisco",
      "timezone": "America/Los_Angeles"
    }
  ],
  "total_results": 1
}
GET1 call / requestExplorer

Reverse geocode coordinates to location name

/location/reverse

Convert latitude/longitude to a human-readable location with timezone.

API key or signed-in accountStatus: live

Parameters

latqueryRequired

Latitude in decimal degrees

Example: 40.7128

lngqueryRequired

Longitude in decimal degrees

Example: -74.006

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/location/reverse?lat=40.7128&lng=-74.006"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ReverseGeocodeResponse

Successful Response

400

Bad Request - Invalid parameters

422HTTPValidationError

Validation Error

503

Service Unavailable - Geocoding provider down

Example Success Response

{
  "city": "New York",
  "country": "United States",
  "country_code": "US",
  "display_name": "New York, New York, United States",
  "latitude": 40.7128,
  "longitude": -74.006,
  "region": "New York",
  "timezone": "America/New_York"
}
POST1 call / requestExplorer

Resolve IANA timezone from coordinates

/timezone/lookup

Return the IANA timezone for the provided coordinates. If no timezone can be confidently determined (e.g., mid-ocean or invalid inputs), the endpoint falls back to UTC and marks fallback=true. The underlying lookup is cached within the core tools.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "latitude": 37.7749,
  "longitude": -122.4194
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/timezone/lookup"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "latitude": 37.7749,
  "longitude": -122.4194
}'

Responses

200TimezoneLookupResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error

POST1 call / requestExplorer

Get UTC offset at datetime for coordinates

/timezone/offset

Return the timezone and UTC offset for the provided coordinates and instant. - Resolves an IANA timezone from the coordinates - Applies the timezone's historical/DST rules at the given instant - Returns offset in seconds/hours, a formatted string, and a DST flag

API key or signed-in accountStatus: live

Functional Request Payload

{
  "datetime_utc": "2025-07-01T12:00:00Z",
  "lat": 37.7749,
  "lon": -122.4194
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/timezone/offset"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "datetime_utc": "2025-07-01T12:00:00Z",
  "lat": 37.7749,
  "lon": -122.4194
}'

Responses

200TimezoneOffsetResponse

Successful Response

400

Bad Request - Input validation failed

422

Unprocessable Entity - Invalid input format

500

Internal Server Error

catalogs

Explore our extensive reference catalogs. See all supported planets, asteroids, fixed stars, and star groups available for calculation. Free — not metered.

Browse the lists of celestial bodies, fixed stars, house systems, and other options that OpenEphemeris supports. Useful for building dropdown menus, validating inputs, or discovering what the API can calculate.

GETFreeExplorer

Catalog of supported natal bodies

/catalogs/bodies

Catalog-driven identifiers for selectable natal bodies (planets, nodes, Lilith points, major asteroids). This surface is intended for commercial clients and UIs.

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/catalogs/bodies"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200CatalogBodiesResponse

Successful Response

GETFreeExplorer

Catalog of fixed stars (paginated)

/catalogs/fixed-stars

Returns fixed stars discoverable via the built-in star catalog when available, falling back to the built-in registry for core stars.

API key or signed-in accountStatus: live

Parameters

limitquery

Page size

Example: 100

offsetquery

Offset into the full list

Example: 0

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/catalogs/fixed-stars"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200CatalogFixedStarsResponse

Successful Response

422HTTPValidationError

Validation Error

GETFreeExplorer

Catalog of fixed star group identifiers

/catalogs/fixed-stars/groups

No description provided yet.

API key or signed-in accountStatus: live

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/catalogs/fixed-stars/groups"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200CatalogFixedStarGroupsResponse

Successful Response

Time Conversion

Reference operations in this category.

Convert between time formats. Translate everyday dates into Julian Day numbers (used internally for astronomical calculations), get the current sidereal time for a location, compute sunrise and sunset, and more.

GET1 call / requestExplorer

Delta T (TT-UT1) calculation

/time/delta-t

Provide Delta T (TT - UT1) for any historical/future epoch.

API key or signed-in accountStatus: live

Parameters

datequeryRequired

Date (YYYY-MM-DD)

Example: 2026-03-15

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/time/delta-t?date=2026-03-15"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200DeltaTResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Equation of Time

/time/equation-of-time

Compute the Equation of Time (sundial correction) in minutes for a given JD.

API key or signed-in accountStatus: live

Parameters

jdqueryRequired

Julian Day (Terrestrial Time)

Example: 1

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/time/equation-of-time?jd=1"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200EquationOfTimeResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Calendar conversion to Julian Day Number

/time/julian-day

Bridge between civil calendars and astronomical time. Handles BCE dates.

API key or signed-in accountStatus: live

Functional Request Payload

{
  "day": 1,
  "month": 1,
  "year": 1,
  "calendar": "proleptic_gregorian",
  "hour": 0,
  "minute": 0,
  "second": 0
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/time/julian-day"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "day": 1,
  "month": 1,
  "year": 1,
  "calendar": "proleptic_gregorian",
  "hour": 0,
  "minute": 0,
  "second": 0
}'

Responses

200JulianDayResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

POST1 call / requestExplorer

Time Scale Conversions

/time/scales

Convert between major astronomical time scales (UTC, TT, TAI, TDB, UT1).

API key or signed-in accountStatus: live

Functional Request Payload

{
  "julian_day": 1,
  "from_scale": "utc",
  "latitude": 1,
  "longitude": 1
}

Copy-Paste Starter

curl -X POST "https://api.openephemeris.com/time/scales"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"
  -d '{
  "julian_day": 1,
  "from_scale": "utc",
  "latitude": 1,
  "longitude": 1
}'

Responses

200TimeScalesResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Sidereal Time (LAST & GMST)

/time/sidereal

Compute Local Apparent Sidereal Time (LAST) and Greenwich Mean Sidereal Time (GMST).

API key or signed-in accountStatus: live

Parameters

datequeryRequired

Date (YYYY-MM-DD) or Julian Day (jd:2451545.0)

Example: 2026-03-15

longitudequery

Observer longitude (positive East)

Example: 0

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/time/sidereal?date=2026-03-15"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200SiderealTimeResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

GET1 call / requestExplorer

Solar Events (Sunrise/Sunset/Transit)

/time/solar-event

Compute exact times for sunrise, sunset, and solar transit for a given day and location.

API key or signed-in accountStatus: live

Parameters

datequeryRequired

Date (YYYY-MM-DD)

Example: 2026-03-20

latitudequeryRequired

Observer latitude

Example: -90

longitudequeryRequired

Observer longitude

Example: -180

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/time/solar-event?date=2026-03-20&latitude=-90&longitude=-180"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200SolarEventResponse

Successful Response

400ErrorResponse

Bad Request

422HTTPValidationError

Validation Error

500ErrorResponse

Internal Server Error

electional

Reference operations in this category.

Find the best moment for a specific activity. Electional astrology analyzes upcoming planetary conditions to suggest favorable windows for launching, signing, traveling, or other time-sensitive decisions. Returns moment quality scores and recommended time ranges.

GET5 calls / requestPro

Active Aspect Search

/electional/aspect-search

List all applying and separating aspects active at a given moment, enriched with quality scores. Useful for identifying the astrological texture of a chosen time.

API key or signed-in accountStatus: live

Parameters

datequery

Date/datetime to check (ISO 8601 or YYYY-MM-DD). Defaults to now.

Example: string

jdquery

Julian Day alternative to date.

Example: 1

max_orbquery

Maximum orb in degrees (default 8.0).

Example: 8

aspectsquery

Comma-sep aspect filter: conjunction,sextile,square,trine,opposition. Defaults to all.

Example: string

formatquery

Output format: json (default) or llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/electional/aspect-search"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ElectionalAspectSearchResponse

Active aspects

422HTTPValidationError

Validation Error

GET5 calls / requestPro

Find Electional Window

/electional/find-window

Search a date range for the highest-scoring astrological timing windows. Evaluates moments in 1-hour steps, applies optional constraints (VOC avoidance, retrograde avoidance, lunar phase filter), and returns the top N ranked windows.

API key or signed-in accountStatus: live

Parameters

start_datequery

Start of search range (ISO 8601 or YYYY-MM-DD). Defaults to today.

Example: string

end_datequery

End of search range. Defaults to 30 days after start.

Example: string

latitudequery

Observer latitude (decimal degrees).

Example: 1

longitudequery

Observer longitude (decimal degrees).

Example: 1

max_resultsquery

Maximum number of windows to return (1-20).

Example: 5

avoid_vocquery

Exclude void-of-course Moon periods.

Example: true

lunar_phasequery

Preferred lunar phase: waxing, waning, new, full, or any.

Example: any

avoid_retrogradequery

Comma-separated planet names to exclude when retrograde, e.g. Mercury,Mars.

Example: string

formatquery

Output format: json (default) or llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/electional/find-window"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ElectionalWindowResponse

Window search results

422HTTPValidationError

Validation Error

GET5 calls / requestPro

Electional Moment Analysis

/electional/moment-analysis

Score and analyse the astrological quality of a specific moment. Returns a 0-100 composite viability score derived from essential dignities, aspect quality, sect alignment, and void-of-course status.

API key or signed-in accountStatus: live

Parameters

datequery

Date/datetime to analyse (ISO 8601 or YYYY-MM-DD). Defaults to now.

Example: string

jdquery

Julian Day alternative to date. date takes priority.

Example: 1

latitudequery

Observer latitude — required for sect and VoC.

Example: 1

longitudequery

Observer longitude (decimal degrees).

Example: 1

formatquery

Output format: json (default) or llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/electional/moment-analysis"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ElectionalMomentResponse

Moment analysis

422HTTPValidationError

Validation Error

GET5 calls / requestPro

Planetary Station Tracker

/electional/station-tracker

Find all retrograde and direct station dates for the specified planets in a given date range. Stations are moments when a planet appears stationary before changing direction.

API key or signed-in accountStatus: live

Parameters

start_datequery

Start date (ISO 8601 or YYYY-MM-DD). Defaults to today.

Example: string

end_datequery

End date. Defaults to 90 days after start.

Example: string

planetsquery

Comma-separated planet names. Defaults to all 7 classical planets.

Example: string

formatquery

Output format: json (default) or llm.

Example: string

Copy-Paste Starter

curl -X GET "https://api.openephemeris.com/electional/station-tracker"
  -H "X-OpenEphemeris-API-Key: YOUR_API_KEY"
  -H "Content-Type: application/json"

Responses

200ElectionalStationResponse

Station events

422HTTPValidationError

Validation Error