Western predictive calculations¶
Predictive Western endpoints derive time-based factors from a stored
Western natal chart. All routes require charts:read.
Transits — GET /v1/western/charts/{id}/transits¶
Transit-to-natal contacts for a single moment.
| Query param | Type | Required | Notes |
|---|---|---|---|
at |
ISO 8601 datetime | yes | Must include timezone. |
curl -H "Authorization: Bearer $TOKEN" \
"https://api.astrolinkers.com/v1/western/charts/$CHART/transits?at=2026-01-01T00:00:00Z"
{
"natal_chart_id": "019e32b5-...",
"transit_chart_id": "019e42b1-...",
"at": "2026-01-01T00:00:00Z",
"hits": [
{
"transit_planet": "jupiter",
"natal_planet": "sun",
"aspect": "trine",
"orb_degrees": 0.742,
"strength": 0.8939,
"is_applying": true
}
]
}
Natal targets are treated as stationary, so is_applying reflects the
transiting body moving toward or away from exact contact.
Transit windows — GET /v1/western/charts/{id}/transit-windows¶
Daily-resolution windows where a transit contact stays in orb.
| Query param | Type | Required | Notes |
|---|---|---|---|
starts_at |
ISO 8601 datetime | yes | Inclusive start. |
ends_at |
ISO 8601 datetime | yes | Inclusive end. Must be after starts_at. |
Ranges are limited to 400 days per request.
[
{
"transit_planet": "saturn",
"natal_planet": "moon",
"aspect": "square",
"starts_at": "2026-02-01T00:00:00Z",
"ends_at": "2026-02-18T00:00:00Z",
"exact_at": "2026-02-09T00:00:00Z",
"min_orb_degrees": 0.104,
"peak_strength": 0.9851
}
]
Secondary progressions — GET /v1/western/charts/{id}/secondary-progressions¶
Secondary progressed chart for a target date. Uses the standard symbolic key: one ephemeris day after birth for each year of life.
| Query param | Type | Required |
|---|---|---|
at |
ISO 8601 datetime | yes |
{
"natal_chart_id": "019e32b5-...",
"progressed_date": "1990-07-20T13:15:00Z",
"positions": [
{
"planet": "sun",
"sign": "cancer",
"longitude": 118.42,
"degree_in_sign": 28.42,
"speed_per_day": 0.953,
"is_retrograde": false
}
],
"hits": []
}
Solar arc directions — GET /v1/western/charts/{id}/solar-arc¶
Solar arc directions use the distance from natal Sun to secondary progressed Sun, then add that arc to each natal position.
| Query param | Type | Required |
|---|---|---|
at |
ISO 8601 datetime | yes |
{
"natal_chart_id": "019e32b5-...",
"arc_degrees": 35.8124,
"directed_positions": [
{
"planet": "sun",
"longitude": 305.5953,
"sign": "aquarius",
"degree_in_sign": 5.5953
}
],
"hits": []
}
Progressed lunation — GET /v1/western/charts/{id}/progressed-lunation¶
Secondary progressed Sun-Moon phase cycle for a target date.
| Query param | Type | Required |
|---|---|---|
at |
ISO 8601 datetime | yes |
{
"natal_chart_id": "019e32b5-...",
"progressed_date": "1990-07-20T13:15:00Z",
"progressed_sun_longitude": 118.42,
"progressed_moon_longitude": 224.17,
"phase_name": "first_quarter",
"phase_angle": 105.75,
"phase_index": 2,
"phase_progress": 0.35,
"previous_phase_at": "1990-07-16T19:08:00Z",
"next_phase_at": "1990-07-24T07:44:00Z",
"cycle_seed": "first_quarter_2"
}
This endpoint is a deterministic lifecycle signal for product UI and LLM grounding. It does not generate interpretation text.
Solar return — GET /v1/western/charts/{id}/solar-return¶
Solar return chart for a calendar year.
| Query param | Type | Required | Notes |
|---|---|---|---|
year |
integer | yes | 1800…2400. |
latitude |
float | no | Return location latitude. Must be supplied with longitude. |
longitude |
float | no | Return location longitude. Must be supplied with latitude. |
house_system |
enum | no | placidus, whole_sign, or equal. Defaults to the natal chart's house system. |
Return charts are cast for the moment the transiting Sun returns to its
natal longitude. If latitude and longitude are omitted, the natal
coordinates are used.
The response includes the selected house_system, the return chart's
12 house cusps in houses[], and two natal overlay arrays:
house_overlays[]maps each return house cusp into the natal house wheel and includes stable natal topic labels.planet_overlays[]maps each return planet into both the return house and the natal house it activates.
{
"natal_chart_id": "019e32b5-...",
"body": "sun",
"return_at": "2026-06-15T08:42:00Z",
"chart_id": "019e42b1-...",
"house_system": "whole_sign",
"houses": [{"house": 1, "sign": "leo", "longitude": 132.0}],
"positions": [{"planet": "sun", "sign": "gemini", "longitude": 84.3}],
"house_overlays": [
{
"return_house": 1,
"return_house_sign": "leo",
"return_house_longitude": 132.0,
"natal_house": 5,
"natal_topics": ["creativity", "romance", "children"]
}
],
"planet_overlays": [
{
"planet": "sun",
"return_house": 11,
"natal_house": 3,
"natal_topics": ["communication", "siblings", "local_environment"]
}
]
}
Lunar return — GET /v1/western/charts/{id}/lunar-return¶
Next lunar return chart after a requested moment.
| Query param | Type | Required | Notes |
|---|---|---|---|
starts_at |
ISO 8601 datetime | yes | Search anchor. |
latitude |
float | no | Return location latitude. Must be supplied with longitude. |
longitude |
float | no | Return location longitude. Must be supplied with latitude. |
house_system |
enum | no | placidus, whole_sign, or equal. Defaults to the natal chart's house system. |
Annual profections — GET /v1/western/charts/{id}/profections¶
Annual profection house and traditional time lord.
| Query param | Type | Required |
|---|---|---|
at |
ISO 8601 datetime | yes |
{
"natal_chart_id": "019e32b5-...",
"age_years": 36,
"house": 1,
"sign": "cancer",
"time_lord": "moon"
}
Profections advance one sign per completed year from the Ascendant sign.
Annual forecast — GET /v1/western/charts/{id}/annual-forecast¶
Deterministic annual forecast feature summary.
| Query param | Type | Required |
|---|---|---|
year |
integer | yes |
Returns the period profection plus the strongest transit windows.
Monthly forecast — GET /v1/western/charts/{id}/monthly-forecast¶
Deterministic monthly forecast feature summary.
| Query param | Type | Required |
|---|---|---|
year |
integer | yes |
month |
integer | yes, 1…12 |
Zodiacal releasing — GET /v1/western/charts/{id}/zodiacal-releasing¶
Level-one Hellenistic zodiacal releasing periods from Fortune or Spirit.
| Query param | Type | Required | Notes |
|---|---|---|---|
at |
ISO 8601 datetime | yes | Used to mark the current period. |
lot |
"fortune" | "spirit" |
no, default "fortune" |
The releasing lot. |
{
"natal_chart_id": "019e32b5-...",
"lot": "fortune",
"lot_longitude": 330.2121,
"lot_sign": "pisces",
"periods": [
{
"sign": "pisces",
"ruler": "jupiter",
"starts_at": "1984-12-21T11:20:00Z",
"ends_at": "1996-12-21T08:28:00Z",
"years": 12,
"is_current": false
}
]
}
Fortune and Spirit use the standard day/night formula reversal. Day/night is determined by whether the Sun is above the horizon.
Advanced zodiacal releasing — GET /v1/western/charts/{id}/zodiacal-releasing/advanced¶
Nested zodiacal releasing through L1-L4, preserving the original L1 endpoint for clients that only need a simple sequence.
| Query param | Type | Required | Notes |
|---|---|---|---|
at |
ISO 8601 datetime | yes | Used to mark current periods. |
lot |
"fortune" | "spirit" |
no, default "fortune" |
The releasing lot. |
levels |
integer | no, default 4 |
1…4. |
{
"natal_chart_id": "019e32b5-...",
"lot": "fortune",
"lot_longitude": 330.2121,
"lot_sign": "pisces",
"levels": [1, 2, 3, 4],
"periods": [
{
"level": 1,
"sign": "pisces",
"ruler": "jupiter",
"starts_at": "1984-12-21T11:20:00Z",
"ends_at": "1996-12-21T08:28:00Z",
"years": 12.0,
"is_current": false,
"is_peak": true,
"is_loosening_of_bond": false,
"parent_sign": null
}
]
}
is_peak marks angular signs from the releasing lot. is_loosening_of_bond
marks the seventh sign in each level sequence.