Documentation
🔑 Dashboard Get API Key →
TathaAstu Panchang API · v1 · Engine 7.8.1

The World's Most Comprehensive
Hindu Panchang API

1,400 years of astronomical data (1700–3100), complete Shastric guidance engine, real-time festival derivation, and a p95 of ~42 ms on Panchang — powered by Swiss Ephemeris & Lahiri ayanamsa.

Base URL https://api.tathaastuapi.com/v1
🔬
Swiss Ephemeris Accuracy
Lahiri (Chitrapaksha) ayanamsa. Real astronomical precision, not approximations.
📅
1,400 Years Coverage
1700–3100. Historical research and 1,000-year future planning in one API.
🗺
Worldwide, timezone-aware
Send lat/lon and the IANA timezone is resolved from the coordinates, with daylight saving applied — Europe/Paris, America/New_York, Australia/Sydney. Pass tz to name it yourself. No client-side conversion.
🌍
50+ Languages
Phonetic transliteration — not translation. "एकादशी" sounds the same in every script.
📖
Full Shastric Engine
Dharma Sindhu & Nirnaya Sindhu rules. Panchak, Bhadra, Disha Shool, Special Yogas.
Measured Response Times
p95 ~42 ms for Panchang, ~238 ms for festival explain; engine-side lookup 2.4 ms. Redis-cached DB with live engine fallback.
🔐
Enterprise Security
API key middleware, domain-locked CORS, rate limiting, 99.9% SLA.
New Here?

Start Here

Build your first feature in 5 minutes. Follow this simple flow.

🔑
1. Get API Key
Create a free account at the Dashboard
📊
2. Get Score
Call /v1/compatibility/score
📋
3. Get Insights
Call /v1/compatibility/report
📄
4. Generate PDF
Call /v1/kundli/premium-report
Flow: /score /report /pdf
cURL — Try it now
# Get a compatibility score in one call
curl "https://api.tathaastuapi.com/v1/compatibility/score?bride_dob=1992-07-18&bride_time=10:30&bride_lat=28.6139&bride_lon=77.2090&groom_dob=1989-11-25&groom_time=16:45&groom_lat=19.0760&groom_lon=72.8777" \
  -H "X-API-Key: YOUR_API_KEY"
Bonus: Explainable Festival EngineUse /v1/festivals/explain to see exactly why a festival falls on a given date. No other Panchang API does this. Try it below ↓
Build With TathaAstu

Popular Use Cases

💑
Marriage Matching Platform
Ashtakoot Guna Milan scoring, Manglik analysis, and full compatibility reports for matrimonial apps.
📅
Daily Panchang App
Tithi, nakshatra, festivals, muhurat, and auspicious timings for calendar and reminder apps.
🔮
Astrology SaaS
Birth charts, yogas, dasha predictions, and PDF report generation for professional astrologers.
🕉️
Temple & Pooja Apps
Vrat dates, muhurat windows, and shastric conditions for devotional and ritual planning apps.
🌍
Multi-Faith Calendar
Hindu, Islamic, Christian, Jewish, Sikh, and Orthodox festivals in one API. 1,400 years of data.
📰
News & Media Widgets
Embed daily panchang, upcoming festivals, and eclipse alerts on websites and newsletters.
🚀
Sample Apps on GitHubWorking demo apps built with TathaAstu API: React (Compatibility Matcher) · Flutter (Daily Panchang) — Coming soon · HTML (Kundli Generator) — Coming soon
Getting Started

Authentication

Every /v1/ request requires a valid API key in the header. Public endpoints (/v1/status, /v1/health) are exempt.

🔑
Get Your Free API KeySign up at tathaastuapi.com/dashboard — Free tier includes 500 requests/month. No credit card needed.
🛡️
CORS Protection ActiveAPI calls are only allowed from tathaastuapi.com domains. If you copy a URL from browser DevTools and paste it in Postman without an API key, you will receive a 401 Unauthorized. Always call from your backend server.

Header Authentication

cURL
# Using X-API-Key header (recommended)
curl "https://api.tathaastuapi.com/v1/panchang?date=2025-03-01&lat=28.6&lon=77.2" \
  -H "X-API-Key: tatha_live_xxxxxxxxxxxx"

# Error response when key is missing or invalid
{
  "error": "Unauthorized",
  "message": "Missing or invalid API key. Pass X-API-Key header.",
  "docs": "https://tathaastuapi.com/docs#authentication",
  "get_key": "https://tathaastuapi.com/#pricing"
}
Getting Started

Quick Start

First API call in under 2 minutes. Choose your language.

# Today's Panchang for Delhi
curl "https://api.tathaastuapi.com/v1/panchang?date=2025-03-01&lat=28.6139&lon=77.2090" \
  -H "X-API-Key: YOUR_API_KEY"

# With timings, hora, choghadiya in one call
curl "https://api.tathaastuapi.com/v1/panchang?date=2025-03-01&lat=28.6&lon=77.2&include=timings,hora,choghadiya" \
  -H "X-API-Key: YOUR_API_KEY"

# Full shastric conditions + event ratings
curl "https://api.tathaastuapi.com/v1/shastra/conditions?date=2025-03-01&lat=28.6&lon=77.2" \
  -H "X-API-Key: YOUR_API_KEY"
import requests

API_KEY = "tatha_live_xxxxxxxxxxxx"
BASE    = "https://api.tathaastuapi.com/v1"
HDR     = {"X-API-Key": API_KEY}

# Core Panchang
r = requests.get(f"{BASE}/panchang", headers=HDR,
    params={"date":"2025-03-01","lat":28.6139,"lon":77.2090})
p = r.json()
print(p["tithi"]["name"])   # → "Ashtami"

# Event suitability for marriage
s = requests.get(f"{BASE}/events/suitability", headers=HDR,
    params={"date":"2025-03-01","lat":28.6,"lon":77.2,"event":"marriage"}).json()
print(s["rating"])   # → "AVOID" | "NEUTRAL" | "GOOD" | "EXCELLENT"
const API_KEY = 'tatha_live_xxxxxxxxxxxx';
const BASE    = 'https://api.tathaastuapi.com/v1';
const HDR     = { 'X-API-Key': API_KEY };

async function getPanchang(date, lat, lon) {
  const r = await fetch(
    `${BASE}/panchang?date=${date}&lat=${lat}&lon=${lon}`,
    { headers: HDR }
  );
  return r.json();
}

// Always call from server-side to protect your API key
const p = await getPanchang('2025-03-01', 27.7172, 85.3240);
console.log(p.tithi.name);    // → "Chaturdashi"
console.log(p.engine.version); // → "7.8.1"
<?php
define('API_KEY', 'tatha_live_xxxxxxxxxxxx');
define('BASE',    'https://api.tathaastuapi.com/v1');

function tathaApi($path) {
  $ctx = stream_context_create(['http' => [
    'header' => 'X-API-Key: ' . API_KEY
  ]]);
  return json_decode(
    file_get_contents(BASE . $path, false, $ctx), true
  );
}

$p = tathaApi('/panchang?date=2025-03-01&lat=28.6&lon=77.2');
echo $p['tithi']['name']; // → "Chaturdashi"

Example Response — /v1/panchang

JSON · 200 OK
{
  "date": "2025-02-21",
  "vara": { "name": "Friday", "name_sa": "Shukravāra", "lord": "Venus" },
  "tithi": {
    "number": 8, "name": "Ashtami", "paksha": "Krishna",
    "period": { "start": "2025-02-20 10:13", "end": "2025-02-21 12:13" }
  },
  "nakshatra": { "number": 17, "name": "Anuradha", "deity": "Mitra", "gana": "Deva" },
  "yoga": { "number": 13, "name": "Vyaghata" },
  "karana": { "number": 46, "name": "Garija", "auspicious": true },
  "hindu_calendar": { "amanta": "Magha", "purnimanta": "Phalguna", "samvat": 2081 },
  "timings": {
    "sunrise": "06:52:14", "sunset": "18:23:11",
    "moonrise": "02:14:00", "moonset": "13:44:00"
  },
  "engine": {
    "name": "TathaAstu Panchang", "version": "7.8.1",
    "calculation": "Drik", "ayanamsa": "Lahiri (Chitrapaksha)"
  }
}
Core APIs

Panchang Endpoints FREE TIER

The five limbs of Panchang — Vara, Tithi, Nakshatra, Yoga, Karana — plus Hindu calendar identity, special day flags, and engine attribution on every response.

GET/v1/panchangFreeFull Panchang for any date

Supports the 1700–3100 date range. Works anywhere in the world: the timezone is resolved from lat/lon and daylight saving is applied, so coordinates alone are enough. Pass tz to name the zone yourself. A named location_id reads that location’s precomputed row and wins over coordinates; coordinates alone are computed for those coordinates. Every response reports the zone it used and the engine version.

ParameterTypeRequiredDescription
datestringRequiredDate in YYYY-MM-DD format
latfloatOptionalLatitude
lonfloatOptionalLongitude
location_idintegerOptionalPredefined location ID (defaults to 2 when neither location_id nor region is given)
langstringOptionalLanguage code
regionstringOptionalCanonical region (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA) or a supported ISO 3166-2 state code (e.g. IN-MH). Selects that region's canonical location when location_id is omitted. Unsupported values return 422.
includestringOptionalComma-separated: tithi,nakshatra,yoga,karana,hora,choghadiya,festivals,muhurat,eclipse
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Optional: derived from lat/lon when omitted, then the region default.
GET/v1/panchang/todayFreeCurrent day

Returns Panchang for today (server time, IST). Accepts all optional params except date.

GET/v1/panchang/tomorrowFreeNext day preview

Returns Panchang for tomorrow. Useful for apps that show a next-day preview widget.

GET/v1/panchang/fullProComplete data — all sections

Returns every available section in one response: core panchang, timings, hora, choghadiya, astronomical, shastric conditions, event suitability, festivals, panchak, bhadra, disha shool, special yogas.

