---
title: "Synastry score and cross-aspects (public, no key)"
method: POST
path: "/public/synastry"
tags: ["Public"]
---

# Synastry score and cross-aspects (public, no key)

`POST /public/synastry`

Compatibility score and the planet-to-planet aspect grid for two birth charts, served anonymously. Aspects come back sorted by orb, tightest first, so taking the first six gives the six an embed would show. `applying` is true when the aspect is still closing. What stays behind a key: the per-aspect interpretations, the house overlay, composite and Davison charts, and the two natal charts themselves, all of which the authed POST /synastry returns. Either partner may set `timeUnknown: true`; cross-aspects survive an unknown time because they are planet to planet. **This call costs 3 units** of the public rate-limit bucket rather than 1, because it computes two charts and the full matrix: 10 an hour on an undeclared address, 100 per declared site, 200 per address. The response carries `X-RateLimit-Cost: 3`.

## Request body

- TwoChartUnknownTime — Pair of natal charts where either birth time may be unknown. A chart with timeUnknown: true contributes planets and cross-aspects but no houses, angles or overlays.
  - `chart1` ChartInputUnknownTime, required — Birth data where the clock time may be unknown. Either pass time (HH:mm:ss), or set timeUnknown: true and omit it. In the second case the response carries planets and aspects but no houses, angles or sect.
    - `date` string, required
    - `time` string
    - `timezoneOffset` number, nullable — Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC.
    - `latitude` number, required
    - `longitude` number, required
    - `houseSystem` string
    - `name` string
    - `city` string
    - `zodiacType` 'tropical' | 'sidereal'
    - `ayanamsaId` number, nullable
    - `ayanamsa` 'fagan-bradley' | 'lahiri' | 'de-luce' | 'raman' | 'krishnamurti' | 'kp' | 'yukteshwar' | 'jn-bhasin' | 'true-citra' | 'djwhal-khul' — Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either.
    - `cosmogram` boolean
    - `timeUnknown` boolean
  - `chart2` ChartInputUnknownTime, required — Birth data where the clock time may be unknown. Either pass time (HH:mm:ss), or set timeUnknown: true and omit it. In the second case the response carries planets and aspects but no houses, angles or sect.
    - `date` string, required
    - `time` string
    - `timezoneOffset` number, nullable — Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC.
    - `latitude` number, required
    - `longitude` number, required
    - `houseSystem` string
    - `name` string
    - `city` string
    - `zodiacType` 'tropical' | 'sidereal'
    - `ayanamsaId` number, nullable
    - `ayanamsa` 'fagan-bradley' | 'lahiri' | 'de-luce' | 'raman' | 'krishnamurti' | 'kp' | 'yukteshwar' | 'jn-bhasin' | 'true-citra' | 'djwhal-khul' — Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either.
    - `cosmogram` boolean
    - `timeUnknown` boolean

## Response `200`

OK

- object
  - `ok` boolean
  - `data` object
    - `score` number, nullable
    - `label` string, nullable
    - `aspects` object[], nullable
      - `planetA` string, nullable
      - `planetB` string, nullable
      - `aspect` string, nullable
      - `orb` number, nullable
      - `applying` boolean, nullable
    - `count` number, nullable
  - `_footer` string — Free-tier watermark, present on every public response. Keys on a paid plan do not receive it.

## Other responses

- `400` — Invalid input

---

[API](https://skmtc.net/astroway/apis/astroway-calculation-api.md) · [All operations](https://skmtc.net/astroway/apis/astroway-calculation-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/astroway/astroway-calculation-api/revisions/529d7d36d7d6/schema)
