Compute Secondary Progressions
Track the slow evolution of a natal chart using the day-for-a-year method.
Compute Secondary Progressions
Secondary progressions map the planetary movement in the days after birth onto the years of life. The /v1/progressed endpoint handles the date conversion and returns a full progressed chart.
What you need
- Birth date and time in UTC
- Birth location (latitude and longitude)
- Target date — the date you want progressions for
Computing a progressed chart
Get the current progressions for someone born June 15, 1990 in New York:
curl "https://api.morphemeris.com/v1/progressed?\
datetime=1990-06-15T18:30:00Z&lat=40.7128&lon=-74.006\
&target_datetime=2024-03-20T00:00:00Z" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"const res = await fetch(
"https://api.morphemeris.com/v1/progressed?" + new URLSearchParams({
datetime: "1990-06-15T18:30:00Z",
lat: "40.7128", lon: "-74.006",
target_datetime: "2024-03-20T00:00:00Z",
}),
{ headers: { Authorization: "Bearer morphemeris_live_YOUR_KEY" } }
);
const { data } = await res.json();
// The progressed datetime (about 34 days after birth for age ~34)
console.log("Progressed to:", data.metadata.datetime);
// Track the progressed Moon
const moon = data.bodies.find(b => b.name === "moon");
console.log(`Progressed Moon: ${moon.sign} ${moon.sign_degree.toFixed(2)}°`);import requests
res = requests.get(
"https://api.morphemeris.com/v1/progressed",
params={
"datetime": "1990-06-15T18:30:00Z",
"lat": 40.7128, "lon": -74.006,
"target_datetime": "2024-03-20T00:00:00Z",
},
headers={"Authorization": "Bearer morphemeris_live_YOUR_KEY"},
)
data = res.json()["data"]
moon = next(b for b in data["bodies"] if b["name"] == "moon")
print(f"Progressed Moon: {moon['sign']} {moon['sign_degree']:.2f}°")Tracking the progressed Moon through signs
The progressed Moon changes sign roughly every 2.5 years. Use batch to track it over several years:
{
"requests": [
{ "endpoint": "/v1/progressed", "params": { "datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006, "target_datetime": "2022-01-01T00:00:00Z", "bodies": "moon" } },
{ "endpoint": "/v1/progressed", "params": { "datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006, "target_datetime": "2023-01-01T00:00:00Z", "bodies": "moon" } },
{ "endpoint": "/v1/progressed", "params": { "datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006, "target_datetime": "2024-01-01T00:00:00Z", "bodies": "moon" } },
{ "endpoint": "/v1/progressed", "params": { "datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006, "target_datetime": "2025-01-01T00:00:00Z", "bodies": "moon" } },
{ "endpoint": "/v1/progressed", "params": { "datetime": "1990-06-15T18:30:00Z", "lat": 40.7128, "lon": -74.006, "target_datetime": "2026-01-01T00:00:00Z", "bodies": "moon" } }
]
}Comparing progressions to the natal chart
To see how progressed planets interact with natal positions, you can use synastry with the progressed datetime as one of the charts:
curl "https://api.morphemeris.com/v1/synastry?\
datetime_a=1990-06-15T18:30:00Z&lat_a=40.7128&lon_a=-74.006\
&datetime_b=1990-07-19T13:08:00Z&lat_b=40.7128&lon_b=-74.006" \
-H "Authorization: Bearer morphemeris_live_YOUR_KEY"Here datetime_b is the progressed datetime (from the metadata.datetime field of a previous /v1/progressed response).
Tips
- The progressed Moon is the most useful body to track — it moves about 1° per month and changes sign every ~2.5 years.
- The progressed Sun moves about 1° per year. A progressed Sun sign change is a major life shift.
- Watch for progressed planets stationing (changing direction) — these are powerful turning points.
- The
target_datetimemust be after the birthdatetime. The API returnsinvalid_progressionif it precedes the birth. - See Concepts: Derived Charts for background on how progressions work.