Now includes: top-level conditions block (Panchak, Bhadra, Ganda Mool) and astronomical.eclipse block. These are new optional fields — the legacy data block is unchanged. Any sub-block returns null if data is unavailable for that date.
GET/v1/tithiFreeTithi details only

Returns Tithi number, name, paksha (Shukla/Krishna), nature (Nanda/Bhadra/Jaya/Rikta/Purna), start/end times.

GET/v1/nakshatraFreeNakshatra details only

Returns Nakshatra number, name, pada (quarter), deity, gana (Deva/Manushya/Rakshasa), nature, ruling planet, period times.

GET/v1/panchang/liteFreeLightweight Panchang (< 1KB)

Lightweight Panchang for mobile apps. Returns only essential data: date, tithi, nakshatra, sunrise, sunset, paksha. Response size < 1KB. For full data use /v1/panchang.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude
lonfloatOptionalLongitude
location_idintegerOptionalLocation ID. Defaults to 2 when neither location_id nor lat/lon is given; supplying lat/lon instead computes for those coordinates.
langstringOptionalLanguage code
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Optional: derived from lat/lon when omitted, then the region default.
GET/v1/panchang/nowFreeGet current Panchang with live timings

Get Panchang for current moment with live running tithi/nakshatra info. Shows what's active RIGHT NOW.

ParameterTypeRequiredDescription
latfloatOptionalLatitude in decimal degrees. Provide with lon, or use location_id.
lonfloatOptionalLongitude in decimal degrees. Provide with lat, or use location_id.
location_idintegerOptionalNamed dataset location. Omit it and lat/lon decide the location; omit both and the historical default (1) applies.
langstringOptionalISO language code for transliterated names. Defaults to English.
tzstringOptionalIANA timezone deciding which day "today" is, e.g. America/New_York. Omitted = the API server's date, which is a different day from yours for part of every day.
GET/v1/panchang/rangeStarterGet Panchang Range Endpoint

Panchang for each date from start to end inclusive (end - start <= 30 days, i.e. at most 31 dates). Requires the Starter plan; single dates are available on Free from /v1/panchang. Location: location_id > lat/lon > region's canonical location > Ujjain (the historical default).

ParameterTypeRequiredDescription
startstringRequiredStart date YYYY-MM-DD
endstringRequiredEnd date YYYY-MM-DD
latfloatOptionalLatitude. With lon, used when location_id is not given.
lonfloatOptionalLongitude. Required together with lat.
location_idintegerOptionalPredefined location ID; takes precedence over lat/lon.
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); its canonical location is used when neither location_id nor lat/lon is given. An unsupported value is ignored.
langstringOptionalLanguage code
GET/v1/panchang/yesterdayFreeGet yesterday's Panchang

Get Panchang for yesterday.

ParameterTypeRequiredDescription
latfloatOptionalLatitude in decimal degrees. Provide with lon, or use location_id.
lonfloatOptionalLongitude in decimal degrees. Provide with lat, or use location_id.
location_idintegerOptionalNamed dataset location. Omit it and lat/lon decide the location; omit both and the historical default (1) applies.
langstringOptionalISO language code for transliterated names. Defaults to English.
includestringOptionalinclude parameter.
tzstringOptionalIANA timezone deciding which day "today" is, e.g. America/New_York. Omitted = the API server's date, which is a different day from yours for part of every day.
GET/v1/todayFreeToday's complete Panchang + festivals + timings

Killer endpoint: Returns today's complete Panchang data in a single call. Includes: panchang, festivals, muhurat, rahukaal, moon phase — everything. Optimized for mobile apps and dashboard widgets.

ParameterTypeRequiredDescription
latfloatOptionalLatitude. With lon it selects the location when location_id is omitted.
lonfloatOptionalLongitude.
location_idintegerOptionalNamed dataset location. Omit it and lat/lon decide; omit both and the historical default (2) applies.
langstringOptionalLanguage code
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Optional: derived from lat/lon when omitted, then the region default.
Core APIs

All-Timings Endpoint FREE TIER

All auspicious and inauspicious windows for a date in one call — sunrise/sunset, all malefic periods, muhurtas, and moon times.

GET/v1/timingsFreeComplete timing overview

Returns: 🌅 Sunrise/Sunset · 🌙 Moonrise/Moonset · 🔴 Rahu Kaal · ⚫ Yamagandam · 🟠 Gulika Kaal · ⭐ Brahma Muhurta · ✨ Abhijit Muhurat · 💫 Amrit Kaal · ❌ Durmuhurta (×2) · 🚫 Varjyam.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude (or pass region)
lonfloatOptionalLongitude (or pass region)
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); fills coords when lat/lon omitted. Unsupported values return 422.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit to use the region default (+05:30 / +05:45).
GET/v1/inauspiciousFreeGet Inauspicious

Get inauspicious timings (Rahu Kaal, Yamagandam, Gulika Kaal, Durmuhurta, Varjyam).

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatRequiredLatitude
lonfloatRequiredLongitude
Timings — Pro Tier

Hora & Choghadiya

Planetary hours and auspicious/inauspicious day segments. Durations dynamically computed from actual sunrise/sunset — never hardcoded to 60 minutes.

GET/v1/horaPro24 planetary hour periods

24 Hora periods from sunrise to next sunrise. Each ruled by a planet (Sun→Venus→Mercury→Moon→Saturn→Jupiter→Mars). Duration = (next_sunrise − today_sunrise) / 24. Nepal uses +05:45 correctly.

💡
Best Activities by Hora PlanetSun: authority, government. Moon: travel, emotions. Mars: courage, surgery. Mercury: business, communication. Jupiter: education, wealth. Venus: arts, marriage. Saturn: research, agriculture.
GET/v1/choghadiyaPro16 choghadiya periods (8 day + 8 night)

North/West Indian tradition. 8 day slots from sunrise→sunset and 8 night slots from sunset→sunrise. Each ~1.5 hours (dynamically computed), rated: Amrit ✅ · Shubh ✅ · Labh ✅ · Char ⚠️ · Rog ❌ · Kaal ❌ · Udveg ❌.

GET/v1/rahukaalFreeRahu Kaal timing

Inauspicious 1.5-hour window. Varies by weekday — computed from actual sunrise, not fixed times.

GET/v1/yamagandaFreeYamagandam timing

Another inauspicious daily period. Avoid new ventures during Yamagandam.

GET/v1/gulikaalFreeGulika Kaal timing

Third inauspicious daily window in the Vedic timekeeping system.

GET/v1/abhijitFreeMost auspicious muhurat of the day

Abhijit Muhurat — near solar noon, ~48 minutes. Most universally auspicious window. Not applicable on Wednesdays by traditional rule.

Astronomical — Pro Tier

Astronomical Data

Sun/moon positions, zodiac, sankranti, moon phase and lagna — all computed via Swiss Ephemeris with Lahiri ayanamsa.

GET/v1/astronomicalProSun, moon, planets, sankranti

Sun longitude/rashi, Moon longitude/rashi/nakshatra, sankranti day flag, amavasya/purnima flags, planetary positions.

GET/v1/moon-phaseProMoon phase, illumination, paksha

Returns phase name (Waxing Crescent/Gibbous/Full/Waning etc.), illumination percentage, paksha (Shukla/Krishna), days to next full/new moon.

GET/v1/lagnaProCurrent & udaya lagna (ascendant)

Lagna (ascendant) changes every ~2 hours. Returns current lagna rashi + udaya lagna (fixed at sunrise). For real-time widgets, refresh every 5 minutes.

⚠️
Location-sensitiveLagna is highly dependent on both date AND exact location. A few degrees of latitude/longitude can shift the lagna sign.
GET/v1/sunFreeGet Sun Data

Get sun position and timing data.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatRequiredLatitude
lonfloatRequiredLongitude
🧠 Aggregated APIs — Spiritual Intelligence Layer

Unified Daily Context FLAGSHIP

A single B2B call returns the complete daily spiritual context — Panchang, festivals, shastric conditions, and eclipses. Built for clients who want one endpoint instead of stitching together /v1/panchang + /v1/festivals + /v1/panchak + /v1/eclipse.

📖 When to use which API

Pick the right endpoint for the job

Use CaseEndpointWhy
Show event listings
festivals, vrats, observances
/v1/festivals Stored + rule-derived festivals only. Does NOT include Panchak/Bhadra/Ganda Mool.
Show calendar data
tithi, nakshatra, yoga, karana, hindu month
/v1/panchang Core 5 limbs + hindu calendar identity. Optimised for daily widgets.
Show complete daily insights
⭐ RECOMMENDED for B2B
/v1/day-context Panchang + festivals + conditions (panchak/bhadra/ganda_mool) + eclipse — in one call. Cached 6h.
Personalised astrology
isht devta, kundli, compatibility
/v1/isht-devta
/v1/birth-chart
/v1/compatibility
Requires birth data. Deterministic, explainable. Premium tier.
Find auspicious timings
muhurat, hora, choghadiya
/v1/timings
/v1/muhurat/find
Sunrise/sunset + Rahu Kaal + Brahma Muhurta + Abhijit + scan-by-event muhurat finder.
Shastric deep dive
enterprise temple kiosks, exports
/v1/panchang/full
/v1/shastra/conditions
Heavy. Every section of the engine in one response. NOT for mobile apps.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit it and the zone is resolved from lat/lon, with daylight saving applied. Abbreviations such as IST, EST and PST are rejected. The zone used is reported back in location.timezone.
Rule of thumb: If you're building a daily-spiritual-context UI, default to /v1/day-context. Drop down to individual endpoints only when you need a single specific signal (e.g. just /v1/rahukaal for a notification).
📌
IMPORTANT NOTE — Panchak, Bhadra, and Ganda Mool are NOT festivals.They are shastric day-conditions and will NOT appear in /v1/festivals responses. To surface them in your app alongside festivals, use /v1/day-context — it returns festivals AND conditions in one unified payload.
GET/v1/day-contextProComplete daily spiritual context (one call)

