---
title: "Get Solar Return"
method: POST
path: "/api/v1/western/solar/calculate"
tags: ["Western", "Western Synastry"]
---

# Get Solar Return

`POST /api/v1/western/solar/calculate`

## 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/v1/western/solar/calculate`
- Auth: none declared

Computes purely deterministic Solar Return chart against the Natal chart.
Returns structurally identical core chart blocks (planets, aspects) as 
well as exact cross-aspects and angularity, without scoring or archetype models.

## Request body

- SolarReturnRequest
  - `natal` PersonNatalOptions, required
    - `name` string
    - `datetime` string, nullable
    - `year` integer, nullable
    - `month` integer, nullable
    - `day` integer, nullable
    - `hour` integer, nullable
    - `minute` integer, nullable
    - `time_known` boolean
    - `dst_policy` 'reject' | 'earlier' | 'later' | 'shift_forward', nullable
    - `location` SolarReturnLocation, required
      - `city` string, required
      - `lat` number, nullable
      - `lng` number, nullable
      - `tz_str` string, nullable
  - `solar_return` SolarReturnTarget, required
    - `year` integer, required
    - `location` SolarReturnLocation, required
      - `city` string, required
      - `lat` number, nullable
      - `lng` number, nullable
      - `tz_str` string, nullable
    - `settings` SolarReturnSettings
      - `zodiac_type` 'Tropical' | 'Sidereal'
      - `sidereal_ayanamsa` string, nullable
      - `house_system` string
      - `coordinate_system` string
      - `node_type` 'true' | 'mean'
      - `bodies` string[]
      - `aspect_set` 'major' | 'major+minor'
      - `orb_policy` OrbPolicy
        - `default_orb_deg` number
        - `by_aspect_deg` object
        - `by_body_multiplier` object
        - `apply_separate` boolean
        - `apply_bonus` number
      - `include_aspects` boolean
      - `include_natal_comparison` boolean
      - `include_house_overlay` boolean
    - `calculation_mode` 'single_moment' | 'uncertainty_range'

## Response `200`

Successful Response

- SolarReturnResponse
  - `meta` SolarReturnResponseMeta, required
    - `report_id` string, required
    - `generated_at` string, required
    - `engine` EngineMeta
      - `name` string
      - `version` string
    - `calculation` SolarReturnMetaCalculation, required
      - `zodiac_type` string, required
      - `sidereal_ayanamsa` string, nullable
      - `house_system` string, required
      - `aspect_set` string, required
      - `orb_policy` OrbPolicy, required
        - `default_orb_deg` number
        - `by_aspect_deg` object
        - `by_body_multiplier` object
        - `apply_separate` boolean
        - `apply_bonus` number
    - `solar_return` SolarReturnMetaDetails, required
      - `target_year` integer, required
      - `exact_moment_utc` string, required
      - `exact_moment_local` string, required
      - `sun_target_longitude_abs` number, required
      - `sun_error_arcsec` number, required
      - `iterations` integer, required
      - `search_window_days` integer, required
      - `calculation_mode` 'single_moment' | 'uncertainty_range'
      - `confidence` 'exact' | 'approximate'
      - `reference_chart_basis` 'exact_birth_time' | 'local_noon'
      - `uncertainty` SolarReturnUncertainty
        - `birth_time_start_local` string, required
        - `birth_time_end_local` string, required
        - `possible_return_start_utc` string, required
        - `possible_return_start_local` string, required
        - `possible_return_end_utc` string, required
        - `possible_return_end_local` string, required
        - `window_hours` number, required
        - `position_stability_threshold_deg` number, required
        - `position_sample_count` integer, required
        - `planet_position_ranges` SolarReturnPlanetPositionRange[], required
          - `body` string, required
          - `start_abs_pos` number, required
          - `end_abs_pos` number, required
          - `span_deg` number, required
          - `same_sign` boolean, required
          - `stable` boolean, required
        - `stable_factors` string[], required
        - `unstable_factors` string[], required
        - `suppressed_fields` string[], required
    - `natal_reference` NatalReference, required
      - `natal_datetime_utc` string, required
      - `natal_location` SolarReturnLocation, required
        - `city` string, required
        - `lat` number, nullable
        - `lng` number, nullable
        - `tz_str` string, nullable
      - `natal_sun_abs_pos` number, required
    - `resolved_time` object, nullable
  - `subject` object, required
  - `planets` object[], required
  - `houses` object[], required
  - `angles` object, required
  - `angles_details` object, required
  - `aspects` object[], nullable
  - `aspects_summary` object, nullable
  - `natal_comparison` NatalComparison
    - `aspects` CrossAspect[], required
      - `sr_body` string, required
      - `natal_body` string, required
      - `type` string, required
      - `orb` number, required
      - `deg` number, required
      - `is_major` boolean, required
    - `house_overlay` HouseOverlayItem[], nullable
      - `sr_body` string, required
      - `natal_house` integer, required
    - `angularity` AngularProximityItem[], required
      - `sr_body` string, required
      - `angle` string, required
      - `orb` number, 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)
