---
title: "Panchang Festivals"
method: GET
path: "/panchang/festivals"
---

# Panchang Festivals

`GET /panchang/festivals`

## Request

- Base URL: `https://jyotish-api.bda.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://jyotish-api.bda.ai/panchang/festivals`
- Auth: none declared

List Sanatan Dharma festivals computed for any city/range.

Each festival is returned with:
  - Gregorian date (local timezone)
  - Bilingual name (en + hi)
  - Deity, description, lane classification
  - Muhurat windows (Pradosh, Nishita, Abhijit, Bhadra-avoid)
  - Rule explanation (which tithi/nakshatra/sankranti instant drives the date)

Math: tithi = (Moon longitude - Sun longitude) / 12° · sidereal standard-frame reference frame.
See app/festivals.py for the full algorithm.

Transport: the response is gzip-compressed when the client advertises
`Accept-Encoding: gzip` and the body clears the size threshold; the
decompressed body is byte-identical to the plain JSON, and identity clients
are unchanged. The payload is computed by `_panchang_festivals_dict`, which
`/panchang/month` also calls internally (consuming the dict directly, so it
is unaffected by the route's transport encoding).

## Query parameters

- `lat` number
- `lng` number
- `tz` string
- `from_date` string, nullable
- `days` integer
- `anchor_date` string, nullable
- `only` string, nullable
- `include_aliases` boolean
- `include_popular` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/bda/apis/bda-jyotish-panchang-service.md) · [All operations](https://skmtc.dev/bda/apis/bda-jyotish-panchang-service/llms.txt) · [OpenAPI document](https://skmtc.dev/bda/apis/bda-jyotish-panchang-service/revisions/90f241bf4009?raw)