Returns complete daily spiritual intelligence in a single response: panchang (5 limbs + hindu calendar), festivals (stored + rule-derived), conditions (panchak, bhadra, ganda_mool), and astronomical.eclipse. Internally calls the same engine functions as the individual endpoints — no logic duplication, no extra HTTP overhead. Any sub-block that cannot be computed returns null instead of failing.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatRequiredLatitude
lonfloatRequiredLongitude
location_idintegerOptionalPredefined location ID for stored panchang/festivals (defaults to 2 when neither location_id nor region is given)
langstringOptionalLanguage code
regionstringOptionalCanonical region (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA) or a supported ISO 3166-2 state code (e.g. IN-MH). Selects that region's canonical location when location_id is omitted. Unsupported values return 422.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit to use the region default (+05:30 / +05:45).
curl "https://api.tathaastuapi.com/v1/day-context?date=2026-04-11&lat=28.6139&lon=77.2090" \
  -H "X-API-Key: sk_live_xxxxxxxxxxxx"
{
  "date": "2026-04-11",
  "location": { "lat": 28.6139, "lon": 77.2090, "region": "NORTH_INDIA", "location_id": 2 },
  "panchang": { /* tithi, nakshatra, yoga, karana, hindu_calendar, ... */ },
  "festivals": [ /* stored + rule-derived festivals */ ],
  "conditions": {
    "panchak":    { "is_panchak": false, "type": null, /* ... */ },
    "bhadra":     { "is_bhadra": false, /* ... */ },
    "ganda_mool": { "is_ganda_mool": false, "nakshatra_num": 12, "nakshatra_name": "Uttara Phalguni", "gana": "Manushya" }
  },
  "astronomical": {
    "eclipse": null
  },
  "_note": "Panchak, Bhadra, and Ganda Mool are NOT festivals. They are shastric conditions surfaced separately from /v1/festivals."
}
💡
This is the recommended primary B2B endpoint.One call → complete daily spiritual context. Use this instead of stitching together 4 separate endpoint calls on the client side.
Cached 6 hoursResults are cached server-side (Redis with in-memory fallback) keyed on (date, lat, lon, location_id, lang, region). Lat/lon are rounded to 4 decimals (~11m precision). Each response includes a _cache field set to "hit" or "miss" for observability. Cache failures never break the request — the endpoint always falls through to live computation.
POST/v1/isht-devtaProPersonalised Isht Devta recommendation

Returns a personalised Isht Devta recommendation based on the caller's birth data, computed via the production Vedic astrology engine. Deterministic and explainable — no hardcoded charts.

🔮
How the recommendation is derived1. Compute the natal chart using the existing astrology engine (Lahiri ayanamsa). 2. Identify three planetary lords: lagna_lord, moon_sign_lord, nakshatra_lord. 3. Confidence: high if all 3 agree, medium if 2 agree, low otherwise. 4. Map dominant planet → presiding deity. 5. Surface supporting facts so the recommendation is fully explainable.

Request body:

{
  "date_of_birth": "1992-07-18",
  "time_of_birth": "10:30",
  "location": { "lat": 28.6139, "lon": 77.2090 },
  "timezone": "Asia/Kolkata"
}

Response:

{
  "isht_devta": {
    "name": "Mahalakshmi",
    "basis": "lagna_lord=Venus; moon_sign_lord=Venus; nakshatra_lord=Sun; → dominant planet: Venus",
    "confidence": "medium"
  },
  "methodology": "lagna + moon + nakshatra convergence",
  "supporting_factors": {
    "nakshatra":       "Punarvasu",
    "nakshatra_deity": "Aditi",
    "rashi":           "Taurus",
    "lagna":           "Libra",
    "lagna_lord":      "Venus",
    "moon_sign_lord":  "Venus",
    "nakshatra_lord":  "Sun",
    "dominant_planet": "Venus"
  },
  "engine": {
    "name": "TathaAstu Vedic Astrology Engine",
    "ayanamsa": "Lahiri",
    "rule": "convergence(lagna_lord, moon_sign_lord, nakshatra_lord)"
  },
  "disclaimer": "Isht Devta is a personal devotional choice. This recommendation is a deterministic computation based on classical lordships and is intended as guidance, not prescription. Consult your family guru or priest for personal sadhana decisions."
}
🔁
Low-confidence fallbackWhen the three lords do NOT converge (confidence: "low"), the response includes a note field explaining the fallback and a fallback_deity field with the classical Janma Nakshatra deity. This makes the recommendation fully transparent to your end users.
curl -X POST https://api.tathaastuapi.com/v1/isht-devta \
  -H "X-API-Key: sk_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"date_of_birth":"1992-07-18","time_of_birth":"10:30","location":{"lat":28.6139,"lon":77.2090}}'
🔒
Personal data endpoint.Requires birth date, time, and location. This endpoint is intentionally separated from the Panchang APIs because it is personalised. No birth data is stored unless the caller also uses /v1/birth-chart.
GET/v1/day-context/rangeBusinessBulk day-context for date range (up to 62 days per call)

Bulk endpoint for calendar grids / monthly views / annual sync jobs.

Accepts a date range (up to 62 days per call) and returns an array of day_context payloads — avoids the 60 req/min rate limit when syncing full months or years.

Usage patterns:

  • Mobile monthly calendar: 1 call per month × 7 regions = 7 calls/year
  • Annual sync (single region): 12 calls (one per month)
  • Annual sync (all regions): 84 calls (vs ~2,555 with daily endpoint)

Region parameter: If region=NORTH_INDIA is passed, canonical coords are auto-resolved. If region is omitted, lat + lon are required.

Response shape: ``json { "from": "2026-04-01", "to": "2026-04-30", "region": "NORTH_INDIA", "count": 30, "days": [ {"date": "2026-04-01", ...full day_context...}, ... ] } ``

ParameterTypeRequiredDescription
fromstringRequiredStart date YYYY-MM-DD
tostringRequiredEnd date YYYY-MM-DD (inclusive). Max 62 days from start.
regionstringOptionalCanonical region (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA) or a supported ISO 3166-2 state code (e.g. IN-MH). If provided, its canonical coords are used. Unsupported values return 422.
latfloatOptionalLatitude (required if region not provided)
lonfloatOptionalLongitude (required if region not provided)
location_idintegerOptionalPredefined location ID
langstringOptionalLanguage code
Festivals — Free Tier

Festivals & Vrats NEW: Explainable Engine

Festivals derived on-the-fly with full explainability — every result tells you exactly why it falls on a given date.

💡
Two TypesSTORED: fixed-date festivals (Independence Day). DERIVED: rule-based astronomical (Ekadashi, Shivaratri, Purnima, etc.). Both types include tags: FASTING, SHAIVA, VAISHNAVA, REGIONAL, NATIONAL.
GET/v1/festivalsFreeAll festivals for a date
ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
location_idintegerOptionalPredefined location ID. Defaults to 1 (New Delhi) unless region or lat/lon is given.
langstringOptionalISO language code for transliterated names. Defaults to English.
typestringOptionalFilter: VRAT, FESTIVAL, SANKRANTI
tagsstringOptionalFilter by tags: FASTING,SHAIVA,VAISHNAVA
festival_modestringOptionalstandard or drik
packstringOptionalRule pack (e.g. north_india)
observatorybooleanOptionalInclude evaluation trace per festival
latfloatOptionalLatitude. With lon (and ideally tz) the occurrence date is computed for THIS location, which can differ from India's by a day.
lonfloatOptionalLongitude. Required together with lat.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit to use the region default (+05:30 / +05:45).
regionstringOptionalRegional tradition: a canonical region (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA) or a supported ISO 3166-2 state code (e.g. IN-MH). Selects the regional festival rules; without location_id it also selects that region's canonical location. For compatibility an unsupported value is ignored and reported in _engine.region_resolution.ignored_region.
GET/v1/festivals/explainFreeWhy does this festival fall today?

Explainability endpoint — returns the exact astronomical rule that triggered a derived festival, with per-condition match details.

ParameterTypeRequiredDescription
datestringRequiredYYYY-MM-DD
festivalstringRequiredFestival key (e.g. FESTIVAL_HOLI)
location_idintegerOptionalLocation ID (default: 1)
Response Example
{
  "festival": "FESTIVAL_MAHA_SHIVARATRI",
  "date": "2026-02-16",
  "matched": true,
  "rule_code": "SHIVARATRI",
  "conditions": [
    { "field": "paksha", "expected": "KRISHNA", "actual": "KRISHNA", "matched": true },
    { "field": "tithi_num", "expected": 14, "actual": 14, "matched": true },
    { "field": "purnimanta_month", "expected": "Phalguna", "actual": "Phalguna", "matched": true }
  ],
  "human_readable": "This festival was derived because the conditions in rule 'SHIVARATRI' matched the Panchang facts for 2026-02-16."
}
Try It — Festival Explainability

See exactly why a festival falls on a given date. This is unique to TathaAstu API.

Real-time rule evaluation from Panchang data · = matched · = not matched
GET/v1/festivals/monthFreeAll festivals in a month
ParameterTypeRequiredDescription
yearintegerRequiredFour-digit year.
monthintegerRequiredMonth number, 1-12.
location_idintegerOptionalPredefined location ID. Defaults to 1 (New Delhi), or to the region's canonical location when region is given.
langstringOptionalISO language code for transliterated names. Defaults to English.
regionstringOptionalRegional tradition: canonical region or supported ISO 3166-2 state code (e.g. IN-MH); same rule as /v1/festivals. An unsupported value is ignored and reported in region_resolution.ignored_region.
GET/v1/festivals/dateFreeGet festivals for date (alias)

Alias for /v1/festivals?date=X

ParameterTypeRequiredDescription
datestringRequiredTarget date in YYYY-MM-DD.
location_idintegerOptionalPredefined location ID. Defaults to 1 (New Delhi), or to the region's canonical location when region is given.
langstringOptionalISO language code for transliterated names. Defaults to English.
regionstringOptionalRegional tradition: canonical region or supported ISO 3166-2 state code (e.g. IN-MH); same rule as /v1/festivals. An unsupported value is ignored and reported in region_resolution.ignored_region.
GET/v1/festivals/muhuratFreeFestival muhurat (auspicious window) for a festival + date + location

