Pañcāṅga for a date and place
- Cost
- 1 unit
- Operation
- panchangDay
- Auth
- X-API-Key
Tithi, nakṣatra, yoga, karaṇa and vāra with their end times, plus sunrise and sunset. 1 unit.
⚠️ Pañcāṅga is reckoned at the place of observance, which is not necessarily a birthplace. Send where the person is.
Body parameters#
min -90 · max 90.
min -180 · max 180.
IANA name, e.g. Asia/Kolkata. Not a fixed offset — an offset cannot represent
historical daylight-saving transitions, and a birth in 1980 may need one.
One of lahiri, raman, yukteswar, bhasin, true_chitra, kp. Defaults to "lahiri".
Request#
curl -X POST https://api.grahvani.in/v1/panchang/day \
-H "X-API-Key: $GRAHVANI_KEY" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-08-06",
"place": {
"latitude": 27.1767,
"longitude": 78.0081,
"timezone": "Asia/Kolkata"
}
}'import os, requests
URL = "https://api.grahvani.in/v1/panchang/day"
HEADERS = {"X-API-Key": os.environ["GRAHVANI_KEY"]}
payload = {
"date": "2026-08-06",
"place": {
"latitude": 27.1767,
"longitude": 78.0081,
"timezone": "Asia/Kolkata"
}
}
r = requests.post(URL, headers=HEADERS, json=payload, timeout=60)
r.raise_for_status()
data = r.json()
print(data["meta"]["units"], "units")const res = await fetch("https://api.grahvani.in/v1/panchang/day", {
method: "POST",
headers: {
"X-API-Key": process.env.GRAHVANI_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"date": "2026-08-06",
"place": {
"latitude": 27.1767,
"longitude": 78.0081,
"timezone": "Asia/Kolkata"
}
}),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { data, meta } = await res.json();
console.log(meta.units, "units");<?php
$ch = curl_init("https://api.grahvani.in/v1/panchang/day");
$headers = ["X-API-Key: " . getenv("GRAHVANI_KEY")];
$headers[] = "Content-Type: application/json";
$payload = [
"date" => "2026-08-06",
"place" => [
"latitude" => 27.1767,
"longitude" => 78.0081,
"timezone" => "Asia/Kolkata"
]
];
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
echo $data["meta"]["units"] . " units";Response#
A real response from the production API, abbreviated where an array was long. Every success carries the same three keys — data, meta and, where we have something citable, provenance.
{
"data": {
"input": {
"date": "2026-08-06",
"latitude": 27.1767,
"longitude": 78.0081,
"time": "06:00:00",
"timezone": "Asia/Kolkata"
},
"note": "Panchanga calculated at sunrise (Vedic day starts at sunrise)",
"panchanga": {
"karana": {
"end_date": "2026-08-06",
"end_time": "07:51:33",
"name": "Balava",
"number": 45,
"progress_percent": 81.11,
"type": "movable"
},
"nakshatra": {
"degrees": 18.2199,
"end_date": "2026-08-06",
"end_time": "20:13:58",
"name": "Bharani",
"number": 2,
"pada": 2,
"progress_percent": 36.65
},
"planetary_positions": {
"moon_longitude": 18.2199,
"phase_angle": 268.8663,
"sun_longitude": 109.3535
},
"tithi": {
"degrees": 268.8663,
"end_date": "2026-08-06",
"end_time": "18:53:12",
"name": "Ashtami",
"number": 23,
"paksha": "Krishna Paksha",
"progress_percent": 40.55
},
"vara": {
"end_date": "2026-08-07",
"end_time": "05:46:12",
"name": "Thursday",
"number": 5
},
"yoga": {
"degrees": 127.5734,
"end_date": "2026-08-06",
"end_time": "15:00:59",
"name": "Ganda",
"number": 10,
"progress_percent": 56.8
}
},
"status": "success",
"times": {
"moonrise": {
"date": "2026-08-06",
"method": "skyfield_exact_drik",
"note": null,
"status": "exact",
"time": "23:43:36",
"time_24plus": null
},
"moonset": {
"date": "2026-08-06",
"method": "skyfield_exact_drik",
"status": "exact",
"time": "12:53:56"
},
"sunrise": {
"method": "skyfield_exact",
"status": "exact",
"time": "05:45:42"
},
"sunset": {
"method": "skyfield_exact",
"status": "exact",
"time": "19:01:45"
}
},
"times_partial": false
},
"meta": {
"request_id": "req_01JQ8ZK3M4N5P6Q7R8S9T",
"endpoint": "panchang.day",
"units": 1,
"computed_at": "2026-08-06T07:23:35.677Z",
"ayanamsa": "lahiri"
}
}Errors#
| Status | When |
|---|---|
400 | Your request. Always carries error.field when a single input is at fault. |
401 | Missing, malformed, revoked or out-of-scope API key. |
429 | Rate limit or monthly unit quota exhausted. Always carries Retry-After. |
Every failure returns the same error shape and a doc_url that resolves. See Errors and the full code list.
https://api.grahvani.in