Birth Date, Time and Time Zone
Every chart is calculated for one instant. The API builds it from the local
date and time you send and the place's time zone. This page describes the
rules, so the same input always gives the same chart.
The inputs
| Field | Format | Notes |
|---|---|---|
date | YYYY-MM-DD | 1800-01-01 to 2099-12-31. |
time | HH:MM, 24-hour, local clock time | Omit it when the birth time is unknown (see below). |
timezone | IANA name, e.g. Asia/Kolkata | Required with latitude/longitude, unless utc_offset is given. Not needed with location. |
utc_offset | ±HH:MM or ±HH:MM:SS | Optional. Overrides the offset the time zone would give. |
How the local time becomes an instant
- Time zone rules. The API uses the IANA time zone database, pinned to a known release (currently 2026d), with each zone's full history: daylight saving and wartime offsets in the past, and the current rules for dates ahead.
- Before standard time: local mean time of the birthplace. Until a region adopted a standard time, clocks kept local mean time. For those dates the IANA database gives the mean time of the zone's reference city for the whole zone, which can be an hour or more off for a birth elsewhere. The API uses the birthplace's own mean time instead: longitude ÷ 15 hours (for example +4:51:31 for Mumbai in 1850).
- Clock gaps. A local time that never showed on the clock (the hour skipped when daylight saving starts) is read with the offset in force before the change: 02:30 in New York on 2021-03-14 is read as 03:30 EDT.
- Clock overlaps. A local time that showed twice (the hour repeated when
daylight saving ends) is read as its first occurrence. Send
utc_offsetto choose the other one. - Explicit offsets win.
utc_offsetreplaces all of the above. Use it when the birth record states the offset, or for historical local times the database cannot represent (for example a city that kept its own railway time).
Civil UTC is then converted to the Universal Time (UT1) that planetary positions are computed in, accounting for leap seconds.
What the response tells you
POST /v1/astro/natal returns a birth_moment object:
"birth_moment": {
"utc": "1985-11-12T01:15:00Z",
"utc_offset": "+05:30",
"offset_basis": "iana",
"local_time_status": "ok"
}
offset_basis:iana,local_mean_time(birthplace mean time, rule 2) orexplicit_offset(utc_offsetwas sent).local_time_status:ok,nonexistent(rule 3 applied) orambiguous(rule 4 applied).
Unknown birth time
Omit time when the birth time is not known. The chart is cast for sunrise
at the birthplace on that date, to the second, and birth_time_provided is
false. Signs of the slower planets are usually still right; the Moon moves
about 13° a day, so its nakshatra may not be, and anything that depends on the
lagna (houses, the ascendant, arudhas, divisional charts) is not reliable.
Do not send "00:00" for an unknown time: it means a birth at midnight.