Auspicious muhurat window for a festival at a specific date and location.

TathaAstuAPI owns all festival / muhurat / regional computation; the consuming app renders recommended + explanation directly and implements NO religious or regional logic. The response contains everything needed to display the answer:

  • festival (id, key, name, date)
  • location (region, lat, lon, timezone_offset)
  • recommended {start, end, label} (null when unsupported / not applicable)
  • avoid [{start, end, reason, label}] (Bhadra Mukha, Rahu Kaal, ...)
  • conditions {tithi, sunrise, sunset, rahu_kaal, bhadra?, moonrise?}
  • explanation {rule, kala, reason, source}
  • verification : "verified" | "computed" | "unsupported"
  • source

verification is honest: Tier-1 festivals are source-traced ("verified"), Tier-2 are computed from the authored kala ("computed"), and unsupported festivals return recommended: null rather than a fabricated time. Times are local ISO-8601 (the location's timezone, see location.timezone_offset).

ParameterTypeRequiredDescription
festivalstringRequiredFestival slug, e.g. raksha_bandhan, diwali, janmashtami, ganesh_chaturthi, dhanteras, holika_dahan, bhai_dooj, vijayadashami, maha_shivaratri
datestringRequiredFestival date YYYY-MM-DD (the date returned by /v1/festivals for this location)
latfloatRequiredLatitude - the local astronomical context (sunrise/sunset are location-specific)
lonfloatRequiredLongitude
regionstringOptionalCanonical region (NORTH_INDIA|SOUTH_INDIA|EAST_INDIA|WEST_INDIA|NEPAL|KASHMIR|SRI_LANKA) or a supported ISO 3166-2 state code (e.g. IN-MH). Selects the regional convention/calendar; if omitted it is inferred from lat/lon. Unsupported values return 422.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit to use the region default (+05:30 / +05:45).
GET/v1/festivals/rangeFreeGet festivals in date range

Get all festivals in a date range using the rule engine.

Every day is evaluated exactly as /v1/festivals evaluates it, with the same region rule. A listed location without precomputed rows is computed from its coordinates; an unknown location_id is a 404; any other failure surfaces instead of silently dropping that day's festivals.

ParameterTypeRequiredDescription
startstringRequiredStart date
endstringRequiredEnd date
location_idintegerOptionalPredefined location ID. Defaults to 1 (New Delhi), or to the region's canonical location when region is given.
langstringOptionalISO language code for transliterated names. Defaults to English.
regionstringOptionalRegional tradition: canonical region or supported ISO 3166-2 state code (e.g. IN-MH); same rule as /v1/festivals. An unsupported value is ignored and reported in region_resolution.ignored_region.
GET/v1/festivals/yearFreeGet festivals for a year

Get all festivals for a specific year.

ParameterTypeRequiredDescription
yearintegerRequiredFour-digit year.
location_idintegerOptionalPredefined location ID. Defaults to 1 (New Delhi), or to the region's canonical location when region is given.
langstringOptionalISO language code for transliterated names. Defaults to English.
regionstringOptionalRegional tradition: canonical region or supported ISO 3166-2 state code (e.g. IN-MH); same rule as /v1/festivals. An unsupported value is ignored and reported in region_resolution.ignored_region.
GET/v1/shraddha/kalaFreeAparahna, Kutapa and the tithis present in the aparahna on one day

The śrāddha kālas of one civil day at your coordinates: aparāhṇa (4th of 5 parts of daylight), Kutapa (8th of 15 day-muhūrtas), Gāndharva and Rauhiṇa (7th and 9th), and the kālas in which pārvaṇa is forbidden — prātaḥ, saṅgava and sāyāhna (Dharmasindhu ch. 26).

tithis_in_aparahna lists every tithi present in that day's aparāhṇa with the overlap in minutes, which is what an annual (pratyābdika) śrāddha is decided on. Two tithis appear when one ends inside the aparāhṇa.

ParameterTypeRequiredDescription
datestringRequiredYYYY-MM-DD
latfloatRequiredLatitude
lonfloatRequiredLongitude
tzstringOptionalIANA timezone. Omit to resolve from the coordinates.
GET/v1/shraddha/mahalayaFreeMahalaya (Pitru) Paksha shraddha dates for a year and location

The fifteen tithis of Mahālaya Pakṣa — amānta Bhādrapada Kṛṣṇa Pratipadā to Amāvāsyā — with the civil day each tithi's śrāddha falls on at your coordinates.

The day rule is the Dharmasindhu's: pārvaṇa śrāddha "has to be of Aparaahna Praapti" — the tithi must be present in the aparāhṇa, the fourth of five equal parts of daylight (ch. 26). Every rule in the response carries its verbatim quotation, chapter and URL under sources.

Where the text does not decide, neither does the API. When a tithi is present in the aparāhṇa on two days, or on neither, observance_date is null, decision_status is REQUIRES_SOURCE_CERTIFICATION, and both candidate days are returned with their overlap in minutes. The consulted text gives no pūrva/para ruling for pārvaṇa Mahālaya, and borrowing one would put authority on a rule the source did not state.

Also returned: Kutapa muhūrta per day, Śastrahata Caturdaśī, the Bharaṇī and Maghā-Trayodaśī occasions, the stated phala of each tithi, and the Kanyā-to-Vṛścika extension window. Avidhavā Navamī and Yati Dvādaśī are reported as convention, because the consulted translation does not state them.

Because sunrise and sunset set the aparāhṇa, the result depends on where you are.

ParameterTypeRequiredDescription
yearintegerRequiredGregorian year
latfloatRequiredLatitude. The aparāhṇa needs a sunrise and sunset, so the polar circles are excluded.
lonfloatRequiredLongitude
tzstringOptionalIANA timezone, e.g. Asia/Kolkata. Omit it to resolve from the coordinates.
GET/v1/vratFreeGet Vrat Endpoint

Vrat and fasting observances for a date.

This used to read vrat_observance, joined to vrats and panchang_day_core. vrats holds 24 definitions; vrat_observance holds ZERO rows, in the active slot, the standby slot and the DB_NAME schema alike. It was never populated, so the join could not match and the endpoint returned {"vrats": [], "count": 0} for every date ever requested. July 2025 has two Ekadashis, two Pradosh, a Purnima, an Amavasya and a Sankashti; all thirty-one days came back empty, including 6 July, Devshayani Ekadashi, which /v1/festivals reported correctly as VRAT_EKADASHI on the same call.

It now resolves through canonical_festivals, like every other festival-producing endpoint. That was already the stated rule -- "one festival cannot come back on two different dates depending on which endpoint a client happened to call" -- and this endpoint was simply never brought across. Doing so also means it inherits the kala-aware rules, including the Caturthi-nirnaya fix, rather than a table nobody fills.

The {code, category, name} shape callers parsed is preserved; rule_code and confidence are added so a caller can see which rule decided the day.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
location_idintegerOptionalLocation ID
langstringOptionalLanguage code
Shastric Layer — Business

Shastric Conditions BUSINESS — Unique in Market

Your competitive differentiator. Complete classical guidance layer based on Dharma Sindhu and Nirnaya Sindhu — not available in any other Panchang API.

📜
Legal Disclaimer Included in Response"Guidance is based on classical shastric rules (Dharma Sindhu, Nirnaya Sindhu). Local custom and personal tradition may vary. Consult your family priest for ceremonies."
GET/v1/shastra/conditionsBusinessFull shastric guidance

Returns all classical conditions affecting the date:

🔴 Panchak — type, severity, avoid activities, remedies
Bhadra (Vishti) — exact timing, severity
🧭 Disha Shool — blocked direction + specific remedies
🌟 Nakshatra Shool — direction to avoid by nakshatra
Special Yogas — Sarvartha Siddhi, Amrita Siddhi, Pushkar
🌸 Tithi Nature — Nanda / Bhadra / Jaya / Rikta / Purna
🌙 Moon Nivas — Deva / Manushya / Tiryak / Rakshasa
💎 Day Attributes — color, deity, mantra, ruling planet
✂️ Traditional Restrictions — oil, haircut, nail, etc.
📋 Rule Precedence — Eclipse>Ekadashi>Amavasya>Bhadra>Panchak
ParameterTypeRequiredDescription
datestringRequiredYYYY-MM-DD
latfloatRequiredLatitude
lonfloatRequiredLongitude
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit it and the zone is resolved from lat/lon, with daylight saving applied. Abbreviations such as IST, EST and PST are rejected. The zone used is reported back in location.timezone.
Shastric Layer — Business

Event Suitability

Is today good for a wedding? Can I start a business? Should I buy land? The engine applies the full Shastric hierarchy and returns a verdict with explicit reasons and blocking/supporting factors.

GET/v1/events/suitabilityBusinessRatings for all life events

Applies hierarchy: Eclipse → Ekadashi → Amavasya → Purnima → Bhadra → Panchak → Shool → Special Yogas. Returns AVOID / NEUTRAL / GOOD / EXCELLENT rating.

Supported Event Typesmarriage · griha_pravesh · travel · mundan · vehicle_purchase · land_purchase · business_start · education_start
Omit event= to get all events at once.
Response Example
{
  "event": "marriage",
  "rating": "AVOID",
  "score": 18,
  "blocking_factors": ["Bhadra active until 15:30", "Panchak — Mritu Panchak"],
  "supporting_factors": ["Abhijit Muhurat available 11:52–12:40"],
  "hierarchy_applied": ["BHADRA", "PANCHAK"],
  "disclaimer": "Guidance is based on classical shastric rules..."
}
GET/v1/events/find-datesProFind best dates for an event

Given a date range and event type, returns only the GOOD and EXCELLENT rated dates sorted by score. Ideal for muhurat calendar builders.

Chakra Calculation APIs

Chakra Calculation APIs FREE

Kota, Saptaśalāka, Sarvatobhadra and Śūla chakras as calculation-only endpoints. Every response carries the ruleset and a verification level for each individual rule.

📥
Pre-resolved inputsThese endpoints take nakshatra values you have already resolved. They do not calculate planetary positions from birth date, time or location. Resolve positions with /v1/panchang first, then pass the nakshatra name here.
🔍
Calculation, not interpretationResponses carry "calculation_only": true. The endpoints report which nakshatras or cells are struck; they make no predictive, medical or life-event claims.
GET/v1/chakra/kotaFreeZone, entry/exit path, Svāmī and Pāla

Params: janma_nakshatra, transit_nakshatra (required); planet, transit_motion, moon_rashi, pala_variant. Zones are cross-verified across two independent sources; Kota Pāla is PROVISIONAL and the variant used is named in the response.

GET/v1/chakra/saptashalakaFreeNakshatra vedha pairing

Params: nakshatra (required), sun_nakshatra. Returns the vedha partner and line orientation. Verification: DIAGRAM_VERIFIED_SECONDARY — the 14 pairs were read from a source diagram, not a manuscript.

GET/v1/chakra/sarvatobhadraFreeThree vedha lines over the 81-cell lattice

Params: nakshatra (required), planet, motion, dignity, variant. Directions are OPPOSITE, FORWARD and BACKWARD, named by direction of travel rather than left/right, which no source fixes. Lattice and geometry are VERIFIED; consonant, vowel and tithi placement are DERIVED.

GET/v1/chakra/shoolaFreeTrident points on the 28-fold cycle

Params: reference_nakshatra (required), transit_nakshatra, variant, include_trident_parts. SUN_4POINT counts from the Sun and is the sourced reading; JANMA_3POINT is retained but unsupported. The variant used is always named in the response.

GET/v1/chakra/nakshatrasFreeAccepted 28-fold vocabulary

The 28 nakshatra names these endpoints accept, Abhijit included. Abhijit’s longitude arc is disputed between sources and is deliberately not resolved here.

Special Conditions — Pro Tier

Panchak, Bhadra & Sankranti

Granular endpoints for checking specific classical conditions.

GET/v1/panchakProPanchak status with remedies

Returns whether date falls in Panchak (5 inauspicious nakshatras: Dhanistha, Shatabhisha, Purva/Uttara Bhadrapada, Revati). Returns type (Mritu/Agni/Raja/Chora/Roga), severity, avoided activities, and specific remedies.

GET/v1/bhadraProBhadra (Vishti Karana) check

Bhadra is the most inauspicious Karana. Returns exact start/end time if active, and the activities to avoid (new business, haircut, auspicious ceremonies).

GET/v1/ganda-moolProGanda Mool nakshatra check

Checks whether the date falls in Ganda Mool nakshatras (Ashwini, Ashlesha, Magha, Jyeshtha, Mula, Revati) — considered inauspicious for birth and ceremonies.

GET/v1/sankrantiProSolar sankranti dates

Returns all 12 solar sankranti dates for a year with exact time, rashi transition, significance, and recommended observances.

Calendar — Free Tier

Calendar APIs

Bulk queries for calendar UI components — month, year, and custom ranges.

GET/v1/calendar/monthFreeFull month Panchang
ParameterTypeRequiredDescription
yearintegerRequiredYear
monthintegerRequiredMonth (1–12)
latfloatOptionalLatitude for timings
lonfloatOptionalLongitude
GET/v1/calendar/rangeStarterCustom range (max 31 days)
ParameterTypeRequiredDescription
startstringRequiredStart date YYYY-MM-DD
endstringRequiredEnd date (max 31 days from start)
GET/v1/calendar/dayFreeGet calendar day view

Get detailed calendar view for a single day.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
location_idintegerOptionalSupported location id. Takes precedence over lat/lon.
langstringOptionalISO language code for transliterated names. Defaults to English.
GET/v1/calendar/yearStarterGet calendar year view

Get Panchang summary for an entire year.

Returns monthly summaries with key dates (Ekadashi, Purnima, Amavasya) and festival_count: the number of festivals /v1/festivals/month returns for that month and location (the same engine and regional rules).

ParameterTypeRequiredDescription
yearintegerRequiredYear
location_idintegerOptionalSupported location id. Takes precedence over lat/lon.
langstringOptionalISO language code for transliterated names. Defaults to English.
GET/v1/hindu-monthFreeGet Hindu Month

Get Hindu month information (Amanta, Purnimanta, Saura Maasa).

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude. With lon, used when location_id is not given.
lonfloatOptionalLongitude. Required together with lat.
location_idintegerOptionalPredefined location ID; takes precedence over lat/lon.
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); its canonical location is used when neither location_id nor lat/lon is given. An unsupported value is ignored.
GET/v1/rituFreeGet Ritu

