Skip to main content
GET/v1/astro/panchanga/festivals

Hindu festival and vrat calendar

Hindu festivals, vrats, sankrantis, eclipses and periods for a year at a location. Each lunar festival is fixed by its lunar month (amanta, with Adhik months detected from new moons and sankrantis), its tithi, and the part of the day in which the tithi must prevail (sunrise, forenoon, Madhyahna, Aparahna, Pradosh, Nishita, moonrise), with the classical tie-breaks when a tithi spans two days, Bhadra rules for Holika Dahan and Raksha Bandhan, and the Smarta Ekadashi rule. Categories: festival (about 50 named festivals), vrat (every Ekadashi, Pradosh, Sankashti Chaturthi, Masik Shivaratri, Purnima and Amavasya), sankranti (12 solar ingresses), eclipse (with local visibility and contact times), period (Adhik Maas, Chaturmas, Pitru Paksha, Navratri, Holashtak, Kharmas). By default only the named festivals are returned; pass categories for the rest. Lahiri ayanamsa.

Request parameters​

yearrequired
integer
Calendar year
locationoptional
string | null
City name
latitudeoptional
number | null
longitudeoptional
number | null
timezoneoptional
string | null
IANA timezone
categoriesoptional
string | null
Comma-separated subset of festival, vrat, sankranti, eclipse, period. Default: festival (the named festivals). Pass e.g. 'festival,vrat,period' for Ekadashis, Pradosh, Sankashti, Purnima and Amavasya, Adhik Maas and Pitru Paksha, or 'eclipse' for eclipses.

Response fields​

success
boolean
True if the request succeeded
message
string
Human-readable status message
data
object
data.year
integer
Calendar year for which festivals are computed.
data.timezone
string
IANA timezone used for sunrise-based tithi calculations.
data.total
integer
Number of entries returned.
data.festivals
array[object]
Festivals sorted chronologically by date.
data.festivals[].name
string
Festival name.
data.festivals[].date
string
Festival date in YYYY-MM-DD format (start date for a period).
data.festivals[].type
string
'solar' (sankranti-based), 'tithi' (lunar day-based) or 'eclipse'.
data.festivals[].description
string
Classical basis for the date: the tithi or sankranti and the rule that picks the day.
data.festivals[].significance
string
Cultural and religious significance.
data.festivals[].id
string | null
Stable identifier, e.g. diwali, ekadashi, pradosh_vrat, pitru_paksha.
data.festivals[].category
string | null
festival, vrat, sankranti, eclipse or period.
data.festivals[].end_date
string | null
Last day, for a period (Pitru Paksha, Chaturmas, Adhik Maas, ...).
data.festivals[].masa
FestivalMasa | null
data.festivals[].paksha
string | null
data.festivals[].tithi
FestivalTithi | null
The tithi the festival follows, with its exact start and end.
data.festivals[].rule
string | null
Part of the day in which the tithi must prevail: sunrise, purvahna, madhyahna, aparahna, sayahna, pradosh, nishita, moonrise, arunodaya, or ekadashi (Smarta rule).
data.festivals[].observance_window
FestivalWindow | null
Puja window on the day: that part of the day while the tithi lasts.
data.festivals[].note
string | null
Why the date moved (Bhadra, a short tithi, ...).
data.festivals[].sankranti
FestivalSankranti | null
data.festivals[].eclipse
FestivalEclipse | null

Errors​

Missing or invalid API key.
Upstream ephemeris service error.
Reserved; product endpoints are not feature-gated by plan (quota differs by tier).
Unexpected server error.
Too many requests in a short window.
Request body exceeds the size limit.
Referenced resource was not found.
Request body failed schema validation.