Morphemeris DocsBeta

Compute Planetary Returns

Find solar, lunar, and planetary return charts for astrological timing.

Compute Planetary Returns

Use the /v1/returns endpoint to find the exact moment a transiting planet returns to its natal longitude and get a full chart for that moment.

What you need

  • Birth date and time in UTC (the natal longitude is computed from this)
  • Search start date — when to begin looking for the return
  • Location — where the person is at the time of the return (for house cusps)

Solar return for the current year

Bash
curl "https://api.morphemeris.com/v1/returns?\
body=sun\
&datetime=1990-06-15T18:30:00Z\
&search_start=2024-01-01T00:00:00Z\
&lat=38.4496&lon=-78.8689" \
  -H "Authorization: Bearer morphemeris_live_YOUR_KEY"

The response includes a full chart at the return moment — positions, houses, aspects, and dignities — just like a natal chart.

Track monthly lunar returns

Lunar returns happen roughly every 27.3 days. Use count to get several at once:

javascript
const res = await fetch(
  "https://api.morphemeris.com/v1/returns?" + new URLSearchParams({
    body: "moon",
    datetime: "1990-06-15T18:30:00Z",
    search_start: "2024-03-01T00:00:00Z",
    lat: "38.4496", lon: "-78.8689",
    count: "6",
  }),
  { headers: { Authorization: `Bearer ${apiKey}` } }
);
const { data } = await res.json();

for (const chart of data.charts) {
  console.log(`Return on ${chart.metadata.datetime}`);
  console.log(`  Ascendant: ${chart.houses.ascendant.sign} ${chart.houses.ascendant.sign_degree.toFixed(1)}°`);
}

Find a Saturn return

Saturn returns happen roughly every 29.5 years. For someone born in 1995, the first Saturn return occurs around 2024-2025:

Python
import requests

res = requests.get(
    "https://api.morphemeris.com/v1/returns",
    params={
        "body": "saturn",
        "datetime": "1995-08-20T14:00:00Z",
        "search_start": "2024-01-01T00:00:00Z",
        "lat": 40.7128, "lon": -74.006,
    },
    headers={"Authorization": "Bearer morphemeris_live_YOUR_KEY"},
)
data = res.json()["data"]

print(f"Natal Saturn: {data['natal_longitude']:.2f}°")
for chart in data["charts"]:
    print(f"Saturn return: {chart['metadata']['datetime']}")

Saturn's retrograde motion means it may cross the natal degree multiple times — the response includes each crossing in chronological order.

Compare a return chart with the natal chart

Use /v1/synastry to overlay the return chart onto the natal chart and see the inter-chart aspects:

Bash
curl "https://api.morphemeris.com/v1/synastry?\
datetime_a=1990-06-15T18:30:00Z&lat_a=40.7128&lon_a=-74.006\
&datetime_b=2024-06-14T17:37:00Z&lat_b=38.4496&lon_b=-78.8689" \
  -H "Authorization: Bearer morphemeris_live_YOUR_KEY"

Use the return moment's datetime and the person's current location as chart B.

Tips

  • The search_start should be before the expected return. For solar returns, January 1 of the target year works well.
  • Return chart location matters — use the person's current residence, not their birthplace.
  • Solar returns cost 2 credits. Using count doesn't multiply the cost.
  • See Planetary Returns for background on return chart interpretation.