Get Ritu (Hindu season) for a date.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude. With lon, used when location_id is not given.
lonfloatOptionalLongitude. Required together with lat.
location_idintegerOptionalPredefined location ID; takes precedence over lat/lon.
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); its canonical location is used when neither location_id nor lat/lon is given. An unsupported value is ignored.
GET/v1/samvatsaraFreeGet Samvatsara

Get Samvatsara (Hindu year name) and year details.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude. With lon, used when location_id is not given.
lonfloatOptionalLongitude. Required together with lat.
location_idintegerOptionalPredefined location ID; takes precedence over lat/lon.
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); its canonical location is used when neither location_id nor lat/lon is given. An unsupported value is ignored.
Muhurat — Pro Tier

Muhurat Finder

Find the most auspicious date-time windows for a specific event type within a date range, ranked by classical shastric score.

GET/v1/muhurat/findProFind best dates for event
ParameterTypeRequiredDescription
eventstringRequiredmarriage, griha_pravesh, business_start, vehicle_purchase…
start_datestringRequiredSearch range start YYYY-MM-DD
end_datestringRequiredSearch range end YYYY-MM-DD (max 90 days)
latfloatRequiredLocation latitude
lonfloatRequiredLocation longitude
min_scoreintegerOptionalMinimum score 0–100 (default: 60)
GET/v1/muhurat/dayProGet all timings for a day

GET /v1/timings — all auspicious and inauspicious periods for a date. Equivalent to /v1/muhurat/day. Use this for a complete timing overview.

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude (or pass region)
lonfloatOptionalLongitude (or pass region)
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); fills coords when lat/lon omitted. Unsupported values return 422.
tzstringOptionalIANA timezone for the civil clock, e.g. Europe/Paris. Omit to use the region default (+05:30 / +05:45).
Eclipses — Pro Tier

Eclipses

Solar and lunar eclipse data with Sutak timings and visibility by location.

GET/v1/eclipseProEclipses for a year
ParameterTypeRequiredDescription
yearintegerRequiredYear to query
typestringOptionallunar or solar (default: both)
latfloatOptionalFor visibility check
lonfloatOptionalFor visibility check
GET/v1/eclipse/visibilityProCalculate eclipse visibility

Whether a given eclipse is visible from a location, and when.

A thin layer over the engine's own local-circumstances calculation (get_eclipse_for_date, which drives Swiss Ephemeris sol_eclipse_when_loc / lun_eclipse_how and checks that the body is actually above the horizon). No astronomy is implemented here: the same code that produces eclipse data everywhere else in the API produces it here, so the two can never disagree.

magnitude and obscuration_percent are deliberately NOT returned. The engine does not compute them, and inventing a plausible number is worse than omitting a field.

local_times are clock times in the tz offset supplied (UTC by default).

ParameterTypeRequiredDescription
eclipse_idintegerRequiredEclipse ID from /v1/eclipse
latfloatRequiredLatitude
lonfloatRequiredLongitude
tzstringOptionalUTC offset in hours (e.g. 5.5) or an IANA zone (e.g. Asia/Kolkata); local_times and sutak are returned in it. Omitted = UTC.
GET/v1/eclipse/yearProGet eclipses for a specific year

Get all eclipses for a specific year.

ParameterTypeRequiredDescription
yearintegerRequiredFour-digit year.
GET/v1/eclipse/{eclipse_id}ProGet eclipse details

Get detailed eclipse information.

ParameterTypeRequiredDescription
eclipse_idintegerRequiredEclipse identifier. (path)
Vedic Astrology — Pro Tier

Birth Chart (Kundli) PRO

Generate a complete Vedic birth chart (Kundli) with planetary positions, Lagna, Nakshatras, Dashas, and Yogas based on Swiss Ephemeris + Lahiri ayanamsa. Supports profiles for retrieval.

POST/v1/birth-chartProGenerate a new birth chart

Generates a full Vedic birth chart. Pass the native's birth date, time, and location. Returns planetary positions in signs and nakshatras, house placements, Vimshottari Dasha periods, and notable Yogas.

ParameterTypeRequiredDescription
namestringRequiredName of the person
datestringRequiredBirth date YYYY-MM-DD
timestringRequiredBirth time HH:MM (24-hr)
latfloatRequiredBirth place latitude
lonfloatRequiredBirth place longitude
tzstringOptionalTimezone (e.g. Asia/Kolkata). Auto-detected from coordinates if omitted
cURL Example
curl -X POST https://api.tathaastuapi.com/v1/birth-chart \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Arjun",
    "date": "1990-05-15",
    "time": "06:30",
    "lat": 28.6139,
    "lon": 77.2090
  }'
GET/v1/birth-chart/{profile_id}ProRetrieve saved chart

Retrieve a previously generated birth chart by its profile ID. Returns the same full chart data without re-computing.

Vedic Astrology — Pro Tier

Compatibility (Kundli Matching) PRO

Ashtakoot (8-fold) Gun Milan compatibility matching. Computes Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot, and Nadi scores with Manglik analysis and Dasha compatibility.

POST/v1/compatibilityProMatch two birth charts

Provide birth details for two individuals. Returns Ashtakoot Guna score (out of 36), individual Kuta scores, Manglik Dosha analysis, Nadi Dosha check, and an overall compatibility assessment.

