SVG Solar Return Chart
/api/v1/natal/chart/solar-returnRender a natal and solar-return bi-wheel, or a solar-return-only chart, as SVG or PNG. The API finds the exact instant when the transiting Sun returns to its natal longitude, then calculates the return chart for the requested year and location.
natal.time_known to false. The default single_moment mode remains backward compatible. Explicit uncertainty_range mode calculates a possible return window and embeds the uncertainty data in the rendered result.Full URL
https://api.freeastroapi.com/api/v1/natal/chart/solar-returnRequest fields
The return location accepts either a city or a complete latitude/longitude pair.
Natal object
The nested natal object uses the same birth-data and visual configuration contract as the SVG transit endpoint.
cURL example
curl -X POST "https://api.freeastroapi.com/api/v1/natal/chart/solar-return" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"natal": {
"name": "Maya",
"year": 1990,
"month": 5,
"day": 15,
"hour": 14,
"minute": 30,
"city": "London",
"tz_str": "AUTO",
"format": "svg",
"size": 700,
"theme_type": "light"
},
"solar_return_year": 2026,
"solar_return_city": "Paris",
"solar_return_tz_str": "AUTO",
"show_inter_aspects": true,
"show_natal_aspects": false,
"show_solar_return_aspects": false,
"natal_planet_color": "#1565C0",
"solar_return_planet_color": "#C62828"
}' \
--output solar_return_2026.svgTo show only the solar return, add these fields to the same request. Return aspects remain off by default; this example enables them. The wheel uses the return location's houses and angles.
{
"chart_mode": "solar_return_only",
"show_solar_return_aspects": true
}Python example
import requests
response = requests.post(
"https://api.freeastroapi.com/api/v1/natal/chart/solar-return",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"natal": {
"name": "Maya",
"year": 1990,
"month": 5,
"day": 15,
"hour": 14,
"minute": 30,
"city": "London",
"tz_str": "AUTO",
"format": "svg",
},
"solar_return_year": 2026,
"solar_return_city": "Paris",
"solar_return_tz_str": "AUTO",
"show_inter_aspects": True,
},
)
response.raise_for_status()
with open("solar_return_2026.svg", "wb") as output:
output.write(response.content)Unknown birth time
uncertainty_range treats the unknown time as the complete local birth date. It calculates the possible Solar Return boundaries and samples 25 moments across that window. The displayed planets use the local-noon reference moment.
Untimed SVG charts hide houses and angles. Planetary house assignments, angularity, and natal house overlays are not presented as reliable factors. Requested aspect lines remain a representative snapshot and are marked aspects_not_range_verified in the uncertainty metadata.
The visible chart metadata labels both the birth time and return time as unknown and includes the calculated window length in the Solar Return heading.
curl -X POST "https://api.freeastroapi.com/api/v1/natal/chart/solar-return" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-D solar_return_range_headers.txt \
-d '{
"natal": {
"name": "Untimed chart",
"year": 1990,
"month": 1,
"day": 1,
"time_known": false,
"city": "London",
"tz_str": "Europe/London",
"format": "svg"
},
"solar_return_year": 2026,
"calculation_mode": "uncertainty_range",
"solar_return_city": "Paris",
"solar_return_tz_str": "Europe/Paris"
}' \
--output solar_return_range_2026.svgResponse
A successful SVG request returns 200 image/svg+xml with an inline filename such as solar_return_2026.svg. Set natal.format to png for image/png.
Solar Return response headers
Embedded SVG metadata
In range mode, SVG output contains the complete calculation metadata under the following element. PNG clients can read the same uncertainty object from the response header.
<metadata
id="freeastroapi-solar-return-uncertainty"
type="application/json"
>
{
"solar_return": {
"calculation_mode": "uncertainty_range",
"confidence": "approximate",
"reference_chart_basis": "local_noon",
"uncertainty": {
"possible_return_start_utc": "2026-01-01T...Z",
"possible_return_end_utc": "2026-01-02T...Z",
"window_hours": 24.01,
"position_sample_count": 25,
"planet_position_ranges": [],
"stable_factors": [],
"unstable_factors": ["aspects_not_range_verified"],
"suppressed_fields": ["houses", "angles"]
}
}
}
</metadata>Errors and calculation notes
400for unresolved birth/return locations or invalid timezone normalization.422for schema errors such as a missing year or partial coordinate pair.uncertainty_rangereturns422unlessnatal.time_known=false.- The return is calculated from the natal Sun longitude; it is not approximated from the birthday and birth clock time.
- Return houses and angles use the solar-return location, while natal houses use the birth location.
- Omitting
calculation_modepreserves the existingsingle_momentrendering behavior.
Related endpoints
The same bi-wheel renderer for a caller-supplied transit datetime.
Exact return metadata, positions, aspects, overlays, and angularity as JSON.
What remains reliable when the birth time is unknown.
Full reference for display_settings and chart_config.