API Reference / Vedic Astrology / Panchang
/v1/panchang/amrit-kalam
Amrit Kalam window.
What this tells you
Amrit Kalam ("nectar time") is a short, highly auspicious window inside each nakshatra. The classical tables give, for each of the 27 nakshatras, a start offset in ghatis counted from the nakshatra's start, for a nakshatra 60 ghatis long. The API scales the offset and the 1.6-ghati duration to the real length of the nakshatra. It uses the same method as Varjyam with a different offset table. Actions begun during Amrit Kalam are said to bear especially good fruit.
Request
All requests require an Authorization header with your dv_live_* API key.
curl "https://api.lifeastroapi.com/v1/panchang/amrit-kalam?date=2027-01-15&tz=Asia%2FKolkata&lat=28.6139&lon=77.209" \
-H "Authorization: Bearer YOUR_API_KEY"Query parameters
Checked against the API: a parameter is marked required when the request fails without it.
| Name | Required | Example | Description |
|---|---|---|---|
date | yes | 2027-01-15 | Date (YYYY-MM-DD). |
tz | yes | Asia/Kolkata | Timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30). |
lat | yes | 28.6139 | Latitude in decimal degrees. |
lon | yes | 77.209 | Longitude in decimal degrees. |
ayanamsa | no | — | Ayanamsa (sidereal offset) to use. Defaults to lahiri. |
Response (200 OK)
The real response to the example request above, generated from the API itself. Long arrays are trimmed to their first two items. Field names are stable across versions.
{
"date": "2027-01-15",
"location": {
"lat": 28.6139,
"lon": 77.209,
"alt": 0
},
"tz": "Asia/Kolkata",
"nakshatra": "Revati",
"nakshatra_index": 26,
"amrit_offset_ghatika": 4,
"window": {
"start_jd": 2461420.310308,
"end_jd": 2461420.337573,
"start_local": "2027-01-15 00:56:51",
"end_local": "2027-01-15 01:36:06"
},
"duration_seconds": 2355
}Field reference
Every field in the response, with its type, a real example, and what it means.
| Field | Type | Meaning |
|---|---|---|
| date | string (YYYY-MM-DD) | The requested date. example: "2027-01-15" |
| location | object | Echo of lat, lon and alt (metres). example: { "lat": 28.6139, "lon": 77.209, "alt": 0 } |
| tz | string | Echo of the tz you sent. All *_local times are in this zone. example: "Asia/Kolkata" |
| nakshatra | string | Nakshatra running at local sunrise of `date`. The Amrit Kalam window lies inside this nakshatra. Translated when you pass `locale`. example: "Revati" |
| nakshatra_index | integer (0–26) | 0 = Ashwini … 26 = Revati. example: 26 |
| amrit_offset_ghatika | number | Where Amrit Kalam starts, in ghatis from the start of the nakshatra, on a 60-ghati scale. Note the name differs from `offset_ghatika` in /v1/panchang/varjyam. example: 4Jyotish: Each nakshatra has its own fixed Amrit offset in the classical tables (Muhurta Chintamani). It is a separate table from the Varjyam offsets. |
| window.start_jd / end_jd | number | Start and end of Amrit Kalam as Julian Day in UT. example: 2461420.310308 |
| window.start_local / end_local | string (YYYY-MM-DD HH:MM:SS) | Start and end of Amrit Kalam in local time (request tz). Can be on the day before `date`, as here. example: "2027-01-15 00:56:51" |
| duration_seconds | integer | Length of the window in seconds. It is 1.6 ghatis of the nakshatra's real length, so it varies with the Moon's speed (about 33–44 minutes). example: 2355 |
Usage tips
How to use it
- Check the date of the windowThe window belongs to the nakshatra running at sunrise. That nakshatra often began the day before, so the window can fall before sunrise, even on the previous date (in the example: 00:56 to 01:36 on 2027-01-15, hours before that day's sunrise). It can also fall after the next sunrise or at night. Compare it with the day's sunrise before suggesting it as a "best time" for today.
- Nakshatras that start later in the dayOnly the sunrise nakshatra is used. To get the Amrit Kalam of a nakshatra that begins later in the day, call again with the next date.
- Pair with VarjyamShow Amrit Kalam next to /v1/panchang/varjyam: "avoid this, prefer this".
Errors
Every error follows the same envelope. Use the error.code field (not the message) for conditional logic in your integration.
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "missing or invalid API key",
"request_id": "req_01hqy7k8c3e7m1n"
}
}402 Payment Required
{
"error": {
"code": "trial_exhausted",
"message": "your free trial credits are exhausted — pick a plan to continue",
"top_up_url": "https://lifeastroapi.com/pricing",
"request_id": "req_01hqy7k8c3e7m1n"
}
}429 Too Many Requests
{
"error": {
"code": "rate_limited",
"message": "rate limit exceeded; retry after 12 seconds",
"request_id": "req_01hqy7k8c3e7m1n"
}
}Try it
Get a dv_live_* key from your dashboard and paste into the cURL snippet above. New accounts get 1,500 free credits. Sign up.