ParameterTypeRequiredDescription
person1objectRequiredObject with name, date, time, lat, lon
person2objectRequiredObject with name, date, time, lat, lon
cURL Example
curl -X POST https://api.tathaastuapi.com/v1/compatibility \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "person1": {"name": "Arjun", "date": "1990-05-15", "time": "06:30", "lat": 28.6, "lon": 77.2},
    "person2": {"name": "Priya", "date": "1992-08-22", "time": "14:15", "lat": 28.6, "lon": 77.2}
  }'
GET/v1/compatibility/{compat_id}ProRetrieve saved match result

Retrieve a previously computed compatibility analysis by its ID.

POST/v1/compatibility/reportProCompatibility Report

Full human-readable compatibility report in JSON. Supports lang=en/hi.

ParameterTypeRequiredDescription
person_aobjectRequired(body)
person_bobjectRequired(body)
GET/v1/compatibility/scoreProCompatibility Score

Lightweight compatibility score API.

ParameterTypeRequiredDescription
bride_dobstringRequiredBride DOB YYYY-MM-DD
bride_timestringRequiredBride time HH:MM
bride_latfloatRequiredBride latitude
bride_lonfloatRequiredBride longitude
groom_dobstringRequiredGroom DOB YYYY-MM-DD
groom_timestringRequiredGroom time HH:MM
groom_latfloatRequiredGroom latitude
groom_lonfloatRequiredGroom longitude
modestringOptionalfull or lite
bride_tzstringOptionalIANA timezone of the bride's birth place
groom_tzstringOptionalIANA timezone of the groom's birth place
World Festivals — Free Tier

World Festivals FREE TIER

Multi-religion world festival calendar covering Christian, Orthodox, Islamic, Sikh, Jewish, Buddhist, Jain, Bahá'í, Zoroastrian and Shinto observances, together with the Chinese and East Asian festival year. Where a tradition is not unanimous, the variants are returned as separate entries with their own festival_id — Sunni and Shia, Svetambara and Digambara, and the two Orthodox reckonings of the fixed feasts. Currently covers 2024–2030; call /v1/festivals/world/religions for the exact range in force.

🌍
5 Religions Covered Islamic — Ramadan, Eid al-Fitr, Eid al-Adha, Muharram, Mawlid (Hijri astronomical) · Christian — Easter, Christmas, Lent, Pentecost, Ascension · Orthodox — Orthodox Easter (Pascha), Nativity, Theophany · Sikh — Vaisakhi, Gurpurabs, Hola Mohalla (Nanakshahi calendar) · Jewish — Passover, Rosh Hashanah, Yom Kippur, Hanukkah, Sukkot (Hebrew calendar)
GET/v1/festivals/worldFreeQuery world festivals

Multi-religion world festival calendar. Query by date, year, month, religion, or search by name. Returns paginated results sorted by date.

ParameterTypeRequiredDescription
datestringOptionalYYYY-MM-DD — get festivals for a specific date
yearintegerOptionalYear (1700–3100)
monthintegerOptionalMonth (1–12), requires year
religionstringOptionalFilter: christian, orthodox, islamic, sikh, jewish, buddhist, jain, bahai, zoroastrian, shinto, east_asian
festival_idstringOptionalExact festival_id filter
searchstringOptionalSearch festival names (partial match)
limitintegerOptionalResults per page (1–1000, default: 100)
offsetintegerOptionalPagination offset (default: 0)
cURL Examples
# All Islamic festivals for 2025
curl "https://api.tathaastuapi.com/v1/festivals/world?year=2025&religion=islamic" \
  -H "X-API-Key: YOUR_KEY"

# Search for Eid festivals
curl "https://api.tathaastuapi.com/v1/festivals/world?search=eid&year=2025" \
  -H "X-API-Key: YOUR_KEY"

# Jewish festivals in March 2025
curl "https://api.tathaastuapi.com/v1/festivals/world?year=2025&month=3&religion=jewish" \
  -H "X-API-Key: YOUR_KEY"
JSON · 200 OK
{
  "total": 28,
  "limit": 100,
  "offset": 0,
  "festivals": [
    {
      "year": 2025,
      "religion": "islamic",
      "festival_id": "ramadan_start",
      "festival_name": "Ramadan Begins",
      "gregorian_date": "2025-03-01",
      "display_date": "2025-03-01",
      "day_of_week": "Saturday",
      "calendar_ref": "1 Ramadan 1446 AH",
      "notes": "Astronomical new moon calculation"
    }
  ],
  "filters": { "year": 2025, "religion": "islamic" }
}
GET/v1/festivals/world/religionsFreeList religions and festival counts

Returns all available religions with total festival counts, unique festival types, and year coverage range. Use this to discover what data is available.

cURL
curl "https://api.tathaastuapi.com/v1/festivals/world/religions" \
  -H "X-API-Key: YOUR_KEY"
JSON · 200 OK
{
  "religions": [
    { "religion": "islamic", "total_festivals": 24843, "unique_festivals": 36, "min_year": 1700, "max_year": 2400 },
    { "religion": "christian", "total_festivals": 21861, "unique_festivals": 31, "min_year": 1700, "max_year": 2400 },
    { "religion": "jewish", "total_festivals": 19245, "unique_festivals": 28, "min_year": 1700, "max_year": 2400 },
    { "religion": "sikh", "total_festivals": 14700, "unique_festivals": 21, "min_year": 1700, "max_year": 2400 },
    { "religion": "orthodox", "total_festivals": 13700, "unique_festivals": 20, "min_year": 1700, "max_year": 2400 }
  ],
  "total_records": 94349,
  "year_range": { "min": 1700, "max": 2400 }
}
GET/v1/festivals/world/upcomingFreeUpcoming festivals from today

Returns upcoming world festivals from the current date, across all religions or filtered by a specific religion. Ideal for calendar widgets and notifications.

ParameterTypeRequiredDescription
religionstringOptionalFilter: christian, orthodox, islamic, sikh, jewish, buddhist, jain, bahai, zoroastrian, shinto, east_asian
limitintegerOptionalMax results (1–100, default: 20)
cURL
# Upcoming Sikh festivals
curl "https://api.tathaastuapi.com/v1/festivals/world/upcoming?religion=sikh&limit=10" \
  -H "X-API-Key: YOUR_KEY"
Bulk APIs — Starter

Bulk APIs

Process multiple dates or locations in a single HTTP request. Ideal for pre-computing calendar data or batch analysis.

POST/v1/bulk/panchangStarterPanchang for multiple dates
Request Body
{
  "dates": ["2025-03-01", "2025-03-02", "2025-03-15"],
  "lat": 28.6139,
  "lon": 77.2090,
  "include": "timings,festivals"  // optional
}
POST/v1/bulk/festivalsStarterFestivals for multiple dates

Returns festivals for a date range (start_date..end_date, up to 366 days) in one call, from the same festival engine and regional rules as /v1/festivals/range. Accepts location_id, region and lang.

Reference

Languages (i18n)

All names are phonetically transliterated — not machine translated. "एकादशी" renders with the same sound in every script.

Phonetic, Not TranslatedFestival and Panchang names preserve the original Sanskrit pronunciation across all 50+ supported scripts and languages.
hiहिन्दी
enEnglish
taதமிழ்
teతెలుగు
mrमराठी
bnবাংলা
guગુજરાતી
knಕನ್ನಡ
mlമലയാളം
paਪੰਜਾਬੀ
orଓଡ଼ିଆ
neनेपाली
siසිංහල
ruРусский
ja日本語
zh中文
arالعربية
deDeutsch
frFrançais
esEspañol
GET/v1/i18n/languagesFreeGet supported languages

Get list of all supported languages (50+).

No parameters.

GET/v1/i18n/stringsFreeGet transliteration strings

Get transliteration strings for a category and language.

ParameterTypeRequiredDescription
categorystringRequiredCategory: TITHI, NAKSHATRA, YOGA, KARANA, WEEKDAY, MONTH, FESTIVAL
langstringOptionalISO language code for transliterated names. Defaults to English.
Core APIs

Individual Limb Calculators

One limb at a time, when a full Panchang response is more than you need. Each returns the same values the full endpoint would, computed by the same engine.

GET/v1/karanaFreeGet Karana details

Get detailed Karana information for a date.

ParameterTypeRequiredDescription
datestringRequiredTarget date in YYYY-MM-DD.
location_idintegerOptionalSupported location id. Takes precedence over lat/lon.
langstringOptionalISO language code for transliterated names. Defaults to English.
GET/v1/special-yogasProGet Special Yogas Endpoint

Get special yogas (Sarvartha Siddhi, Amrita Siddhi, Dwipushkar, Tripushkar).

ParameterTypeRequiredDescription
datestringRequiredDate YYYY-MM-DD
latfloatOptionalLatitude. With lon, used when location_id is not given.
lonfloatOptionalLongitude. Required together with lat.
location_idintegerOptionalPredefined location ID; takes precedence over lat/lon.
regionstringOptionalCanonical region or supported ISO 3166-2 state code (e.g. IN-MH); its canonical location is used when neither location_id nor lat/lon is given. An unsupported value is ignored.
GET/v1/yogaFreeGet Yoga details

Get detailed Yoga information for a date.

ParameterTypeRequiredDescription
datestringRequiredTarget date in YYYY-MM-DD.
location_idintegerOptionalSupported location id. Takes precedence over lat/lon.
langstringOptionalISO language code for transliterated names. Defaults to English.
Vedic Astrology

Kundli Reports

A free teaser for preview and a full premium report. The teaser is the same chart the paid report is built from, so nothing changes between the two.

POST/v1/ashtakavargaProAshtakavarga with classical references

The Bhinnashtakavarga of the seven grahas and the Lagna, with the contributors of every point; the Samudaya with its favourable / middling / difficult bands; and Trikona and Ekadhipatya reduction with Rashi, Graha and Yoga Pinda. The point table is decoded from the karana verses of BPHS 66 and checked against their counts, the fixed totals and Santhanam's worked example. Ekadhipatya reduction is read differently by the editions; all three readings are returned and the primary one is named.

