Planetary Returns

A planetary return occurs when a transiting planet returns to the exact position it occupied at the moment of your birth. The most well-known example is the Solar Return (birthday), but every planet has its own return cycle. Returns mark the beginning of a new cycle for that planet's themes in your life -- Saturn returns signal maturation, Jupiter returns bring expansion, and lunar returns set the emotional tone each month.

GET/api/returnsPro

Calculate when a planet returns to its natal position for a given year. Returns the exact date, time, and planetary position of the return.

Advanced Chart API only

This endpoint requires the Advanced Chart API product. It is not available on the Basic Chart API tier.

Supported Planets

PlanetTypical Return CycleKey Themes
sun~1 yearIdentity, vitality, life direction
moon~27.3 daysEmotions, instincts, inner security
mercury~1 yearCommunication, thinking, learning
venus~1 yearLove, values, aesthetics
mars~2 yearsDrive, action, assertion
jupiter~12 yearsGrowth, luck, expansion
saturn~29.5 yearsStructure, maturity, responsibility
chiron~50 yearsHealing, wounds, wisdom
uranus~84 yearsRevolution, awakening, freedom
neptune~165 yearsSpirituality, dreams, dissolution
pluto~248 yearsTransformation, power, rebirth
north-node~18.6 yearsLife direction, karmic path, purpose
Outer planet returns

Uranus, Neptune, and Pluto returns take longer than a human lifetime for most people. These are still useful for historical research, generational analysis, or for the rare Uranus return (~84 years).

Request

Parameters
birthDate reqstringDate of birth in YYYY-MM-DD format
birthTime reqstringTime of birth in HH:MM (24-hour) format
birthLocation reqstringCity and region (e.g. "New York, NY"). Used for timezone and coordinate lookup.
planet reqstringPlanet to calculate return for. One of: sun, moon, mercury, venus, mars, jupiter, saturn, chiron, uranus, neptune, pluto, north-node
year reqnumberThe year to find the return in (e.g. 2026). For Moon returns, returns the first occurrence in this year.
latitude numberOverride latitude. Skips geocoding when provided with longitude.
longitude numberOverride longitude. Skips geocoding when provided with latitude.
thd-api

Response

✓ doneapplication/json
{
"success": true,
"meta": {
  "version": "1.0.0",
  "timestamp": "2026-03-20T12:00:00.000Z",
  "endpoint": "returns"
},
"data": {
  "birthInfo": {
    "date": "1990-05-15",
    "time": "14:30",
    "location": "New York, NY",
    "timezone": "America/New_York",
    "utcOffset": -4
  },
  "planet": "Sun",
  "year": 2026,
  "returnNumber": 36,
  "natalPosition": {
    "longitude": 54.32,
    "sign": "Taurus",
    "positionInSign": "24°19'",
    "gate": 2,
    "line": 3
  },
  "return": {
    "exactDatetime": "2026-05-15T18:42:31.000Z",
    "localDatetime": "2026-05-15T14:42:31-04:00",
    "longitude": 54.32,
    "sign": "Taurus",
    "positionInSign": "24°19'",
    "gate": 2,
    "line": 3,
    "isRetrograde": false
  },
  "returnChart": {
    "ascendant": { "longitude": 195.7, "sign": "Libra" },
    "moonSign": "Cancer",
    "moonLongitude": 102.45
  },
  "cycle": {
    "previousReturn": "2025-05-15T11:18:05.000Z",
    "nextReturn": "2027-05-15T00:27:14.000Z",
    "cycleLengthDays": 365.26
  }
}
}

Response fields

FieldDescription
planetThe planet for which the return was calculated
yearThe requested year
returnNumberWhich return this is in the person's life (e.g. 36th Solar Return = 36th birthday)
natalPositionThe planet's position at birth — longitude, zodiac sign, and Human Design gate/line
return.exactDatetimeThe precise UTC moment the transiting planet reaches the natal longitude
return.localDatetimeThe return moment in the birth location's timezone
return.gate / return.lineThe Human Design gate and line at the moment of return (same as natal)
return.isRetrogradeWhether the planet is retrograde at the moment of return
returnChartKey chart points at the moment of return — ascendant and moon position
cyclePrevious and next return dates, plus the cycle length in days
Moon returns

The Moon returns approximately every 27.3 days. When requesting a Moon return, the API returns the first lunar return of the specified year. Use the cycle.nextReturn field to step through subsequent returns.