{"openapi":"3.1.0","info":{"title":"TathaAstu Panchang API","description":"\n## World's Most Comprehensive Hindu Panchang API\n\n**तथास्तु** — \"So be it\"\n\n### Features:\n- 📅 **250+ Years Coverage** (1900-2150)\n- 🌍 **50+ Languages** (phonetic transliteration)\n- 🎯 **Rule-Based Festivals** (derived on-the-fly)\n- ⚡ **Sub-50ms Response** (Redis cached)\n- 📖 **Explainability** (know WHY a festival appears)\n\n### Base URL\n```\nhttps://api.tathaastuapi.com/v1\n```\n\n### Authentication\nInclude your API key in the header:\n```\nX-API-Key: your_api_key\n```\n    ","version":"1.0.0"},"paths":{"/v1/pricing":{"get":{"tags":["Pricing"],"summary":"Published pricing plans","description":"Every plan the website shows, priced in one currency. Read from the same plans table the admin panel edits, so a price change needs no deploy. No API key required.","operationId":"pricing_get","parameters":[{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"INR or USD. Defaults by visitor country, then INR.","title":"Currency"},"description":"INR or USD. Defaults by visitor country, then INR."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/birth-chart":{"post":{"tags":["Astrology"],"summary":"Birth Chart","description":"Generate a complete Vedic birth chart (Kundli).\nReturns planet positions, nakshatras, houses, divisional charts, and optional yogas.","operationId":"birth_chart_create","parameters":[{"name":"store","in":"query","required":false,"schema":{"type":"boolean","description":"Store chart in DB for caching","default":true,"title":"Store"},"description":"Store chart in DB for caching"},{"name":"include_yogas","in":"query","required":false,"schema":{"type":"boolean","description":"Include classical yoga detection","default":true,"title":"Include Yogas"},"description":"Include classical yoga detection"},{"name":"include_shadbala","in":"query","required":false,"schema":{"type":"boolean","description":"Include Shadbala strength analysis","default":false,"title":"Include Shadbala"},"description":"Include Shadbala strength analysis"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BirthData"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/compatibility":{"post":{"tags":["Astrology"],"summary":"Compatibility","description":"Generate a Vedic compatibility (Kundli Milan) report for two persons.\nReturns Guna Milan (36-point), 10 domain scores, and relationship dynamics.","operationId":"compatibility_create","parameters":[{"name":"store","in":"query","required":false,"schema":{"type":"boolean","description":"Store results in DB","default":true,"title":"Store"},"description":"Store results in DB"},{"name":"include_dynamics","in":"query","required":false,"schema":{"type":"boolean","description":"Include relationship dynamics","default":true,"title":"Include Dynamics"},"description":"Include relationship dynamics"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompatibilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/birth-chart/{profile_id}":{"get":{"tags":["Astrology"],"summary":"Get Birth Chart","description":"Retrieve a previously computed birth chart by profile ID.","operationId":"birth_chart_get_by_profile_id","parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"integer","title":"Profile Id"},"description":"Stored birth-profile identifier."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/compatibility/report":{"post":{"tags":["Astrology"],"summary":"Compatibility Report","description":"Full human-readable compatibility report in JSON. Supports lang=en/hi.","operationId":"compatibility_report_create","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompatibilityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/compatibility/score":{"get":{"summary":"Compatibility Score","description":"Lightweight compatibility score — structured data only, no PDF.","operationId":"compatibility_score_get","parameters":[{"name":"bride_dob","in":"query","required":true,"schema":{"type":"string","description":"Bride DOB YYYY-MM-DD","title":"Bride Dob"},"description":"Bride DOB YYYY-MM-DD"},{"name":"bride_time","in":"query","required":true,"schema":{"type":"string","description":"Bride time HH:MM","title":"Bride Time"},"description":"Bride time HH:MM"},{"name":"bride_lat","in":"query","required":true,"schema":{"type":"number","description":"Bride latitude","title":"Bride Lat"},"description":"Bride latitude"},{"name":"bride_lon","in":"query","required":true,"schema":{"type":"number","description":"Bride longitude","title":"Bride Lon"},"description":"Bride longitude"},{"name":"groom_dob","in":"query","required":true,"schema":{"type":"string","description":"Groom DOB YYYY-MM-DD","title":"Groom Dob"},"description":"Groom DOB YYYY-MM-DD"},{"name":"groom_time","in":"query","required":true,"schema":{"type":"string","description":"Groom time HH:MM","title":"Groom Time"},"description":"Groom time HH:MM"},{"name":"groom_lat","in":"query","required":true,"schema":{"type":"number","description":"Groom latitude","title":"Groom Lat"},"description":"Groom latitude"},{"name":"groom_lon","in":"query","required":true,"schema":{"type":"number","description":"Groom longitude","title":"Groom Lon"},"description":"Groom longitude"},{"name":"mode","in":"query","required":false,"schema":{"type":"string","description":"full or lite","default":"full","title":"Mode"},"description":"full or lite"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Astrology"]}},"/v1/compatibility/{compat_id}":{"get":{"tags":["Astrology"],"summary":"Get Compatibility","description":"Retrieve a previously computed compatibility report by ID.","operationId":"compatibility_get_by_compat_id","parameters":[{"name":"compat_id","in":"path","required":true,"schema":{"type":"integer","title":"Compat Id"},"description":"Stored compatibility-result identifier."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/world":{"get":{"tags":["World Festivals"],"summary":"Get World Festivals","description":"Multi-religion world festival calendar.\nCovers Islamic, Christian, Orthodox, Sikh, and Jewish festivals.\nPre-computed with astronomical precision (Swiss Ephemeris).\n\nQuery by date, year, month, religion, or search by name.","operationId":"festivals_world_get","parameters":[{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD — get festivals for a specific date","title":"Date"},"description":"YYYY-MM-DD — get festivals for a specific date"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Year (1700-2400)","title":"Year"},"description":"Year (1700-2400)"},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":12,"minimum":1},{"type":"null"}],"description":"Month (1-12), requires year","title":"Month"},"description":"Month (1-12), requires year"},{"name":"religion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: islamic, christian, orthodox, sikh, jewish","title":"Religion"},"description":"Filter: islamic, christian, orthodox, sikh, jewish"},{"name":"festival_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact festival_id filter","title":"Festival Id"},"description":"Exact festival_id filter"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search festival names","title":"Search"},"description":"Search festival names"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"},"description":"`limit` parameter."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"},"description":"`offset` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/world/religions":{"get":{"tags":["World Festivals"],"summary":"Get World Religions","description":"List all available religions and festival counts.","operationId":"festivals_world_religions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/world/upcoming":{"get":{"tags":["World Festivals"],"summary":"Get Upcoming World Festivals","description":"Get upcoming world festivals from today.","operationId":"festivals_world_upcoming_get","parameters":[{"name":"religion","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Religion"},"description":"`religion` parameter."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"},"description":"`limit` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/":{"get":{"tags":["System"],"summary":"Root","description":"API root - health check.","operationId":"service_root","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/status":{"get":{"tags":["System"],"summary":"Get Status","description":"Get API status and statistics.","operationId":"status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/health":{"get":{"tags":["System"],"summary":"Health Check","description":"Detailed health check.","operationId":"health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/panchang":{"get":{"tags":["Core Panchang"],"summary":"Get Panchang for a date","description":"Get complete Panchang data for a specific date.\n\n**This is the main API endpoint** used by apps and websites.\n\n### Include Options:\n- `tithi,nakshatra,yoga,karana` - Panchang elements (included by default)\n- `hora` - 24 Hora periods\n- `choghadiya` - 16 Choghadiya periods\n- `festivals` - Stored + derived festivals\n- `muhurat` - Auspicious/inauspicious timings\n- `eclipse` - Eclipse info if applicable","operationId":"panchang_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date in YYYY-MM-DD format","title":"Date"},"description":"Date in YYYY-MM-DD format","example":"2025-03-01"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"description":"Latitude","title":"Lat"},"description":"Latitude","example":23.1765},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"description":"Longitude","title":"Lon"},"description":"Longitude","example":75.7885},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Predefined location ID","default":2,"title":"Location Id"},"description":"Predefined location ID"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code","example":"hi"},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated: tithi,nakshatra,yoga,karana,hora,choghadiya,festivals,muhurat,eclipse","title":"Include"},"description":"Comma-separated: tithi,nakshatra,yoga,karana,hora,choghadiya,festivals,muhurat,eclipse","example":"festivals,hora,choghadiya"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/lite":{"get":{"tags":["Core Panchang"],"summary":"Lightweight Panchang (< 1KB)","description":"**Lightweight Panchang** for mobile apps.\nReturns only essential data: date, tithi, nakshatra, sunrise, sunset, paksha.\nResponse size < 1KB. For full data use /v1/panchang.","operationId":"panchang_get_lite","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD","example":"2025-03-14"},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Location ID","default":2,"title":"Location Id"},"description":"Location ID"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/today":{"get":{"tags":["Core Panchang"],"summary":"Today's complete Panchang + festivals + timings","description":"Killer endpoint: Returns today's complete Panchang data in a single call.\nIncludes: panchang, festivals, muhurat, rahukaal, moon phase — everything.\nOptimized for mobile apps and dashboard widgets.","operationId":"today_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"type":"number","default":28.6139,"title":"Lat"},"description":"Latitude in decimal degrees. Provide with `lon`, or use `location_id`."},{"name":"lon","in":"query","required":false,"schema":{"type":"number","default":77.209,"title":"Lon"},"description":"Longitude in decimal degrees. Provide with `lat`, or use `location_id`."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","description":"Location ID","default":2,"title":"Location Id"},"description":"Location ID"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/today":{"get":{"tags":["Core Panchang"],"summary":"Get today's Panchang","description":"Get Panchang for today. Ideal for widgets and dashboards.","operationId":"panchang_today_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"description":"Latitude in decimal degrees. Provide with `lon`, or use `location_id`."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"description":"Longitude in decimal degrees. Provide with `lat`, or use `location_id`."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"},"description":"`include` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/tomorrow":{"get":{"tags":["Core Panchang"],"summary":"Get tomorrow's Panchang","description":"Get Panchang for tomorrow.","operationId":"panchang_tomorrow_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"description":"Latitude in decimal degrees. Provide with `lon`, or use `location_id`."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"description":"Longitude in decimal degrees. Provide with `lat`, or use `location_id`."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"},"description":"`include` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/yesterday":{"get":{"tags":["Core Panchang"],"summary":"Get yesterday's Panchang","description":"Get Panchang for yesterday.","operationId":"panchang_yesterday_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"description":"Latitude in decimal degrees. Provide with `lon`, or use `location_id`."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"description":"Longitude in decimal degrees. Provide with `lat`, or use `location_id`."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"},"description":"`include` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/now":{"get":{"tags":["Core Panchang"],"summary":"Get current Panchang with live timings","description":"Get Panchang for current moment with live running tithi/nakshatra info.\nShows what's active RIGHT NOW.","operationId":"panchang_now_get","parameters":[{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"description":"Latitude in decimal degrees. Provide with `lon`, or use `location_id`."},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"},"description":"Longitude in decimal degrees. Provide with `lat`, or use `location_id`."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/calendar/day":{"get":{"tags":["Calendar"],"summary":"Get calendar day view","description":"Get detailed calendar view for a single day.","operationId":"calendar_day_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/calendar/month":{"get":{"tags":["Calendar"],"summary":"Get calendar month view","description":"Get Panchang summary for an entire month.\n\nPerfect for calendar UI grids. Returns summary for each day.","operationId":"calendar_month_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Year","title":"Year"},"description":"Year","example":2025},{"name":"month","in":"query","required":true,"schema":{"type":"integer","description":"Month (1-12)","title":"Month"},"description":"Month (1-12)","example":3},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/calendar/year":{"get":{"tags":["Calendar"],"summary":"Get calendar year view","description":"Get Panchang summary for an entire year.\n\nReturns monthly summaries with key dates (Ekadashi, Purnima, Amavasya, major festivals).","operationId":"calendar_year_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Year","title":"Year"},"description":"Year","example":2025},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/calendar/range":{"get":{"tags":["Calendar"],"summary":"Get calendar range","description":"Get Panchang for a custom date range (max 31 days).","operationId":"calendar_range_get","parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start date YYYY-MM-DD","title":"Start"},"description":"Start date YYYY-MM-DD"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"End date YYYY-MM-DD","title":"End"},"description":"End date YYYY-MM-DD"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals":{"get":{"tags":["Festivals"],"summary":"Get festivals for a date","description":"Get all festivals for a date (stored + derived).\n\nFestivals are derived on-the-fly using our rule engine.","operationId":"festivals_list","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: VRAT, FESTIVAL, SANKRANTI","title":"Type"},"description":"Filter: VRAT, FESTIVAL, SANKRANTI"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tags: FASTING,SHAIVA,VAISHNAVA","title":"Tags"},"description":"Filter by tags: FASTING,SHAIVA,VAISHNAVA"},{"name":"festival_mode","in":"query","required":false,"schema":{"type":"string","description":"standard or drik","default":"standard","title":"Festival Mode"},"description":"standard or drik"},{"name":"pack","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rule pack (e.g. north_india)","title":"Pack"},"description":"Rule pack (e.g. north_india)"},{"name":"observatory","in":"query","required":false,"schema":{"type":"boolean","description":"Include evaluation trace per festival","default":false,"title":"Observatory"},"description":"Include evaluation trace per festival"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/date":{"get":{"tags":["Festivals"],"summary":"Get festivals for date (alias)","description":"Alias for /v1/festivals?date=X","operationId":"festivals_date_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/range":{"get":{"tags":["Festivals"],"summary":"Get festivals in date range","description":"Get all festivals in a date range using the rule engine.","operationId":"festivals_list_range","parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start date","title":"Start"},"description":"Start date"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"End date","title":"End"},"description":"End date"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/month":{"get":{"tags":["Festivals"],"summary":"Get festivals for a month","description":"Get all festivals for a specific month.","operationId":"festivals_list_month","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"},"description":"Four-digit year."},{"name":"month","in":"query","required":true,"schema":{"type":"integer","title":"Month"},"description":"Month number, 1-12."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/year":{"get":{"tags":["Festivals"],"summary":"Get festivals for a year","description":"Get all festivals for a specific year.","operationId":"festivals_list_year","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"},"description":"Four-digit year."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/search":{"get":{"tags":["Festivals"],"summary":"Search festivals","description":"Search festivals by name or tag.","operationId":"festivals_search","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tag","title":"Tag"},"description":"Filter by tag"},{"name":"year","in":"query","required":false,"schema":{"type":"integer","default":2025,"title":"Year"},"description":"Four-digit year."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/festivals/explain":{"get":{"tags":["Festivals"],"summary":"Explain why a festival appears","description":"**Explainability API** (Festival Engine V2) - Understand WHY a festival\nappears on a specific date.\n\nReturns the kala-vyapini evaluation trace: the target tithi interval, the\nrequired kala window (madhyahna / aparahna / pradosha / nishita / moonrise),\nthe overlap that decided the day, and the shastric authorities cited.","operationId":"festivals_explain","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"festival","in":"query","required":true,"schema":{"type":"string","description":"Festival key","title":"Festival"},"description":"Festival key","example":"FESTIVAL_MAHA_SHIVARATRI"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","description":"Location ID","default":1,"title":"Location Id"},"description":"Location ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/tithi":{"get":{"tags":["Calculators"],"summary":"Get Tithi details","description":"Get detailed Tithi information for a date.","operationId":"tithi_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/nakshatra":{"get":{"tags":["Calculators"],"summary":"Get Nakshatra details","description":"Get detailed Nakshatra information for a date/time.","operationId":"nakshatra_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Time HH:MM for precise nakshatra","title":"Time"},"description":"Time HH:MM for precise nakshatra"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/yoga":{"get":{"tags":["Calculators"],"summary":"Get Yoga details","description":"Get detailed Yoga information for a date.","operationId":"yoga_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/karana":{"get":{"tags":["Calculators"],"summary":"Get Karana details","description":"Get detailed Karana information for a date.","operationId":"karana_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/hora":{"get":{"tags":["Timings"],"summary":"Get 24 Hora periods","description":"Get all 24 Hora (planetary hour) periods from sunrise to next sunrise.\nEach hora is ruled by a planet and indicates the best activities for that hour.","operationId":"hora_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/choghadiya":{"get":{"tags":["Timings"],"summary":"Get 16 Choghadiya periods","description":"Get 16 Choghadiya periods (8 day + 8 night).\nEach period is ~90 minutes with auspiciousness rating and meaning.\nNote: Choghadiya is a North/West Indian system.","operationId":"choghadiya_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/rahukaal":{"get":{"tags":["Timings"],"summary":"Get Rahu Kaal timing","description":"Get Rahu Kaal (inauspicious period) for a date. Avoid new beginnings during this time.","operationId":"rahukaal_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/yamaganda":{"get":{"tags":["Timings"],"summary":"Get Yamagandam timing","description":"Get Yamagandam (inauspicious period) for a date.","operationId":"yamaganda_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/gulikaal":{"get":{"tags":["Timings"],"summary":"Get Gulika Kaal timing","description":"Get Gulika Kaal (inauspicious period) for a date.","operationId":"gulikaal_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/abhijit":{"get":{"tags":["Timings"],"summary":"Get Abhijit Muhurat","description":"Get Abhijit Muhurat — most auspicious window of the day (~48 min around noon).","operationId":"abhijit_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/timings":{"get":{"tags":["Timings"],"summary":"All timings for a date","description":"Complete timing overview for a date at your location.\n\nReturns sunrise/sunset, moonrise/moonset, and all auspicious/inauspicious windows:\nBrahma Muhurta, Abhijit, Amrit Kaal, Rahu Kaal, Yamagandam, Gulika, Durmuhurta, Varjyam.","operationId":"timings_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/astronomical":{"get":{"tags":["Astronomical"],"summary":"Astronomical data for a date","description":"Astronomical data — sun/moon positions, moon phase, illumination, paksha.\nIncludes zodiac context: sun rashi, moon rashi, nakshatra pada.","operationId":"astronomical_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/moon-phase":{"get":{"tags":["Astronomical"],"summary":"Moon phase for a date","description":"Moon phase, illumination %, paksha, and shastric phase description.","operationId":"moon_phase_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/lagna":{"get":{"tags":["Astronomical"],"summary":"Current Lagna (ascendant)","description":"Get Lagna (ascendant) information — current lagna, next lagna, and udaya lagna at sunrise.\nLagna changes every ~2 hours. Refresh frequently for real-time use.","operationId":"lagna_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/shastra/conditions":{"get":{"tags":["Shastric"],"summary":"Full shastric conditions for a date","description":"Full shastric layer — your competitive differentiator.\n\nReturns:\n- Panchak (type, severity, remedies)\n- Bhadra (Vishti Karana)\n- Disha Shool (inauspicious direction by weekday)\n- Nakshatra Shool (inauspicious direction by nakshatra)\n- Special Yogas (Sarvartha Siddhi, Amrita Siddhi, Dwipushkar, Tripushkar)\n- Tithi Nature (Nanda/Bhadra/Jaya/Rikta/Purna)\n- Nakshatra flags (nature, deity, gana, gandamool)\n- Moon Nivas (Deva/Manushya/Tiryak)\n- Observance level\n- Traditional restrictions (hair cutting, oil, etc.)\n- Day attributes (color, deity, mantra)","operationId":"shastra_conditions_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/full":{"get":{"tags":["Core Panchang"],"summary":"Complete panchang — all sections","description":"Full enterprise panchang — all sections in one call.\nMarked as HEAVY. Use individual endpoints for production apps.\nIntended for: temple kiosks, export tools, offline packs, enterprise clients.\n\nNow also surfaces (in addition to the existing `data` block):\n  - `conditions` → panchak, bhadra, ganda_mool\n  - `astronomical.eclipse` → eclipse on this date if any\nThese are nullable. The legacy `data` field is unchanged.","operationId":"panchang_full_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/muhurat/day":{"get":{"tags":["Muhurat"],"summary":"Get all timings for a day","description":"GET /v1/timings — all auspicious and inauspicious periods for a date.\nEquivalent to /v1/muhurat/day. Use this for a complete timing overview.","operationId":"muhurat_get_day","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/muhurat/find":{"get":{"tags":["Muhurat"],"summary":"Find auspicious dates for events","description":"Find auspicious dates for specific events.\n\n**Event Types:**\n- MARRIAGE\n- GRIHA_PRAVESH (house warming)\n- NAMKARAN (naming ceremony)\n- TRAVEL\n- BUSINESS\n- VEHICLE_PURCHASE\n- PROPERTY_PURCHASE\n- EDUCATION","operationId":"muhurat_find","parameters":[{"name":"event","in":"query","required":true,"schema":{"type":"string","description":"Event type","title":"Event"},"description":"Event type","example":"MARRIAGE"},{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start date YYYY-MM-DD","title":"Start"},"description":"Start date YYYY-MM-DD"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"End date YYYY-MM-DD","title":"End"},"description":"End date YYYY-MM-DD"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"min_rating","in":"query","required":false,"schema":{"type":"string","description":"Minimum rating: EXCELLENT, GOOD, NEUTRAL","default":"GOOD","title":"Min Rating"},"description":"Minimum rating: EXCELLENT, GOOD, NEUTRAL"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchak":{"get":{"tags":["Special Conditions"],"summary":"Check Panchak","description":"Check if a date falls in Panchak — 5 inauspicious nakshatras\n(Dhanistha, Shatabhisha, Purva Bhadrapada, Uttara Bhadrapada, Revati).\nIncludes type, severity, avoided activities, and remedies.","operationId":"panchak_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/ganda-mool":{"get":{"tags":["Special Conditions"],"summary":"Check Ganda Mool","description":"Check if a date falls in Ganda Mool nakshatra.","operationId":"ganda_mool_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/bhadra":{"get":{"tags":["Special Conditions"],"summary":"Check Bhadra (Vishti Karana)","description":"Check if Bhadra (Vishti Karana) is present on a date.","operationId":"bhadra_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/sankranti":{"get":{"tags":["Special Conditions"],"summary":"Get Sankranti dates","description":"Get all Sankranti (solar ingress) dates for a year.","operationId":"sankranti_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Year","title":"Year"},"description":"Year"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/eclipse":{"get":{"tags":["Eclipses"],"summary":"Get eclipses for a year","description":"Get list of eclipses.","operationId":"eclipse_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by year","title":"Year"},"description":"Filter by year"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SOLAR or LUNAR","title":"Type"},"description":"SOLAR or LUNAR"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/eclipse/year":{"get":{"tags":["Eclipses"],"summary":"Get eclipses for a specific year","description":"Get all eclipses for a specific year.","operationId":"eclipse_year_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"},"description":"Four-digit year."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/eclipse/visibility":{"get":{"tags":["Eclipses"],"summary":"Calculate eclipse visibility","description":"Calculate eclipse visibility for a specific location.\n\n**Status:** Not yet implemented. Will use Swiss Ephemeris for on-demand calculation.","operationId":"eclipse_visibility_get","parameters":[{"name":"eclipse_id","in":"query","required":true,"schema":{"type":"integer","description":"Eclipse ID","title":"Eclipse Id"},"description":"Eclipse ID"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/eclipse/{eclipse_id}":{"get":{"tags":["Eclipses"],"summary":"Get eclipse details","description":"Get detailed eclipse information.","operationId":"eclipse_get_by_eclipse_id","parameters":[{"name":"eclipse_id","in":"path","required":true,"schema":{"type":"integer","title":"Eclipse Id"},"description":"Eclipse identifier."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/events/suitability":{"get":{"tags":["Events"],"summary":"Get event suitability rating","description":"Get event suitability for a date. Pass event= for a specific rating, or omit for all events.\nEngine applies full Shastric hierarchy: Eclipse > Ekadashi > Amavasya/Purnima > Bhadra > Panchak > Shool.\nReturns rating (AVOID/NEUTRAL/GOOD/EXCELLENT) + blocking factors + supporting factors.","operationId":"events_suitability_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"event","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific event: marriage, travel, griha_pravesh, mundan, vehicle_purchase, land_purchase, business_start, education_start","title":"Event"},"description":"Specific event: marriage, travel, griha_pravesh, mundan, vehicle_purchase, land_purchase, business_start, education_start"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"description":"`region` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/events/find-dates":{"get":{"tags":["Events"],"summary":"Find auspicious dates for event","description":"Find auspicious dates for a specific event. Alias for /v1/muhurat/find.","operationId":"events_find_dates_get","parameters":[{"name":"event","in":"query","required":true,"schema":{"type":"string","title":"Event"},"description":"`event` parameter."},{"name":"start","in":"query","required":true,"schema":{"type":"string","title":"Start"},"description":"`start` parameter."},{"name":"end","in":"query","required":true,"schema":{"type":"string","title":"End"},"description":"`end` parameter."},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."},{"name":"min_rating","in":"query","required":false,"schema":{"type":"string","default":"GOOD","title":"Min Rating"},"description":"`min_rating` parameter."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/i18n/languages":{"get":{"tags":["i18n"],"summary":"Get supported languages","description":"Get list of all supported languages (50+).","operationId":"i18n_languages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/i18n/strings":{"get":{"tags":["i18n"],"summary":"Get transliteration strings","description":"Get transliteration strings for a category and language.","operationId":"i18n_strings_get","parameters":[{"name":"category","in":"query","required":true,"schema":{"type":"string","description":"Category: TITHI, NAKSHATRA, YOGA, KARANA, WEEKDAY, MONTH, FESTIVAL","title":"Category"},"description":"Category: TITHI, NAKSHATRA, YOGA, KARANA, WEEKDAY, MONTH, FESTIVAL"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/locations":{"get":{"tags":["Locations"],"summary":"Get predefined locations","description":"Get list of predefined locations with coordinates.","operationId":"locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/locations/{location_id}":{"get":{"tags":["Locations"],"summary":"Get location details","description":"Get details for a specific location.","operationId":"locations_get_by_location_id","parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"},"description":"Supported location id. Takes precedence over `lat`/`lon`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/bulk/panchang":{"post":{"tags":["Bulk APIs"],"summary":"Bulk Panchang request","description":"Bulk Panchang request for multiple dates.\n\n**Note:** This is a premium endpoint. Rate limited based on plan.","operationId":"panchang_bulk","parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`x-api-key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkPanchangRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/bulk/festivals":{"post":{"tags":["Bulk APIs"],"summary":"Bulk festivals request","description":"Bulk festivals request for date range.\n\n**Note:** This is a premium endpoint.","operationId":"festivals_bulk","parameters":[{"name":"x-api-key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`x-api-key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkFestivalsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/day-context":{"get":{"tags":["Aggregated"],"summary":"Complete daily spiritual context (panchang + festivals + conditions + eclipse)","description":"**Flagship aggregator endpoint.** Returns complete daily spiritual intelligence\nin a single B2B call:\n\n- `panchang`     → core 5 limbs + hindu calendar identity (from /v1/panchang)\n- `festivals`    → stored + rule-derived festivals (from /v1/festivals)\n- `conditions`   → panchak, bhadra, ganda_mool (from engine raw data)\n- `astronomical` → eclipse on this date if any (from DB)\n\n**Use this instead of stitching together /v1/panchang + /v1/festivals +\n/v1/panchak + /v1/eclipse on the client side.**\n\nAll sub-blocks are computed in-process via the same engine the individual\nendpoints use — there is no logic duplication and no internal HTTP overhead.\nAny sub-block that cannot be computed returns `null` rather than raising.\n\n**Caching:** results are cached in Redis (or in-memory fallback) for 6 hours\nkeyed on (date, lat, lon, location_id, lang, region). The cached payload is\nindistinguishable from a fresh one except for the `_cache` field, which\nindicates `hit` vs `miss`. Cache TTL is short enough that intra-day data\n(next_transitions, current Lagna, etc. — surfaced via /v1/panchang/now and\n/v1/lagna respectively) are unaffected because those endpoints don't go\nthrough this aggregator.","operationId":"day_context_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD","example":"2026-04-11"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90.0,"minimum":-90.0,"description":"Latitude","title":"Lat"},"description":"Latitude","example":28.6139},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180.0,"minimum":-180.0,"description":"Longitude","title":"Lon"},"description":"Longitude","example":77.209},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","description":"Predefined location ID for stored panchang/festivals","default":2,"title":"Location Id"},"description":"Predefined location ID for stored panchang/festivals"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Region override (auto-detected if omitted)","title":"Region"},"description":"Region override (auto-detected if omitted)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/day-context/range":{"get":{"tags":["Aggregated"],"summary":"Bulk day-context for date range (up to 62 days per call)","description":"**Bulk endpoint for calendar grids / monthly views / annual sync jobs.**\n\nAccepts a date range (up to 62 days per call) and returns an array of\nday_context payloads — avoids the 60 req/min rate limit when syncing\nfull months or years.\n\n**Usage patterns:**\n- Mobile monthly calendar:     1 call per month × 7 regions = 7 calls/year\n- Annual sync (single region): 12 calls (one per month)\n- Annual sync (all regions):   84 calls (vs ~2,555 with daily endpoint)\n\n**Region parameter:**\nIf `region=NORTH_INDIA` is passed, canonical coords are auto-resolved.\nIf `region` is omitted, `lat` + `lon` are required.\n\n**Response shape:**\n```json\n{\n  \"from\": \"2026-04-01\", \"to\": \"2026-04-30\",\n  \"region\": \"NORTH_INDIA\", \"count\": 30,\n  \"days\": [ {\"date\": \"2026-04-01\", ...full day_context...}, ... ]\n}\n```","operationId":"day_context_range_get","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","description":"Start date YYYY-MM-DD","title":"From"},"description":"Start date YYYY-MM-DD","example":"2026-04-01"},{"name":"to","in":"query","required":true,"schema":{"type":"string","description":"End date YYYY-MM-DD (inclusive). Max 62 days from start.","title":"To"},"description":"End date YYYY-MM-DD (inclusive). Max 62 days from start.","example":"2026-04-30"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Region enum (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA). If provided, canonical coords are used.","title":"Region"},"description":"Region enum (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA). If provided, canonical coords are used."},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"description":"Latitude (required if region not provided)","title":"Lat"},"description":"Latitude (required if region not provided)"},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"description":"Longitude (required if region not provided)","title":"Lon"},"description":"Longitude (required if region not provided)"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","description":"Predefined location ID","default":2,"title":"Location Id"},"description":"Predefined location ID"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/isht-devta":{"post":{"tags":["Astrology"],"summary":"Personalised Isht Devta recommendation","description":"Returns a personalised Isht Devta recommendation based on the caller's\nbirth data, computed via the existing Vedic astrology engine.\n\n**Derivation rule (deterministic + explainable):**\n1. Compute the natal chart using the production astrology engine.\n2. Identify three planetary lords: `lagna_lord`, `moon_sign_lord`,\n   `nakshatra_lord` (lord of Janma Nakshatra in Vimshottari sequence).\n3. Confidence:\n   - `high`   → all three lords are the same planet\n   - `medium` → exactly two lords agree\n   - `low`    → all three differ (we then fall back to the Janma\n     Nakshatra deity as the primary signal)\n4. Map the dominant planet to its presiding Isht Devta.\n5. Return the supporting factors (nakshatra deity, rashi, lagna) so the\n   recommendation is fully explainable to the end user.\n\nThis endpoint is intentionally NOT mixed into the Panchang APIs because\nit requires personal birth data.","operationId":"isht_devta_create","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IshtDevtaRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/panchang/range":{"get":{"summary":"Get Panchang Range Endpoint","description":"Get panchang data for a date range.","operationId":"panchang_get_range","parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"string","description":"Start date YYYY-MM-DD","title":"Start"},"description":"Start date YYYY-MM-DD"},{"name":"end","in":"query","required":true,"schema":{"type":"string","description":"End date YYYY-MM-DD","title":"End"},"description":"End date YYYY-MM-DD"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"Latitude","default":23.1765,"title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"Longitude","default":75.7885,"title":"Lon"},"description":"Longitude"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Core Panchang"]}},"/v1/inauspicious":{"get":{"summary":"Get Inauspicious","description":"Get inauspicious timings (Rahu Kaal, Yamagandam, Gulika Kaal, Durmuhurta, Varjyam).","operationId":"inauspicious_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Timings"]}},"/v1/vrat":{"get":{"summary":"Get Vrat Endpoint","description":"Get vrat/fasting information for a date.","operationId":"vrat_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"location_id","in":"query","required":false,"schema":{"type":"integer","description":"Location ID","default":2,"title":"Location Id"},"description":"Location ID"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language code","default":"en","title":"Lang"},"description":"Language code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Festivals"]}},"/v1/hindu-month":{"get":{"summary":"Get Hindu Month","description":"Get Hindu month information (Amanta, Purnimanta, Saura Maasa).","operationId":"hindu_month_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"Latitude","default":23.1765,"title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"Longitude","default":75.7885,"title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Calendar"]}},"/v1/ritu":{"get":{"summary":"Get Ritu","description":"Get Ritu (Hindu season) for a date.","operationId":"ritu_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"Latitude","default":23.1765,"title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"Longitude","default":75.7885,"title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Calendar"]}},"/v1/samvatsara":{"get":{"summary":"Get Samvatsara","description":"Get Samvatsara (Hindu year name) and year details.","operationId":"samvatsara_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"Latitude","default":23.1765,"title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"Longitude","default":75.7885,"title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Calendar"]}},"/v1/sun":{"get":{"summary":"Get Sun Data","description":"Get sun position and timing data.","operationId":"sun_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Astronomical"]}},"/v1/special-yogas":{"get":{"summary":"Get Special Yogas Endpoint","description":"Get special yogas (Sarvartha Siddhi, Amrita Siddhi, Dwipushkar, Tripushkar).","operationId":"special_yogas_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date YYYY-MM-DD","title":"Date"},"description":"Date YYYY-MM-DD"},{"name":"lat","in":"query","required":false,"schema":{"type":"number","description":"Latitude","default":23.1765,"title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":false,"schema":{"type":"number","description":"Longitude","default":75.7885,"title":"Lon"},"description":"Longitude"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"tags":["Calculators"]}},"/v1/demo/panchang":{"get":{"tags":["Demo"],"summary":"Demo: Panchang (no auth)","description":"Public demo — real Panchang for Delhi.","operationId":"demo_panchang_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Demo rate limit exceeded. Retry after 60 seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/demo/festivals":{"get":{"tags":["Demo"],"summary":"Demo: Festivals (no auth)","description":"Public demo — real festivals for Delhi.","operationId":"demo_festivals_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Demo rate limit exceeded. Retry after 60 seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/demo/muhurat":{"get":{"tags":["Demo"],"summary":"Demo: Muhurat (no auth)","description":"Public demo — real Muhurat for Ujjain.","operationId":"demo_muhurat_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."},{"name":"lang","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Lang"},"description":"ISO language code for transliterated names. Defaults to English."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Demo rate limit exceeded. Retry after 60 seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/demo/festivals/explain":{"get":{"tags":["Demo"],"summary":"Demo: Festival explainability (no auth)","description":"Public demo — Festival Engine V2 explainability for Delhi (no key required).","operationId":"demo_festivals_explain_get","parameters":[{"name":"festival","in":"query","required":true,"schema":{"type":"string","title":"Festival"},"description":"Festival key, for example `FESTIVAL_DIWALI`."},{"name":"date","in":"query","required":true,"schema":{"type":"string","title":"Date"},"description":"Target date in YYYY-MM-DD."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Demo rate limit exceeded. Retry after 60 seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[]}},"/v1/kundli/premium-report":{"post":{"tags":["Astrology"],"summary":"Generate premium 60+ page Kundli PDF report","description":"Generate a comprehensive 60+ page Vedic Birth Chart (Kundli) PDF report.\n\nIncludes: Personality analysis, Rashi chart, 9 planets detailed analysis,\n12 house analysis, Vimshottari Dasha with Antardasha, Classical Yogas,\nLife Journey narrative, Hidden Truths, Career/Marriage/Finance insights,\nShadbala strength, Dosha analysis, 10-year predictions, Remedies.\n\nReturns: PDF download URL + JSON summary","operationId":"kundli_premium_report_create","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"},"description":"`X-API-Key` parameter."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KundliRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/kundli/teaser":{"get":{"tags":["Astrology"],"summary":"Free Kundli teaser (preview before purchase)","description":"Free teaser preview of the Kundli report.\nReturns: Lagna, Moon sign, 2 key insights.\nFull report requires premium API key.","operationId":"kundli_teaser_get","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","description":"Date of birth YYYY-MM-DD","title":"Date"},"description":"Date of birth YYYY-MM-DD"},{"name":"time","in":"query","required":true,"schema":{"type":"string","description":"Time of birth HH:MM","title":"Time"},"description":"Time of birth HH:MM"},{"name":"lat","in":"query","required":true,"schema":{"type":"number","description":"Latitude","title":"Lat"},"description":"Latitude"},{"name":"lon","in":"query","required":true,"schema":{"type":"number","description":"Longitude","title":"Lon"},"description":"Longitude"},{"name":"name","in":"query","required":false,"schema":{"type":"string","description":"Name (optional)","default":"","title":"Name"},"description":"Name (optional)"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","description":"Language: en or hi","default":"en","title":"Lang"},"description":"Language: en or hi"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"400":{"description":"Malformed request. The body names the offending field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid X-API-Key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Endpoint is not included in your plan. Upgrade or use a documented alternative.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded for your plan period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"BirthData":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"date_of_birth":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","title":"Date Of Birth","description":"YYYY-MM-DD"},"time_of_birth":{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$","title":"Time Of Birth","description":"HH:MM or HH:MM:SS"},"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"},"timezone":{"type":"string","title":"Timezone","description":"IANA timezone","default":"Asia/Kolkata"},"gender":{"anyOf":[{"type":"string","pattern":"^(male|female|other)$"},{"type":"null"}],"title":"Gender"},"place_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Place Name"}},"type":"object","required":["name","date_of_birth","time_of_birth","latitude","longitude"],"title":"BirthData"},"BulkFestivalsRequest":{"properties":{"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id","default":1},"lang":{"type":"string","title":"Lang","default":"en"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","required":["start_date","end_date"],"title":"BulkFestivalsRequest","description":"Request model for bulk festivals API."},"BulkPanchangRequest":{"properties":{"dates":{"items":{"type":"string"},"type":"array","title":"Dates"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id","default":1},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"lang":{"type":"string","title":"Lang","default":"en"},"include":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"}},"type":"object","required":["dates"],"title":"BulkPanchangRequest","description":"Request model for bulk panchang API."},"CompatibilityRequest":{"properties":{"person_a":{"$ref":"#/components/schemas/BirthData"},"person_b":{"$ref":"#/components/schemas/BirthData"}},"type":"object","required":["person_a","person_b"],"title":"CompatibilityRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IshtDevtaLocation":{"properties":{"lat":{"type":"number","title":"Lat"},"lon":{"type":"number","title":"Lon"}},"type":"object","required":["lat","lon"],"title":"IshtDevtaLocation"},"IshtDevtaRequest":{"properties":{"date_of_birth":{"type":"string","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth"},"location":{"$ref":"#/components/schemas/IshtDevtaLocation"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","default":"Asia/Kolkata"}},"type":"object","required":["date_of_birth","time_of_birth","location"],"title":"IshtDevtaRequest"},"KundliRequest":{"properties":{"name":{"type":"string","title":"Name","default":""},"date_of_birth":{"type":"string","title":"Date Of Birth"},"time_of_birth":{"type":"string","title":"Time Of Birth"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"lang":{"type":"string","title":"Lang","default":"en"}},"type":"object","required":["date_of_birth","time_of_birth","latitude","longitude"],"title":"KundliRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ErrorResponse":{"type":"object","title":"ErrorResponse","properties":{"error":{"type":"string","description":"Machine-readable error code."},"detail":{"type":"string","description":"Human-readable explanation."},"code":{"type":"string","description":"Sub-code where one applies."},"docs":{"type":"string","format":"uri","description":"Link to relevant documentation."}},"required":["error"]}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key issued from the dashboard. Send it on every request. Endpoints outside your plan return 402, not 403 — the request was understood, the plan does not include it."}}},"servers":[{"url":"https://api.tathaastuapi.com","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Aggregated","description":"Composite responses combining several surfaces."},{"name":"Astrology","description":"Birth chart, compatibility and kundli reports."},{"name":"Astronomical","description":"Swiss Ephemeris positions, sankranti and moon phase."},{"name":"Bulk APIs","description":"Batch endpoints for precomputation."},{"name":"Calculators","description":"Standalone computations over panchang elements."},{"name":"Calendar","description":"Month, year and range views shaped for calendar UIs."},{"name":"Core Panchang","description":"Tithi, nakshatra, yoga, karana and vara with real interval boundaries."},{"name":"Demo","description":"Unauthenticated demo tier. Rate limited and fixed to a default location."},{"name":"Eclipses","description":"Solar and lunar eclipse circumstances and local visibility."},{"name":"Events","description":"Date suitability search for planning."},{"name":"Festivals","description":"Festival derivation with confidence, rule provenance and explainability."},{"name":"Locations","description":"Supported locations and coordinate resolution."},{"name":"Muhurat","description":"Auspicious windows derived from local day length."},{"name":"Shastric","description":"Rule conditions and shastric metadata."},{"name":"Special Conditions","description":"Panchak, bhadra, ganda mool and related conditions."},{"name":"System","description":"Health, status and service metadata."},{"name":"Timings","description":"Rahu kaal, yamagandam, gulika, choghadiya and hora."},{"name":"World Festivals","description":"Multi-religion observances for general-audience calendars."},{"name":"i18n","description":"Language coverage and transliteration strings."},{"name":"Pricing"}]}