ParameterTypeRequiredDescription
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptionalIANA timezone (body)
namestringOptional(body)
POST/v1/ashubha-janmaProInauspicious birth conditions with classical references

Evaluates the birth moment against BPHS ch. 85-96: Amāvasyā, the six parts of Kṛṣṇa Caturdaśī, Viṣṭi karaṇa, Vyatīpāta yoga, a kṣaya tithi, tithi / nakṣatra / lagna Gaṇḍānta, Abhukta Mūla, saṅkrānti and solar or lunar eclipse, with the junction times and the Sanskrit verse for each. Family nakṣatra and birth-order conditions are evaluated only when supplied. Names the text lists but does not define (Yamaghaṇṭa, Dagdha yoga, Pāta) are listed as not computed. Remedies are returned as text, not advice.

ParameterTypeRequiredDescription
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptionalIANA timezone (body)
namestringOptional(body)
family_janma_nakshatrasarrayOptionalOptional. Evaluates BPHS ch. 89: birth in the janma nakshatra of a parent or sibling. (body)
born_after_three_of_other_sexbooleanOptionalOptional. Evaluates BPHS ch. 95: a daughter after three sons, or a son after three daughters. (body)
POST/v1/avasthaProGraha avasthas with classical references

The avasthas of BPHS ch. 45 for every graha: Baladi, Jagradadi, Deeptadi, Lajjitadi and Shayanadi with Drishti / Cheshta / Vicheshta, together with the natural, temporary and compound relationships of ch. 3 they depend on. Every state carries its verse. Where the Pathak edition, the transcription and Santhanam's translation read a rule differently, each reading is returned; the effect verses are returned as text, not as a prediction.

ParameterTypeRequiredDescription
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptionalIANA timezone (body)
namestringOptional(body)
name_syllable_numberintegerOptionalThe value (1-5) of the first syllable of the native's name, used for the Drishti / Cheshta / Vicheshta of the Shayanadi avasthas (BPHS 45.34). Neither edition prints the syllable table legibly, so it is not derived from name; without it the Cheshta is not evaluated. (body)
POST/v1/doshaProDoshas with classical references

Kuja (Mangal) dosha from BPHS 80.47-49 and Phaladeepika XI.3, and the serpent's and father's curse yogas of BPHS ch. 83 judged by the Sanskrit text, each with its verse. Where R. Santhanam's translation reads a verse differently, that reading is evaluated and returned beside the verdict. Conditions the text does not let a chart decide (strength without a stated threshold, Gulika) are returned as null, never guessed. Kaal Sarp and Sade Sati have no classical locus; they are returned under conventions.

ParameterTypeRequiredDescription
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptionalIANA timezone (body)
namestringOptional(body)
partnerobjectOptionalPartner's birth data. Applies BPHS 80.49: the Kuja yoga in both charts ceases to have effect. (body)
sade_sati_datestringOptionalYYYY-MM-DD. When given, Sade Sati (a convention) is evaluated for that date at local noon at the birth place. (body)
POST/v1/kundliProCanonical Vedic kundli

Complete Vedic calculation from one canonical chart: lagna, grahas, whole-sign houses with Placidus cusps alongside, validated vargas (D1/D7/D9/D10/D30) and Vimshottari dasha to three levels. Every response echoes the exact calculation conventions used. /v1/birth-chart is unchanged and remains available.

ParameterTypeRequiredDescription
include_yogasbooleanOptionalInclude classical yogas from the existing engine
include_shadbalabooleanOptionalInclude Shadbala from the existing engine
namestringOptional(body)
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptional(body)
profilestringOptional(body)
node_typestringOptional"mean" or "true" (body)
dasha_levelsintegerOptional(body)
POST/v1/kundli/premium-reportProGenerate premium 60+ page Kundli PDF report

Generate a comprehensive 60+ page Vedic Birth Chart (Kundli) PDF report.

Includes: Personality analysis, Rashi chart, 9 planets detailed analysis, 12 house analysis, Vimshottari Dasha with Antardasha, Classical Yogas, Life Journey narrative, Hidden Truths, Career/Marriage/Finance insights, Shadbala strength, Dosha analysis, 10-year predictions, Remedies.

Returns: PDF download URL + JSON summary

ParameterTypeRequiredDescription
namestringOptional(body)
date_of_birthstringRequired(body)
time_of_birthstringRequired(body)
latitudefloatRequired(body)
longitudefloatRequired(body)
langstringOptional(body)
timezonestringOptional(body)
GET/v1/kundli/teaserProFree Kundli teaser (preview before purchase)

Free teaser preview of the Kundli report. Returns: Lagna, Moon sign, 2 key insights. Full report requires premium API key.

ParameterTypeRequiredDescription
datestringRequiredDate of birth YYYY-MM-DD
timestringRequiredTime of birth HH:MM
latfloatRequiredLatitude
lonfloatRequiredLongitude
namestringOptionalName (optional)
langstringOptionalLanguage: en or hi
tzstringOptionalIANA timezone of the birth place; the time of birth is local to it
POST/v1/upagrahaProUpagrahas with classical references

The five aprakāśa grahas (Dhūma, Vyatīpāta, Pariveṣa, Indracāpa, Upaketu) from BPHS ch. 3 and the five kālavelās (Kāla, Mṛtyu, Ardhaprahara, Yamaghaṇṭaka, Gulika) from BPHS ch. 4, each with its Sanskrit verse from the Pathak edition and R. Santhanam's translation. Kālavelās are counted from the vāra that began at the sunrise before the birth, and the longitude rising at the start and at the end of each part are both returned. Above the polar circles on days without sunrise or sunset the kālavelās are reported unavailable.

ParameterTypeRequiredDescription
date_of_birthstringRequiredYYYY-MM-DD (body)
time_of_birthstringRequiredHH:MM or HH:MM:SS, local to timezone (body)
latitudefloatRequired(body)
longitudefloatRequired(body)
timezonestringOptionalIANA timezone (body)
namestringOptional(body)
Reference Data

Locations

The precomputed locations served from the dataset. Passing a location_id reads that location’s stored row and takes precedence over lat/lon.

How location and region are resolved

Every endpoint answers two separate questions the same way.

Where — whose sunrise, tithi and timings are computed: location_id, else lat+lon, else the canonical location of region, else the endpoint’s default.

Which tradition — which regional festival rules apply: an explicit region, else the location_id’s region and state, else New Delhi’s. Coordinates choose where, never the tradition. Tradition is independent of place, so region=IN-MH&location_id=1 means “Maharashtrian festivals, observed in Delhi”, and region=IN-MH with coordinates means “Maharashtrian festivals, observed there”.

region accepts a canonical region (NORTH_INDIA, SOUTH_INDIA, EAST_INDIA, WEST_INDIA, NEPAL, KASHMIR, SRI_LANKA) or the ISO 3166-2 code of a state recorded on a supported location (e.g. IN-MH Maharashtra, IN-GJ Gujarat), case-insensitive. On /v1/panchang, /v1/day-context and the timing endpoints anything else returns 422 with the supported list. The festival endpoints historically ignored region, so there an unsupported value is still ignored and is named in region_resolution.ignored_region. A state code applies its region’s rules and the state’s own: Gudi Padwa is a Maharashtra rule, so it appears for location_id=8 (Mumbai) or region=IN-MH, but not for region=WEST_INDIA or Ahmedabad. Festival responses report what was used in _engine.region_resolution and _engine.rule_pack_chain; Panchang responses report the served location’s location.region and location.subdivision.

GET/v1/locationsFreeGet predefined locations

Get list of predefined locations with coordinates.

No parameters.

GET/v1/locations/{location_id}FreeGet location details

Get details for a specific location.

ParameterTypeRequiredDescription
location_idintegerRequiredSupported location id. Takes precedence over lat/lon. (path)
Platform

Status, Pricing & Change History

Service health, the published plans, and the machine-readable change history behind the NEW / MODIFIED badges shown across the reference.

GET/v1/changelogFreeAPI change history

What changed in the API, when, and what it used to do.

Entries are append-only and newest first. A modified endpoint gets a new entry rather than an edit to the old one, so the previous contract stays readable — which is what you need if a change broke you.

breaking is true only where a request that worked before now fails or means something different. The same source feeds the NEW/MODIFIED badges in the API reference, so a badge and this list cannot disagree.

ParameterTypeRequiredDescription
endpointstringOptionalOnly entries touching this path, e.g. /v1/panchang
statusstringOptionalNEW | MODIFIED | DEPRECATED | FIXED
sincestringOptionalOnly entries on or after this date, YYYY-MM-DD
GET/v1/healthFreeHealth Check

Detailed health check.

No parameters.

POST/v1/jyotish/dailyProPersonalized daily Jyotish reading for a target date (PRO)

PRO. A personalized daily reading computed from the caller's natal chart and the transits of an explicit target date.

Historical and future dates are supported identically — the target date is required and nothing in the calculation reads the clock.

This is a traditional, rule-based reading, not a prediction. It applies classical Jyotish factors and explicitly declared engine conventions. It is not a scientifically validated prediction or guarantee of future events. reading_basis on each domain says how many factors contributed and is not a confidence, accuracy, likelihood or probability.

Every domain reading references factor_ids in the factors array, and every factor carries the rule and source it came from, so a reading can always be traced back to what produced it. The weights that turn factors into domain scores are engine decisions, published in the response and carrying no classical authority; the rules they weigh do carry sources.

Natal data comes from the stored birth profile. The observer block is where the user is now and fixes the daily Panchang, the sunrise that anchors Tara Bala, and the transit ascendant — it is not the birthplace.

ParameterTypeRequiredDescription
datestringRequiredTarget date, YYYY-MM-DD. REQUIRED. (body)
observerobjectRequired(body)
languagestringOptional(body)
dasha_depthintegerOptional(body)
profile_idintegerOptional(body)
date_of_birthstringOptional(body)
time_of_birthstringOptional(body)
latitudefloatOptional(body)
longitudefloatOptional(body)
timezonestringOptional(body)
profilestringOptional(body)
GET/v1/pricingFreePublished pricing plans

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.

