---
title: "Zodiac sign pair relations (public, no key)"
method: GET
path: "/public/compatibility/matrix"
tags: ["Public"]
---

# Zodiac sign pair relations (public, no key)

`GET /public/compatibility/matrix`

All 78 unordered pairs of zodiac signs (each sign with itself included), each with the classical whole-sign relation: `same`, `sextile`, `square`, `trine`, `opposition`, or `aversion` for signs one or five apart, which classically do not see each other. `tone` follows Ptolemy (Tetrabiblos I.13): trine, sextile and same sign are `harmonious`, square and opposition `challenging`, aversion `neutral`. There is deliberately no 0-100 score: a pair of signs has no orb and no bodies for the synastry model to weigh, so any number would be invented. For a score, send two birth charts to POST /public/synastry. Static data, `Cache-Control: public, max-age=604800`, `Vary: Accept-Language`. `localized` (follows `?lang=` / `Accept-Language`) holds lookup tables from the English identifiers in `pairs` to display names: signs, relations, tones, elements, modalities. The identifiers themselves never change.

## Query parameters

- `lang` string
- `fields` string
- `precision` integer

## Headers

- `Accept-Language` string

## Response `200`

OK

- object
  - `ok` boolean
  - `data` object
    - `pairs` object[], nullable
      - `signA` string, nullable
      - `signB` string, nullable
      - `distance` number, nullable
      - `relation` string, nullable
      - `tone` string, nullable
      - `elements` string[], nullable
      - `modalities` string[], nullable
      - `samePolarity` boolean, nullable
    - `count` number, nullable
    - `localized` object, nullable
      - `signs` object, nullable
        - `aries` string, nullable
        - `taurus` string, nullable
        - `gemini` string, nullable
        - `cancer` string, nullable
        - `leo` string, nullable
        - `virgo` string, nullable
        - `libra` string, nullable
        - `scorpio` string, nullable
        - `sagittarius` string, nullable
        - `capricorn` string, nullable
        - `aquarius` string, nullable
        - `pisces` string, nullable
      - `relations` object, nullable
        - `same` string, nullable
        - `aversion` string, nullable
        - `sextile` string, nullable
        - `square` string, nullable
        - `trine` string, nullable
        - `opposition` string, nullable
      - `tones` object, nullable
        - `harmonious` string, nullable
        - `neutral` string, nullable
        - `challenging` string, nullable
      - `elements` object, nullable
        - `fire` string, nullable
        - `earth` string, nullable
        - `air` string, nullable
        - `water` string, nullable
      - `modalities` object, nullable
        - `cardinal` string, nullable
        - `fixed` string, nullable
        - `mutable` string, nullable
  - `_footer` string — Free-tier watermark, present on every public response. Keys on a paid plan do not receive it.

## Other responses

- `400` — Invalid sign or date

## Changes

- **2026-10-04** `aa473bce3f00` — 3 info
  - added the new optional `header` request parameter `Accept-Language`
  - added the new optional `query` request parameter `lang`
  - added the optional property `data/localized` to the response with the `200` status
- **2026-09-25** `a8633073fc86` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/astroway/apis/astroway-calculation-api/changes/public/compatibility/matrix/get.md)

---

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