Return precomputed astronomical events between start_date and end_date —
any range within years -5000..+5000 (eclipses -1999..3000), instant.
Events are global (location-independent) and served from binary-searched
lookup tables — no live ephemeris computation.
Example questions: "planetary events this month", "solar eclipses in the
12th century", "when was Shani retrograde in 1500 BCE?", "adhik maas
years this decade".
Ritu/ayana changes are Sayan sankrantis: Surya entering Meena=Vasanta,
Vrishabha=Grishma, Karka=Varsha (=Dakshinayan start, = solstice),
Kanya=Sharada, Vrishchika=Hemanta, Makara=Shishira (=Uttarayan start,
= solstice) — query event_types=["sankranti"] with ayanamsa="Sayan".
Args:
start_date: Start date inclusive, YYYY-MM-DD (e.g. "2026-01-01");
negative years allowed (e.g. "-3101-01-01")
end_date: End date inclusive, YYYY-MM-DD (e.g. "2026-12-31")
ayanamsa: "Lahiri" (Vedic sidereal, default) or "Sayan" (tropical/Western)
grah: Optional planet filter. One of: Surya, Chandra, Mangala, Budha,
Guru, Shukra, Shani, Rahu, Ketu
event_types: Optional list of event type filters. Valid values:
"transit" – Mangala..Ketu change rashi (NOT Surya/Chandra)
"sankranti" – Surya changes rashi (~monthly)
"moon_transit" – Chandra changes rashi (~monthly)
"full_moon" – Purnima (Moon at 180° elongation)
"new_moon" – Amavasya (Moon at 0° elongation)
"retrograde_start" – planet turns retrograde
"retrograde_end" – planet resumes direct motion
"equinox" – Vernal or Autumnal equinox (Sayan Surya)
"solstice" – Summer or Winter solstice (Sayan Surya)
"asta_start" – planet enters combust zone (Grah Asta)
"asta_end" – planet exits combust zone (Uday)
"solar_eclipse" – solar eclipse (catalog, years -1999..3000)
"lunar_eclipse" – lunar eclipse (catalog, years -1999..3000)
"kaal_sarp" – Kaal Sarp window (interval)
"adhik_maas" – intercalary Hindu month (interval)
"kshay_maas" – lost Hindu month (interval)
"kumbh_mela" – Kumbh Mela window (interval)
The max range is set by the densest requested type: 3 years by default,
up to 1000 years for sparse-only queries (kumbh, maas). Interval events
also carry end_time, duration_days, and type-specific details.
Returns:
Dict with keys: start_date, end_date, ayanamsa, count, events (list).
Each event has: time (UTC ISO), event_type, grah, from, to, and
(for intervals) end_time, duration_days, plus a details dict.