ParameterTypeRequiredDescription
currencystringOptionalINR or USD. Defaults by visitor country, then INR.
GET/v1/statusFreeGet Status

Get API status and statistics.

No parameters.

GET/v1/tara/eventsProTara Asta / Udaya events for a location and date range (PRO)

PRO. Find Tara Asta (heliacal setting) and Tara Udaya (heliacal rising) events for Budh (Mercury), Shukra (Venus), Mangal (Mars), Guru (Jupiter) or Shani (Saturn).

The calculation follows Sūrya Siddhānta IX.2–IX.9: the kālāṃśa — the interval between the Sun's and the planet's horizon crossings — is compared against the classical threshold. Mars 17, Saturn 15 and Jupiter 11 each have a single limit (IX.6). Mercury and Venus have two, and which applies is fixed by the conjunction the apparition belongs to, not by the planet's motion on the day: Venus 8 approaching or leaving inferior conjunction and 10 for superior (IX.7), Mercury 12 and 14 respectively (IX.8). The limit is set at the Asta and held until the Udaya, so a retrograde station occurring inside a disappearance cannot change it.

It is not an ecliptic longitude separation, and it is not the chart-combustion orb.

The Moon is deliberately not served here: Sūrya Siddhānta treats its heliacal rising and setting at the head of chapter X, under a different rule, so answering for it under this one would apply the wrong rule.

Because the criterion is a horizon relationship, the result depends on where you are. New Delhi and Lima differ by about a week for Shukra Asta 2026. Supplying a timezone does not substitute for supplying coordinates.

astronomical_date is the local civil date *containing* the calculated event instant. It is not an assertion of the date printed by any particular Panchang or almanac; see provenance.date_assignment in the response.

Range is limited to 366 days per request.

ParameterTypeRequiredDescription
planetstringRequiredbudh|mercury, shukra|venus, mangal|kuja|mars, guru|jupiter, shani|saturn
latfloatRequiredObserver latitude. REQUIRED — Tara Asta/Udaya is a local horizon event and the coordinates drive the astronomy.
lonfloatRequiredObserver longitude. REQUIRED.
start_datestringRequiredWindow start, YYYY-MM-DD
end_datestringRequiredWindow end, YYYY-MM-DD (inclusive)
tzstringOptionalIANA timezone for presentation only, e.g. Asia/Kolkata. It never changes the astronomy. Omit it and the zone is resolved from the coordinates.
GET/v1/tara/stateProCurrent Tara Asta / Udaya state at a moment and location (PRO)

PRO. Is the planet currently Asta?

The verdict is read off this engine's own Asta/Udaya events: the instant is Asta when it falls at or after an Asta and before the Udaya that closes it, and visible otherwise. governing_event names the event the answer came from, so it can be checked against /v1/tara/events directly.

This endpoint does not evaluate visibility independently, and that is deliberate. Sūrya Siddhānta IX specifies event computation and provides no separate point-in-time visibility rule, so deriving the state from the event stream keeps one implementation of the criterion rather than two that can disagree. It is an engineering architecture chosen to stay faithful to the source's event-oriented model; the text is not claimed to prescribe it.

kalamsa is descriptive, not the verdict. Comparing it against threshold will disagree with is_asta near opposition, where the kālāṃśa folds through ±180° — a superior planet twelve hours from the Sun is as visible as it ever gets, and the folded value can read negative. That is the fold, not a contradiction.

Resolving the enclosing apparition costs a bounded scan, so this is not a single-sample lookup: expect roughly 100–500 ms depending on the planet's synodic period. If no governing event is found inside the search, the response is status: "indeterminate" rather than an assumption of visibility — absence of an Asta in the searched span is not evidence that none occurred.

Omitting at uses the current moment in the resolved zone, via the same now_in_zone helper the /now family already uses — this endpoint does not invent its own idea of "now".

ParameterTypeRequiredDescription
planetstringRequiredbudh|mercury, shukra|venus, mangal|kuja|mars, guru|jupiter, shani|saturn
latfloatRequiredObserver latitude. REQUIRED.
lonfloatRequiredObserver longitude. REQUIRED.
atstringOptionalInstant to evaluate, ISO-8601. A naive value is read in the resolved zone; omit it entirely for the current moment there.
tzstringOptionalIANA timezone for presentation only. Omit it and the zone is resolved from the coordinates.
Reference

Error Codes

All errors return JSON with error, message, and optional docs link.

401
Unauthorized
Missing or invalid X-API-Key header. Get a key from your dashboard.
402
Plan Upgrade Required
Valid key, but your plan does not include this endpoint. The body carries error: "plan_upgrade_required", required_plan and current_plan.
403
Forbidden
The key or account cannot be used: revoked or expired key, disabled account, or expired trial.
422
Validation Error
Invalid parameter — wrong date format, out-of-range lat/lon, unsupported event type, or date outside 1700–3100.
429
Rate Limited
Monthly or per-minute quota exceeded. Check X-RateLimit-Remaining header.
500
Engine Error
Internal calculation error. Report with date and coordinates used.
503
Service Unavailable
Live engine temporarily unavailable. Pre-computed dates (1700–3100) still served from DB.
Reference

Caching & Data Reuse

You are expected to cache. A fresh API call per end user is not required.

Permitted: cache API responses on your own servers, store them in your own database, and serve them to the users of your own application.

Not permitted: redistributing, reselling, sublicensing or publishing the underlying TathaAstu dataset as a standalone dataset or service, presenting it as your own independently sourced data, or using caching to stay within a plan limit you would otherwise exceed.

Retention: You may retain cached responses for as long as reasonably necessary to operate your application, subject to the terms applicable to your account. If our published data is materially corrected or updated, we recommend refreshing affected cached results using the data-version information described below.

Knowing when to refresh: Panchang responses carry engine.data_version and festival responses carry _engine.rules_snapshot_version. Store the value with the data you cache and compare it later; when it changes, refresh. /v1/changelog lists dated changes to endpoints and data. For planned material changes to published data we aim to give two to three days’ advance notice where reasonably practicable; this does not cover routine deployments. Corrections for accuracy, security or legal compliance may be applied sooner.

Full terms: tathaastuapi.com/terms (Caching and Data Storage).

Reference

Rate Limits & Plans

Limits are per-API-key. Every response includes headers so you can track usage in real-time.

PlanRequests / MonthRequests / MinEndpointsPrice
Free
50010Core panchang, timings, festivals, rahukaal₹0
Starter
10,00060All core endpoints + Bulk endpoints₹299/mo
Pro
100,000200All endpoints incl. Muhurat, Bulk & Calendar₹999/mo
Business
500,000500All endpoints + Shastric conditions, Event suitability, Day context₹2,999/mo
Enterprise
UnlimitedCustom+ Negotiated volume; SLA and dedicated support by agreementCustom
Response Headers
X-RateLimit-Plan:      free
X-RateLimit-Limit:     500
X-RateLimit-Remaining: 347
X-RateLimit-Used:      153

The monthly quota resets on the 1st of each calendar month. The request that would exceed it — the 501st on Free — returns 429 with error: "quota_exceeded". X-RateLimit-Warning appears once 75% and 90% of the quota is used. Endpoints outside your plan return 402 plan_upgrade_required and do not count toward the quota.

Need more requests or Enterprise access?

Upgrade directly from the developer dashboard. Enterprise plans are arranged by agreement — negotiated volume, SLA and dedicated support.

Upgrade Plan →
Reference

Coverage & Engine

TathaAstu uses a two-path architecture — transparent to clients.

1,400 Years Coverage (1700–3100)The world’s widest Panchang data range. Every date from 1700 to 3100 is pre-computed — 7.6 million rows across 15 reference locations — so those responses come back in <5ms. The Swiss Ephemeris live engine covers the same range for any other coordinates, and reaches to 3599.
🔭
Dual-Path ArchitectureRedis + MySQL cached responses for common dates. Swiss Ephemeris real-time calculation for historical/future dates. Same JSON structure, transparent to clients.
🌏
Worldwide, not India-onlyPass any lat/lon and the Panchang is computed for that place: sunrise, sunset and the tithi/nakshatra boundaries are derived for those coordinates, not mapped onto an Indian city. The civil clock is resolved from the coordinates with daylight saving applied, or name the zone yourself with tz (any IANA zone, e.g. Europe/Paris, America/New_York). Every response reports the zone it used in location.timezone. The 15 pre-computed locations are a fast path, not a limit — coordinates anywhere on Earth are computed live.
🔢
Engine Attribution on Every ResponseEvery endpoint returns engine.name, engine.version, engine.calculation, and engine.ayanamsa so clients can always verify the calculation method.

⚡ Interactive API Reference

Explore and test every endpoint in your browser. Powered by Swagger UI. Requires a valid API key from your dashboard.

Interactive API Explorer
Click Load to initialise Swagger UI from your deployed OpenAPI spec.

Make sure your FastAPI server is running at api.tathaastuapi.com.

All 95 endpoints, parameters, and response schemas will be available here.
Interactive Sandbox

🧪 Try It Live

Real calls to the production API. Enter your key once and all panels will use it.

🔑 API Key Enter once — auto-fills all panels
⚠️
CORS NoteBrowser sandbox calls require your server to have CORS enabled for this domain, or you can test directly from your server using cURL/Python. The API key is still required even for allowed origins.
GET/v1/panchang— Core panchang for any date
GET/v1/timings— All timing windows for a date
GET/v1/hora— 24 planetary hours Pro
GET/v1/festivals— Festivals for a date
GET/v1/shastra/conditions— Full shastric layer Business
GET/v1/events/suitability— Event ratings Business
Want the full interactive explorer with schemas?

Switch to API Reference for Swagger UI with all 95 endpoints, parameter schemas, and auto-generated code samples.