---
title: "Get Synastry V2"
method: POST
path: "/api/v2/western/synastry"
tags: ["Western v2"]
---

# Get Synastry V2

`POST /api/v2/western/synastry`

## Request

- Base URL: `https://api.freeastroapi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.freeastroapi.com/api/v2/western/synastry`
- Auth: none declared

## Query parameters

- `aspects` boolean, nullable: Include aspect details
- `overlays` boolean, nullable: Include house overlays
- `scores` boolean, nullable: Include normalized V2 scoring analysis
- `archetypes` boolean, nullable: Include archetype analysis
- `text` boolean, nullable: Include deterministic text descriptions
- `display_point_labels` boolean, nullable: Include point labels in display metadata
- `display_aspect_labels` boolean, nullable: Include aspect labels in display metadata
- `strength_labels` boolean, nullable: Include strength label definitions
- `ranges` boolean, nullable: Include orb ranges (policies) in settings
- `scoring_bucket_definitions` boolean, nullable: Include scoring bucket definitions

## Request body

- SynastryRequest
  - `person_a` Person, required
    - `id` string, nullable
    - `name` string, nullable
    - `datetime` string, nullable
    - `city` string, nullable
    - `lat` number, nullable
    - `lng` number, nullable
    - `year` integer, nullable: Astronomical year (supported range: 0-2399; year 0 = 1 BCE)
    - `month` integer, nullable
    - `day` integer, nullable
    - `hour` integer, nullable
    - `minute` integer, nullable
    - `time_unknown` boolean
    - `location` Location
      - `lat` number, nullable
      - `lng` number, nullable
      - `city` string, nullable
      - `country` string, nullable
    - `tz_str` string, nullable
  - `person_b` Person, required
    - `id` string, nullable
    - `name` string, nullable
    - `datetime` string, nullable
    - `city` string, nullable
    - `lat` number, nullable
    - `lng` number, nullable
    - `year` integer, nullable: Astronomical year (supported range: 0-2399; year 0 = 1 BCE)
    - `month` integer, nullable
    - `day` integer, nullable
    - `hour` integer, nullable
    - `minute` integer, nullable
    - `time_unknown` boolean
    - `location` Location
      - `lat` number, nullable
      - `lng` number, nullable
      - `city` string, nullable
      - `country` string, nullable
    - `tz_str` string, nullable
  - `dst_policy` 'reject' | 'earlier' | 'later' | 'shift_forward', nullable: Optional DST fold/gap policy applied to both people.
  - `settings` SynastrySettings
    - `zodiac` 'tropical' | 'sidereal'
    - `sidereal_ayanamsa` string, nullable
    - `house_system` string
    - `coordinate_system` string
    - `node_type` 'true' | 'mean'
    - `bodies` string[]
    - `aspect_set` 'major' | 'major_plus' | 'extended'
    - `orb_policy` OrbPolicy
      - `default_orb_deg` number
      - `by_aspect_deg` object
      - `by_body_multiplier` object
      - `apply_separate` boolean
      - `apply_bonus` number
    - `include` IncludeSettings
      - `natal_snapshots` boolean
      - `aspects` boolean
      - `house_overlays` boolean
      - `angle_contacts` boolean
      - `midpoints` boolean
      - `scores` boolean
      - `archetype` boolean
      - `text` boolean
      - `text_locale` string
      - `text_tone` string
      - `display_point_labels` boolean
      - `display_aspect_labels` boolean
      - `strength_labels` boolean
      - `ranges` boolean
      - `scoring_bucket_definitions` boolean
    - `strength_model` string
    - `context` ContextSettings
      - `relationship_goal` string
      - `user_experience_level` string
    - `angle_aspect_set` 'major' | 'major_plus' | 'extended'
  - `client` ClientContext
    - `request_id` string, nullable
  - `response_format` 'full' | 'flat', nullable: Use 'flat' to return a shallow no-code-friendly response with a single text field.

## Response `200`

Successful Response

- SynastryResponse
  - `meta` ResponseMeta, required
    - `engine` MetaEngine
      - `name` string
      - `version` string
    - `ephemeris` MetaEphemeris, required
      - `provider` string
      - `version` string, required
    - `settings_resolved` object, required
    - `generated_at` string, required
    - `calculation_hash` string, required
    - `warnings` MetaWarning[]
      - `code` string, required
      - `message` string, required
      - `severity` 'info' | 'warning' | 'critical', required
    - `display` object, nullable
    - `aliases` object, nullable
  - `resolved_time` object, nullable
  - `natal` object, nullable
  - `synastry` SynastryData, required
    - `aspects` SynastryAspect[], nullable
      - `id` string, required
      - `kind` 'planet_aspect' | 'angle_contact', required
      - `a_point` string, required
      - `b_point` string, required
      - `pair_key` string, nullable
      - `canonical_key` string, nullable
      - `aspect` string, required
      - `aspect_angle_deg` number, required
      - `separation_deg` number, nullable
      - `delta_deg` number, nullable
      - `orb_deg` number, required
      - `applying` boolean, required
      - `strength` number, required
      - `strength_label` string, nullable
      - `polarity` 'supportive' | 'challenging' | 'neutral' | 'mixed', required
      - `polarity_confidence` number, nullable
      - `categories` string[], required
      - `domains` string[], nullable
      - `themes` string[], nullable
      - `weight_breakdown` AspectWeightBreakdown, required
        - `orb_weight` number, required
        - `body_weight` number, required
        - `body_weight_a` number, nullable
        - `body_weight_b` number, nullable
        - `aspect_weight` number, required
        - `apply_bonus` number, required
        - `formula` string, nullable
      - `text_key` string, required
      - `is_angle_contact` boolean
    - `house_overlays` HouseOverlays
      - `a_planets_in_b_houses` PlanetOverlay[], required
        - `id` string, required
        - `planet` string, required
        - `target_house` integer, required
        - `distance_to_cusp_deg` number, required
        - `strength` number, nullable
        - `strength_label` string, nullable
        - `text_key` string, required
      - `b_planets_in_a_houses` PlanetOverlay[], required
        - `id` string, required
        - `planet` string, required
        - `target_house` integer, required
        - `distance_to_cusp_deg` number, required
        - `strength` number, nullable
        - `strength_label` string, nullable
        - `text_key` string, required
    - `highlights` Highlight[], nullable
      - `kind` 'aspect' | 'angle_contact' | 'overlay', required
      - `ref_id` string, required
      - `reason_codes` string[], required
    - `scores` SynastryScores
      - `overall` integer, required
      - `romance` integer, required
      - `communication` integer, required
      - `stability` integer, required
      - `intimacy` integer, required
      - `growth` integer, required
      - `tension` integer, required
      - `contributors` ScoreContributor[], required
        - `ref_id` string, required
        - `weight` number, required
        - `bucket` string, required
      - `model` string, required
      - `scoring_meta` object, nullable
    - `archetype` SynastryArchetype
      - `id` string, required
      - `confidence` number, required
      - `drivers` ArchetypeDriver[], required
        - `kind` string, required
        - `ref_id` string, required
        - `weight` number, required
      - `label` string, nullable
      - `one_liner` string, nullable
    - `text` SynastryText
      - `locale` string, required
      - `tone` string, required
      - `by_key` object, required
    - `index` SynastryIndex
      - `aspects_by_id` object, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/freeastroapi/apis/astroservice-api.md) · [All operations](https://skmtc.dev/freeastroapi/apis/astroservice-api/llms.txt) · [OpenAPI document](https://skmtc.dev/freeastroapi/apis/astroservice-api/revisions/0c9b4a759522?raw)
