Karana Durations
Calculate the active Karana for a specific date, time, and geographical location using the relative positions of the Sun and Moon. Retrieve Karana details and timing information for Hindu Panchang, Vedic astrology, and religious calendar applications.
Overview
The Karana Durations API calculates the Karana active at a given date, time, and geographical location based on the relative angular positions of the Sun and Moon. In Hindu astrology, Karana is one of the five essential elements of the Panchang and represents half of a Tithi. The Hindu calendar traditionally recognizes 11 types of Karana.
The API returns the Karana number, name, completion time, and the percentage of the current Karana remaining. It can also provide details about subsequent Karanas and their completion times, helping developers determine Karana transitions throughout the day.
This endpoint is useful for building Hindu Panchang applications, daily astrology dashboards, Muhurta calculators, religious calendars, and Vedic astrology software. To calculate Karana timings, provide the date, time, latitude, longitude, and timezone. Optional configuration settings allow you to specify the observation point as geocentric or topocentric and select a supported Ayanamsha setting. The results are returned in JSON format for easy integration into web applications, mobile apps, and astrology platforms.
Request Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
year
|
integer | Yes | Year number, eg: 2023 | 2023 |
month
|
integer | Yes | Month number,with no leading zero | 7 |
date
|
integer | Yes | Day number,with no leading zero | 5 |
hours
|
integer | Yes | Hours number,with no leading zero | 1 |
minutes
|
integer | Yes | Minutes number,with no leading zero | 1 |
seconds
|
integer | Yes | Seconds number, with no leading zero | 0 |
latitude
|
float | Yes | Latitude number, in the range from -90 to 90 | 12.86 |
longitude
|
float | Yes | Longitude number, in the range from -180 to 180 | 123.5 |
timezone
|
float | Yes | Timezone of birth location, eg: 5.5 | 5.5 |
config
|
object | No | Contains optional configuration values | |
ayanamsha
|
string | No | Either "tropical" or "sayana" or "lahiri" | Either "tropical" or "sayana" or "lahiri" |
observation_point
|
string | No | Geocentric positions are calculated with respect to the center of Earth. Topocentric positions are calculated with respect to the actual given place | Either "topocentric" or "geocentric" |
Request Example
{
"year": 2022,
"month": 8,
"date": 11,
"hours": 6,
"minutes": 0,
"seconds": 0,
"latitude": 17.38333,
"longitude": 78.4666,
"timezone": 5.5,
"config": {
"observation_point": "topocentric",
"ayanamsha": "lahiri"
}
}
Response Examples
Example responses returned by this API.
{
"statusCode": 200,
"output": "\"{\\\"1\\\": {\\\"number\\\": 34, \\\"name\\\": \\\"Garija\\\", \\\"karana_left_percentage\\\": 1.233294604134727, \\\"completion\\\": \\\"2025-08-11 10:33:56\\\"}, \\\"2\\\": {\\\"number\\\": 35, \\\"name\\\": \\\"Vanija\\\", \\\"completion\\\": \\\"2025-08-11 21:39:15\\\"}, \\\"3\\\": {\\\"number\\\": 36, \\\"name\\\": \\\"Vishti\\\", \\\"completion\\\": \\\"2025-08-12 08:41:03\\\"}}\""
}
Code Examples
Use the following examples to integrate this API into your application.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://json.freeastrologyapi.com/karana-durations',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"year": 2025,
"month": 8,
"date": 11,
"hours": 10,
"minutes": 25,
"seconds": 43,
"latitude": 17.68009,
"longitude": 83.20161,
"timezone": 5.5,
"config": {
"observation_point": "geocentric",
"ayanamsha": "lahiri"
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'x-api-key: YOUR_API_KEY_HERE'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
import json
url = "https://json.freeastrologyapi.com/karana-durations"
payload = json.dumps({
"year": 2025,
"month": 8,
"date": 11,
"hours": 10,
"minutes": 25,
"seconds": 43,
"latitude": 17.68009,
"longitude": 83.20161,
"timezone": 5.5,
"config": {
"observation_point": "geocentric",
"ayanamsha": "lahiri"
}
})
headers = {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY_HERE'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://json.freeastrologyapi.com/karana-durations',
'headers': {
'Content-Type': 'application/json',
'x-api-key': 'YOUR_API_KEY_HERE'
},
body: JSON.stringify({
"year": 2025,
"month": 8,
"date": 11,
"hours": 10,
"minutes": 25,
"seconds": 43,
"latitude": 17.68009,
"longitude": 83.20161,
"timezone": 5.5,
"config": {
"observation_point": "geocentric",
"ayanamsha": "lahiri"
}
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});