/api/astro/traditional/profections/1 creditProfections
Annual, monthly and daily profections, with the lord of each period. The main Hellenistic timing technique, and the simplest: the chart advances one whole sign per year of life from the ascendant, so a 33-year-old is in a 10th-house profection and the ruler of that sign becomes Lord of the Year — the planet the year is read through. The same motion repeats faster inside the year, one sign per month and one per roughly two and a half days. All three are returned together with each period's exact start and end, because a reading normally uses the annual for theme and the monthly to place it. The monthly continues from the annual sign rather than restarting at the ascendant, and the daily from the monthly. Age is counted by BIRTHDAY, not by dividing elapsed days: the profection turns over on the solar return, so someone eleven months past their thirty-third birthday is still in their thirty-fourth year. That is the detail most implementations get wrong. Every timestamp is UTC, so the periods can be compared and sorted without reparsing.
https://yogataraapi.prahlad.app/api/astro/traditional/profections/Authentication
Send your key in the X-API-Key header. Keys are server-side credentials — never put one in browser JavaScript or a mobile app.
X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/jsonRequest fields
| Field | Type | Required | Notes |
|---|---|---|---|
| date_time | string (date-time) | required | The moment to calculate for, ISO 8601. ALWAYS include an offset or a trailing Z - a value with no zone is read as Asia/Kolkata (UTC+05:30), not UTC, and can return the previous day's result with a 200. '2026-09-01T06:00:00Z' and '2026-09-01 06:00:00' are different instants and give different answers. |
| latitude | number (double) | required | Latitude of the place, in decimal degrees. Positive is north, negative is south. Example: 26.9124 for Jaipur, 40.7128 for New York. Minutes and seconds are not accepted - convert first. min -89.9 · max 89.9 |
| longitude | number (double) | required | Longitude of the place, in decimal degrees. Positive is east, negative is west. Example: 75.7873 for Jaipur, -74.0060 for New York. Note the sign: a missing minus puts New York in China. min -180 · max 180 |
| timezone_as_float | number (double) | required | UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30), -5 for New York in winter, 5.75 for Nepal. This is NOT validated against date_time - if the two disagree you get a successful response for the wrong moment, so derive both from the same source. Use the offset in force on that date, not today's: a summer birth in a country with daylight saving needs the summer offset. min -12 · max 14 |
| as_of | string (date-time) | optional | The date to profect to. Defaults to now (UTC). |
| house_system | string | optional | Profections are traditionally whole-sign; the option is here because the ascendant SIGN is all that is used. campanusequalkochplacidusporphyryregiomontanustopocentricwhole_sign |
| keys | array | optional | Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. |
Example request
curl -X POST https://yogataraapi.prahlad.app/api/astro/traditional/profections/ \
-H "X-API-Key: $OCCULT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date_time":"1990-08-15T10:30:00+05:30","latitude":26.9124,"longitude":75.7873,"timezone_as_float":5.5,"as_of":"2026-09-09T12:00:00+00:00"}'Response
{
"data": {
"zodiac": "tropical",
"as_of": "2026-09-09T12:00:00+00:00",
"age": 36,
"ascendant": {
"degree": 201.479077,
"sign": "Libra",
"sign_index": 7,
"degree_in_sign": 21.4791,
"formatted": "21°28' Libra"
},
"annual": {
"period": "year",
"house": 1,
"sign": "Libra",
"sign_index": 7,
"lord": "venus",
"lord_position": {
"sign": "Leo",
"sign_index": 5,
"degree_in_sign": 1.573,
"formatted": "1°34' Leo",
"retrograde": false
},
"from": "2026-08-15T05:00:00+00:00",
"to": "2027-08-15T05:00:00+00:00"
},
"monthly": {
"period": "month",
"house": 1,
"sign": "Libra",
"sign_index": 7,
"lord": "venus",
"lord_position": {
"sign": "Leo",
"sign_index": 5,
"degree_in_sign": 1.573,
"formatted": "1°34' Leo",
"retrograde": false
},
"from": "2026-08-15T05:00:00+00:00",
"to": "2026-09-14T15:00:00+00:00"
},
"daily": {
"period": "day",
"house": 10,
"sign": "Cancer",
"sign_index": 4,
"lord": "moon",
"lord_position": {
"sign": "Gemini",
"sign_index": 3,
"degree_in_sign": 12.66,
"formatted": "12°39' Gemini",
"retrograde": false
},
"from": "2026-09-07T00:30:00+00:00",
"to": "2026-09-09T13:20:00+00:00"
},
"lord_of_the_year": "venus",
"note": "Age is counted by birthday, so the annual profection turns over on the solar return rather than on 1 January or on a 365-day division of elapsed time."
},
"status": 200,
"is_error": false,
"message": "successful"
}Captured from a real call using the exact request above. Results sit under data.
Errors
Metering errors return { "error": "…", "message": "<code>", "is_error": true }. Show error to people and branch on message. See the error reference.