Solar Return Chart (Western)
Solar Return Chart (Western)
/api/v1/western/solar/calculateGenerate high-precision Solar Return charts. The engine automatically uses an iterative search window to find the exact sub-millisecond moment the Sun returns to its precise natal position, and natively compiles standard chart blocks alongside a custom natal comparison schema including cross-chart aspects and house overlays.
The solar route remains backward compatible as the Sun-specific wrapper. For Moon and other planetary returns, use the Planetary Return docs and the generic /api/v1/western/returns/calculate endpoint.
Both return endpoints support sidereal calculations through settings.zodiac_type and settings.sidereal_ayanamsa.
Full URL
https://api.freeastroapi.com/api/v1/western/solar/calculateParameters
The request body has two top-level objects: natal and solar_return. Optional calculation settings belong inside solar_return.settings, not at the root.
The natal object accepts either a backward-compatible datetime string or Natal-style split fields like year/month/day/hour/minute. Naive local birth times are interpreted in natal.location.timezone or AUTO resolution, matching Natal endpoint behavior.
natal (Object)
| Parameter | Type | Req | Description |
|---|---|---|---|
| name | string | No | Display name for the natal subject. |
| datetime | string | No | Backward-compatible natal birth datetime. Supports 'YYYY-MM-DD HH:MM' and ISO 8601 forms. |
| year | integer | No | Natal birth year. Use with month/day when not sending datetime. |
| month | integer | No | Natal birth month. Use with year/day when not sending datetime. |
| day | integer | No | Natal birth day. Use with year/month when not sending datetime. |
| hour | integer | No | Natal birth hour. Default: 12 when omitted. |
| minute | integer | No | Natal birth minute. Default: 0 when omitted. |
| time_known | boolean | No | Set false for unknown birth times. Houses, angles, and natal house overlay are omitted where unavailable. |
| location.timezone | string | No | Birth timezone string. Alias: tz_str. Default: AUTO. |
| location.city | string | Yes | Birth city. Used for coordinate lookup if lat/lng are omitted. |
| location.lat | float | No | Birth latitude (optional if city is provided). |
| location.lng | float | No | Birth longitude (optional if city is provided). |
solar_return (Object)
| Parameter | Type | Req | Description |
|---|---|---|---|
| year | integer | Yes | The target year for the Solar Return (e.g. 2024). |
| location.city | string | Yes | Return city (used for coordinate lookup if lat/lng are omitted). |
| location.lat | float | No | Return latitude (optional if city is provided). |
| location.lng | float | No | Return longitude (optional if city is provided). |
| location.timezone | string | No | Return timezone. Default: AUTO. |
| settings | object | No | Optional calculation settings nested inside solar_return. |
solar_return.settings (Object, Optional)
| Parameter | Type | Req | Description |
|---|---|---|---|
| house_system | string | No | Default 'placidus'. |
| zodiac_type | string | No | 'Tropical' or 'Sidereal'. Default 'Tropical'. |
| sidereal_ayanamsa | string | No | Optional for sidereal mode. Defaults to 'lahiri' when zodiac_type is 'Sidereal'. |
| coordinate_system | string | No | Default 'geocentric_ecliptic'. |
| node_type | string | No | 'true' or 'mean'. Default 'true'. |
| aspect_set | string | No | 'major' or 'major+minor'. Default 'major'. |
| include_aspects | boolean | No | Generate aspects between planets in the solar return chart. Default true. |
| include_natal_comparison | boolean | No | Generate cross-chart aspects from return planets to natal planets. Default true. |
| include_house_overlay | boolean | No | Calculate which natal houses the solar return planets fall into. Default true. |
| orb_policy | object | No | Custom orb constraints. See Synastry documentation for schema structure. |
Generic Planetary Returns
The generic endpoint covers Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto returns. Fast-moving bodies can produce multiple valid hits near the same window, especially around retrograde periods, so the request uses a date anchor plus a selection mode instead of a year-only selector.
| Parameter | Type | Req | Description |
|---|---|---|---|
| return_target.body | string | Yes | One of sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto. |
| return_target.search_start | string | Yes | ISO datetime anchor used to search for the desired return event. |
| return_target.selection_mode | string | No | nearest, next, or previous. Default nearest. |
| return_target.location.city | string | Yes | Return chart city used for coordinate lookup if lat/lng are omitted. |
| meta.return_event | object | Yes | Generic event metadata including body, exact moment, target_longitude_abs, and target_error_arcsec. |
curl -X POST "https://api.freeastroapi.com/api/v1/western/returns/calculate" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"natal": {
"name": "User",
"datetime": "1994-04-15 10:30",
"location": {
"city": "London",
"lat": 51.5074,
"lng": -0.1278
}
},
"return_target": {
"body": "moon",
"search_start": "2024-05-01T00:00:00Z",
"selection_mode": "nearest",
"location": {
"city": "Paris",
"lat": 48.8566,
"lng": 2.3522
}
}
}'Minimal Real Request
Minimal tropical request:
{
"natal": {
"name": "Test User",
"datetime": "1990-01-01 12:00",
"location": {
"city": "London"
}
},
"solar_return": {
"year": 2024,
"location": {
"city": "New York",
"lat": 40.7128,
"lng": -74.0060,
"timezone": "America/New_York"
}
}
}Minimal sidereal request. Lahiri is now the default, so sidereal_ayanamsa can be omitted:
{
"natal": {
"name": "Test User",
"datetime": "1990-01-01 12:00",
"location": {
"city": "London"
}
},
"solar_return": {
"year": 2024,
"location": {
"city": "New York",
"lat": 40.7128,
"lng": -74.0060,
"timezone": "America/New_York"
},
"settings": {
"zodiac_type": "Sidereal"
}
}
}To force a specific sidereal ayanamsa, pass it inside solar_return.settings, for example "sidereal_ayanamsa": "lahiri".
Request Example
curl -X POST "https://api.freeastroapi.com/api/v1/western/solar/calculate" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"natal": {
"name": "Test User",
"year": 1990,
"month": 1,
"day": 1,
"hour": 12,
"minute": 0,
"time_known": true,
"location": {
"city": "London"
}
},
"solar_return": {
"year": 2024,
"location": {
"city": "New York",
"lat": 40.7128,
"lng": -74.0060,
"timezone": "America/New_York"
},
"settings": {
"zodiac_type": "Sidereal"
}
},
"settings": {
"zodiac_type": "Sidereal",
"sidereal_ayanamsa": "lahiri"
}
}'Response Format
The response closely matches standard Natal generation pipelines with an extended meta.solar_return root defining exact calculated hits. It also optionally attaches natal_comparison arrays linking back to the origin chart.
{
"meta": {
"report_id": "c5ff579e-...",
"calculation": {
"zodiac_type": "Tropical",
"house_system": "placidus",
"aspect_set": "major"
},
"solar_return": {
"target_year": 2024,
"exact_moment_utc": "2024-04-15T01:45:10.123456Z",
"exact_moment_local": "2024-04-15T03:45:10.123456+02:00",
"sun_target_longitude_abs": 25.12318041,
"sun_error_arcsec": 0.003
}
},
"subject": {
"name": "User - Solar Return 2024",
"datetime": "2024-04-15T03:45:10.123456+02:00",
"location": {
"city": "Paris",
"timezone": "Europe/Paris"
}
},
"planets": [...],
"houses": [...],
"angles": {...},
"natal_comparison": {
"aspects": [
{
"sr_body": "sun",
"natal_body": "sun",
"type": "conjunction",
"orb": 0.0,
"deg": 0.0,
"is_major": true
}
],
"house_overlay": [
{
"sr_body": "sun",
"natal_house": 12
}
]
}
}