---
title: "Calculate two charts and cross-chart aspects"
method: POST
path: "/api/astro/synastry"
tags: ["Calculations"]
---

# Calculate two charts and cross-chart aspects

`POST /api/astro/synastry`

## Request

- Base URL: `https://api.cosmicephemeris.com`
- URL: `https://api.cosmicephemeris.com/api/astro/synastry`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Current unversioned gateway response.

Each admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.
Historical mode uses an explicit BCE/CE date object and UT1 conventions. Its response is the versioned historical envelope, not the modern UTC envelope. Read result for calculation fields and metadata for limits and uncertainty.

## Request body

- union
  - unknown
  - unknown

## Response `200`

Successful calculation. Field nesting is specific to this route.

- union
  - SynastryResponse
    - `type` 'synastry', required
    - `input` object, required
      - `personA` NormalizedBirth, required: Synastry normalizes numeric coordinates, zodiac and ayanamsa. Supplied timezone is echoed (including null/empty string); omitted timezone is UTC.
        - `date` string, date, required: Valid Gregorian YYYY-MM-DD local civil date, inclusive 1800-01-01 through 2200-12-31. Calendar validity and timezone conversion are checked by the server.
        - `time` string, required: HH:MM or HH:MM:SS; no offset in this field. Use timezone to select the civil-time zone.
        - `timezone` string, nullable, required: IANA timezone name (for example America/New_York). Omission, null, or empty string means UTC for a birth input. Nonexistent or ambiguous local clock-change times return 400; provide the known UTC date/time with timezone UTC instead.
        - `lat` number, required
        - `lon` number, required
        - `zodiac` 'tropical' | 'sidereal', required
        - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
      - `personB` NormalizedBirth, required: Synastry normalizes numeric coordinates, zodiac and ayanamsa. Supplied timezone is echoed (including null/empty string); omitted timezone is UTC.
        - `date` string, date, required: Valid Gregorian YYYY-MM-DD local civil date, inclusive 1800-01-01 through 2200-12-31. Calendar validity and timezone conversion are checked by the server.
        - `time` string, required: HH:MM or HH:MM:SS; no offset in this field. Use timezone to select the civil-time zone.
        - `timezone` string, nullable, required: IANA timezone name (for example America/New_York). Omission, null, or empty string means UTC for a birth input. Nonexistent or ambiguous local clock-change times return 400; provide the known UTC date/time with timezone UTC instead.
        - `lat` number, required
        - `lon` number, required
        - `zodiac` 'tropical' | 'sidereal', required
        - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
      - `zodiac` string, nullable, required: tropical or sidereal; server trims whitespace and ignores case. Omitted/null selects tropical.
      - `ayanamsa` string, nullable, required: Sidereal supports lahiri, raman, krishnamurti, fagan_bradley, yukteshwar, sassanian, true_chitra, true_revati, true_pushya, galactic_center_0_sagittarius, galactic_alignment_mardyks, with case/whitespace normalization; other names return 400 in sidereal mode. Omitted/null selects lahiri. Tropical mode ignores a nonempty string and outputs null. This schema describes that compatibility behavior rather than claiming every string is a supported sidereal model.
    - `charts` object, required
      - `personA` Chart, required: A full calculation chart, not a rendered wheel or interpretation. Sidereal longitudes subtract the selected documented date-aware ayanamsa from apparent tropical longitudes; this is not a promise of identity with every ephemeris convention.
        - `status` 'ok', required
        - `zodiac` 'tropical' | 'sidereal', required
        - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
        - `planets` Planets, required
          - `Sun` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Moon` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Mercury` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Venus` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Mars` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Jupiter` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Saturn` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Uranus` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Neptune` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Pluto` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
        - `houses` Houses, required: Legacy full-chart houses contain Equal and Whole Sign, sharing the eastern-horizon Ascendant and meridian MC. These chart routes do not opt into Placidus. The separate /houses selected-system response is described by SelectedHouses.
          - `ascendant` number, required
          - `mc` number, required
          - `systems` HouseSystems, required
            - `equal` HouseSystem
              - …
            - `whole_sign` HouseSystem
              - …
          - `metadata` object, required
            - `zodiac` 'tropical' | 'sidereal', required
            - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
        - `aspects` NatalAspect[], required
          - `p1` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
          - `p2` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
          - `type` 'conjunction' | 'opposition' | 'trine' | 'square' | 'sextile' | 'semisextile' | 'semisquare' | 'quintile' | 'sesquiquadrate' | 'biquintile', required
          - `exact_angle` 0 | 180 | 120 | 90 | 60 | 30 | 45 | 72 | 135 | 144, required
          - `distance` number, required
          - `orb` number, required
        - `nodes` Nodes, required
          - `mean` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `true` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `south` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `note` string, required
        - `metadata` object, required
          - `note` string, required
      - `personB` Chart, required: A full calculation chart, not a rendered wheel or interpretation. Sidereal longitudes subtract the selected documented date-aware ayanamsa from apparent tropical longitudes; this is not a promise of identity with every ephemeris convention.
        - `status` 'ok', required
        - `zodiac` 'tropical' | 'sidereal', required
        - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
        - `planets` Planets, required
          - `Sun` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Moon` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Mercury` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Venus` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Mars` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Jupiter` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Saturn` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Uranus` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Neptune` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
          - `Pluto` PlanetPosition, required: Apparent geocentric JPL DE440 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon.
            - `lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
            - `speed_deg_per_day` number, required: Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative.
            - `retrograde` boolean, required
            - `tropical_lon` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sidereal_lon` number: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `nakshatra` Nakshatra
              - …
        - `houses` Houses, required: Legacy full-chart houses contain Equal and Whole Sign, sharing the eastern-horizon Ascendant and meridian MC. These chart routes do not opt into Placidus. The separate /houses selected-system response is described by SelectedHouses.
          - `ascendant` number, required
          - `mc` number, required
          - `systems` HouseSystems, required
            - `equal` HouseSystem
              - …
            - `whole_sign` HouseSystem
              - …
          - `metadata` object, required
            - `zodiac` 'tropical' | 'sidereal', required
            - `ayanamsa` 'lahiri' | 'raman' | 'krishnamurti' | 'fagan_bradley' | 'yukteshwar' | 'sassanian' | 'true_chitra' | 'true_revati' | 'true_pushya' | 'galactic_center_0_sagittarius' | 'galactic_alignment_mardyks', required
        - `aspects` NatalAspect[], required
          - `p1` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
          - `p2` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
          - `type` 'conjunction' | 'opposition' | 'trine' | 'square' | 'sextile' | 'semisextile' | 'semisquare' | 'quintile' | 'sesquiquadrate' | 'biquintile', required
          - `exact_angle` 0 | 180 | 120 | 90 | 60 | 30 | 45 | 72 | 135 | 144, required
          - `distance` number, required
          - `orb` number, required
        - `nodes` Nodes, required
          - `mean` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `true` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `south` NodePosition, required
            - `longitude` number, required: Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values.
            - `sign` 'Aries' | 'Taurus' | 'Gemini' | 'Cancer' | 'Leo' | 'Virgo' | 'Libra' | 'Scorpio' | 'Sagittarius' | 'Capricorn' | 'Aquarius' | 'Pisces', required
            - `deg_in_sign` number, required: Displayed to four decimals; rounding near the next sign can produce 30.0.
          - `note` string, required
        - `metadata` object, required
          - `note` string, required
    - `aspects` CrossAspect[], required
      - `transit` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
      - `natal` 'Sun' | 'Moon' | 'Mercury' | 'Venus' | 'Mars' | 'Jupiter' | 'Saturn' | 'Uranus' | 'Neptune' | 'Pluto', required
      - `type` 'conjunction' | 'opposition' | 'trine' | 'square' | 'sextile' | 'semisextile' | 'semisquare' | 'quintile' | 'sesquiquadrate' | 'biquintile', required
      - `exact_angle` 0 | 180 | 120 | 90 | 60 | 30 | 45 | 72 | 135 | 144, required
      - `distance` number, required
      - `orb` number, required
  - HistoricalSynastryResponse
    - `schema` 'cosmicephemeris-historical-calculation-v1', required
    - `status` 'historical', required
    - `type` 'synastry', required
    - `input` unknown, required
    - `result` object, required: Complete historical calculation adapter result. Times are explicit UT1 date records, never UTC strings; derived times may include fractional seconds and years outside the input range.
    - `metadata` object, required
      - `time_standard` 'UT1', required
      - `historical_accuracy_certified` unknown, required
      - `warnings` string[], required

## Other responses

- `400`: Invalid request, malformed JSON, out-of-range date/location, unknown model, invalid timezone or ambiguous/nonexistent clock-change time. Invalid attempts reaching quota reservation consume one unit.
- `401`: Missing, invalid, revoked API key or unavailable activated key owner. Dashboard cookies do not authenticate calculation routes.
- `403`: Origin not allowed by production CORS policy. Server-to-server requests can omit Origin.
- `404`: Wrong/case-variant/noncanonical or trailing-slash route; public paths have no version prefix.
- `413`: Request exceeds the body limit; gateway JSON is capped at 128 KiB. Edge failures may be HTML.
- `429`: Monthly quota exhausted, per-user two-request concurrency reached, or nginx rate/connection admission refused. Retry-After: 2 is sent for application per-user concurrency only, not a promise that monthly quota resets in two seconds.
- `500`: Bounded gateway/database/internal failure. An admitted attempt can still consume quota.
- `502`: Engine unavailable, unsuccessful internal server response or invalid upstream JSON. No engine internals are exposed.
- `503`: Four-request global calculation pool full (Retry-After: 2), maintenance or upstream service unavailable.
- `504`: Application engine timeout: 15 seconds normally; planetary events, house ingresses, aspect windows, event calendar, eclipse geometry, electional search, and event-rule search use 30 seconds; Nakshatra Timeline plus the explicitly enumerated readiness, robustness, location, uncertainty, and electional-audit family use 60 seconds. Timer includes response-body parsing; an admitted timeout consumes quota.

---

[API](https://skmtc.dev/cosmicephemeris/apis/cosmic-ephemeris-calculation-api.md) · [All operations](https://skmtc.dev/cosmicephemeris/apis/cosmic-ephemeris-calculation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cosmicephemeris/apis/cosmic-ephemeris-calculation-api/revisions/f041e924cea3?raw)
