MENU navbar-image

Introduction

Vedic astrology calculation API powered by the Swiss Ephemeris.

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Account

Usage and credit balance

requires authentication

Current credit balance and the most recent API calls for the authenticated account.

Example request:
curl --request GET \
    --get "http://127.0.0.1:8765/api/v1/account/usage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/account/usage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
 

{
    "data": {
        "plan": "free",
        "plan_credits_remaining": 68,
        "topup_credits_remaining": 0,
        "total_credits_remaining": 68,
        "plan_reset_at": "2026-09-09T20:10:51.000000Z",
        "recent_usage": [
            {
                "endpoint": "western.synastry",
                "credits_charged": 3,
                "http_status": 200,
                "response_time_ms": 23,
                "created_at": "2026-08-11T17:04:02.000000Z"
            },
            {
                "endpoint": "vedic.muhurat.finder",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 24,
                "created_at": "2026-08-11T17:03:45.000000Z"
            },
            {
                "endpoint": "vedic.muhurat.inauspicious-periods",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 34,
                "created_at": "2026-08-11T17:03:45.000000Z"
            },
            {
                "endpoint": "western.natal",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 22,
                "created_at": "2026-08-11T17:03:44.000000Z"
            },
            {
                "endpoint": "western.transit",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 27,
                "created_at": "2026-08-11T17:03:44.000000Z"
            },
            {
                "endpoint": "vedic.transit",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 18,
                "created_at": "2026-08-11T17:03:43.000000Z"
            },
            {
                "endpoint": "vedic.varga",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 18,
                "created_at": "2026-08-11T17:03:43.000000Z"
            },
            {
                "endpoint": "vedic.navamsa",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 64,
                "created_at": "2026-08-11T17:03:42.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 16,
                "created_at": "2026-08-11T16:34:38.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 0,
                "http_status": 422,
                "response_time_ms": 7,
                "created_at": "2026-08-11T16:34:38.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 60,
                "created_at": "2026-08-11T16:34:38.000000Z"
            },
            {
                "endpoint": "vedic.dosha.mangal",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 29,
                "created_at": "2026-08-11T16:25:20.000000Z"
            },
            {
                "endpoint": "numerology.report",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 14,
                "created_at": "2026-08-11T16:23:17.000000Z"
            },
            {
                "endpoint": "vedic.muhurat.hora",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 19,
                "created_at": "2026-08-11T16:23:16.000000Z"
            },
            {
                "endpoint": "vedic.muhurat.choghadiya",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 23,
                "created_at": "2026-08-11T16:23:15.000000Z"
            },
            {
                "endpoint": "vedic.yoga",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 21,
                "created_at": "2026-08-11T16:23:14.000000Z"
            },
            {
                "endpoint": "vedic.dosha.sade-sati",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 13,
                "created_at": "2026-08-11T16:23:14.000000Z"
            },
            {
                "endpoint": "vedic.dosha.kaal-sarp",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 18,
                "created_at": "2026-08-11T16:23:13.000000Z"
            },
            {
                "endpoint": "vedic.dosha.mangal",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 20,
                "created_at": "2026-08-11T16:23:13.000000Z"
            },
            {
                "endpoint": "vedic.nakshatra",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 37,
                "created_at": "2026-08-11T16:23:12.000000Z"
            },
            {
                "endpoint": "vedic.ascendant",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 19,
                "created_at": "2026-08-11T16:23:12.000000Z"
            },
            {
                "endpoint": "vedic.moon-sign",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 15,
                "created_at": "2026-08-11T16:23:12.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 42,
                "created_at": "2026-08-10T20:49:17.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 0,
                "http_status": 422,
                "response_time_ms": 15,
                "created_at": "2026-08-10T20:12:40.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 0,
                "http_status": 422,
                "response_time_ms": 10,
                "created_at": "2026-08-10T20:12:15.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 0,
                "http_status": 422,
                "response_time_ms": 24,
                "created_at": "2026-08-10T20:12:14.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 44,
                "created_at": "2026-08-10T20:08:15.000000Z"
            },
            {
                "endpoint": "vedic.dasha",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 22,
                "created_at": "2026-08-10T19:58:46.000000Z"
            },
            {
                "endpoint": "vedic.matching",
                "credits_charged": 3,
                "http_status": 200,
                "response_time_ms": 17,
                "created_at": "2026-08-10T19:58:46.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 13,
                "created_at": "2026-08-10T19:58:46.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 67,
                "created_at": "2026-08-10T19:58:45.000000Z"
            },
            {
                "endpoint": "vedic.kundli",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 17,
                "created_at": "2026-08-10T19:58:45.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 60,
                "created_at": "2026-08-10T16:31:47.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 14,
                "created_at": "2026-08-10T16:27:12.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 15,
                "created_at": "2026-08-10T16:27:12.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 13,
                "created_at": "2026-08-10T16:27:11.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 15,
                "created_at": "2026-08-10T16:27:11.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 16,
                "created_at": "2026-08-10T16:27:11.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 26,
                "created_at": "2026-08-10T16:27:10.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 16,
                "created_at": "2026-08-10T16:27:10.000000Z"
            },
            {
                "endpoint": "vedic.panchang",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 15,
                "created_at": "2026-08-10T16:27:10.000000Z"
            },
            {
                "endpoint": "vedic.matching",
                "credits_charged": 3,
                "http_status": 200,
                "response_time_ms": 14,
                "created_at": "2026-08-10T16:27:02.000000Z"
            },
            {
                "endpoint": "vedic.kundli",
                "credits_charged": 2,
                "http_status": 200,
                "response_time_ms": 33,
                "created_at": "2026-08-10T16:27:01.000000Z"
            },
            {
                "endpoint": "vedic.kundli",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 24,
                "created_at": "2026-08-10T16:25:05.000000Z"
            },
            {
                "endpoint": "account.usage",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 17,
                "created_at": "2026-08-10T16:24:51.000000Z"
            },
            {
                "endpoint": "account.api-keys.index",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 14,
                "created_at": "2026-08-10T16:24:51.000000Z"
            },
            {
                "endpoint": "account.api-keys.store",
                "credits_charged": 1,
                "http_status": 201,
                "response_time_ms": 16,
                "created_at": "2026-08-10T16:24:51.000000Z"
            },
            {
                "endpoint": "vedic.planets",
                "credits_charged": 1,
                "http_status": 200,
                "response_time_ms": 33,
                "created_at": "2026-08-10T16:24:40.000000Z"
            }
        ]
    }
}
 

Request      

GET api/v1/account/usage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

List API keys

requires authentication

Lists the authenticated account's API keys. The raw key value is never returned here - only the prefix, shown once at creation time, is kept for identification.

Example request:
curl --request GET \
    --get "http://127.0.0.1:8765/api/v1/account/api-keys" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/account/api-keys"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 2,
            "name": "second key",
            "key_prefix": "ak_test_00000000",
            "environment": "test",
            "is_active": true,
            "last_used_at": null,
            "revoked_at": null,
            "created_at": "2026-08-10T16:24:51.000000Z"
        },
        {
            "id": 1,
            "name": "Default key",
            "key_prefix": "ak_live_00000000",
            "environment": "live",
            "is_active": true,
            "last_used_at": "2026-08-12T19:35:23.000000Z",
            "revoked_at": null,
            "created_at": "2026-08-10T16:24:25.000000Z"
        }
    ]
}
 

Request      

GET api/v1/account/api-keys

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create an API key

requires authentication

Creates a new API key for the authenticated account. The raw key is returned exactly once in this response - store it now, it cannot be retrieved again.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/account/api-keys" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"My server\",
    \"environment\": \"live\"
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/account/api-keys"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "My server",
    "environment": "live"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/account/api-keys

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

A label to identify this key. Example: My server

environment   string  optional    

optional live or test. Defaults to live. Example: live

Revoke an API key

requires authentication

Revokes one of the authenticated account's own API keys. Cannot revoke keys belonging to other accounts.

Example request:
curl --request DELETE \
    "http://127.0.0.1:8765/api/v1/account/api-keys/2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/account/api-keys/2"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/account/api-keys/{apiKey_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

apiKey_id   integer     

The ID of the apiKey. Example: 2

Billing

Subscribe to a plan

requires authentication

Starts a subscription checkout for the authenticated account. Returns a hosted Razorpay checkout URL - the subscription only becomes active once payment completes there and Razorpay confirms it via webhook.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/billing/subscriptions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"plan_code\": \"starter\"
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/billing/subscriptions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "plan_code": "starter"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/billing/subscriptions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

plan_code   string     

The subscription_plans.code to subscribe to. Example: starter

Cancel a subscription

requires authentication

Cancels one of the authenticated account's own subscriptions at the Razorpay gateway.

Example request:
curl --request DELETE \
    "http://127.0.0.1:8765/api/v1/billing/subscriptions/16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/billing/subscriptions/16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/billing/subscriptions/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the subscription. Example: 16

Buy a credit top-up

requires authentication

Creates a hosted Razorpay payment page to purchase extra credits (roll over, never expire). Credits are granted once Razorpay confirms payment via webhook, not immediately.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/billing/topups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"credits\": 500
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/billing/topups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "credits": 500
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/billing/topups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

credits   integer     

Number of credits to purchase, minimum 10. Example: 500

Numerology

Numerology report

requires authentication

Pythagorean numerology: life path, destiny, soul urge and personality numbers. Pure calculation from name and birthdate - no ephemeris involved.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/numerology/report" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"full_name\": \"John Smith\",
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/numerology/report"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "full_name": "John Smith",
    "year": 1990,
    "month": 5,
    "day": 15
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/numerology/report

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

full_name   string     

Full name as given at birth. Example: John Smith

year   integer     

Birth year. Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

Vedic Astrology

Planetary positions

requires authentication

Sidereal (Lahiri ayanamsa) positions of the 9 Vedic grahas for a given birth date, time and place.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/planets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/planets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/planets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT (not local time). Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Birth chart (D1 Kundli)

requires authentication

Full sidereal D1 Rasi chart: ascendant, midheaven, all 12 house cusps and planetary placements.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/chart/kundli" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"house_system\": \"P\"
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/chart/kundli"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "house_system": "P"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/chart/kundli

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT (not local time). Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

house_system   string  optional    

optional Single-letter house system code (P=Placidus, K=Koch, E=Equal, W=Whole Sign). Defaults to P. Example: P

Vimshottari dasha

requires authentication

120-year Vimshottari mahadasha timeline from birth, with antardasha sub-periods for each mahadasha.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/dasha/vimshottari" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/dasha/vimshottari"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/dasha/vimshottari

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT (not local time). Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Daily panchang

requires authentication

Tithi, nakshatra, yoga, karana and vara (weekday) for a given date, time and place.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/panchang" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/panchang"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/panchang

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Year (Gregorian calendar). Example: 1990

month   integer     

Month, 1-12. Example: 5

day   integer     

Day, 1-31. Example: 15

hour   integer     

Hour, 0-23, in UT/GMT (not local time). Example: 9

minute   integer  optional    

optional Minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Place latitude in decimal degrees. Example: 28.6139

longitude   number     

Place longitude in decimal degrees. Example: 77.209

Kundli matching (Ashtakoot)

requires authentication

8-factor (Ashtakoot) guna milan compatibility score, out of 36, between a boy's and girl's birth details.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/matching/ashtakoot" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"boy\": {
        \"year\": 1990,
        \"month\": 5,
        \"day\": 15,
        \"hour\": 9,
        \"minute\": 30,
        \"latitude\": 28.6139,
        \"longitude\": 77.209
    },
    \"girl\": {
        \"year\": 1992,
        \"month\": 8,
        \"day\": 20,
        \"hour\": 6,
        \"minute\": 0,
        \"latitude\": 19.076,
        \"longitude\": 72.8777
    }
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/matching/ashtakoot"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "boy": {
        "year": 1990,
        "month": 5,
        "day": 15,
        "hour": 9,
        "minute": 30,
        "latitude": 28.6139,
        "longitude": 77.209
    },
    "girl": {
        "year": 1992,
        "month": 8,
        "day": 20,
        "hour": 6,
        "minute": 0,
        "latitude": 19.076,
        "longitude": 72.8777
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/matching/ashtakoot

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

boy   object     

Boy's birth details.

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

girl   object     

Girl's birth details.

year   integer     

Birth year (Gregorian calendar). Example: 1992

month   integer     

Birth month, 1-12. Example: 8

day   integer     

Birth day, 1-31. Example: 20

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 6

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 0

latitude   number     

Birth place latitude in decimal degrees. Example: 19.076

longitude   number     

Birth place longitude in decimal degrees. Example: 72.8777

Birth nakshatra

requires authentication

Moon's nakshatra, pada and lord only - lighter than a full chart when that's all you need.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/nakshatra" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/nakshatra"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/nakshatra

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Moon sign (Rashi)

requires authentication

Sidereal Moon sign only.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/moon-sign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/moon-sign"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/moon-sign

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Ascendant (Lagna)

requires authentication

Sidereal ascendant only - no house cusps or planets.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/ascendant" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"house_system\": \"P\"
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/ascendant"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "house_system": "P"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/ascendant

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

house_system   string  optional    

optional Single-letter house system code. Defaults to P. Example: P

Mangal Dosha check

requires authentication

Checks Mars placement from the Ascendant and from the Moon for Mangal (Kuja) Dosha.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/dosha/mangal" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/dosha/mangal"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/dosha/mangal

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Kaal Sarp Dosha check

requires authentication

Checks whether all seven classical planets fall on one side of the Rahu-Ketu axis.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/dosha/kaal-sarp" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/dosha/kaal-sarp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/dosha/kaal-sarp

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Sade Sati check

requires authentication

Checks whether transiting Saturn is in the 12th, 1st or 2nd sign from the natal Moon (the ~7.5 year Sade Sati period), as of a given transit date (defaults to today).

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/dosha/sade-sati" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"transit_year\": 2026,
    \"transit_month\": 8,
    \"transit_day\": 11
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/dosha/sade-sati"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "transit_year": 2026,
    "transit_month": 8,
    "transit_day": 11
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/dosha/sade-sati

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

transit_year   integer  optional    

optional Year to check the transit at. Defaults to today. Example: 2026

transit_month   integer  optional    

optional Month to check the transit at, 1-12. Defaults to today. Example: 8

transit_day   integer  optional    

optional Day to check the transit at, 1-31. Defaults to today. Example: 11

Choghadiya

requires authentication

The 8 day and 8 night auspicious/inauspicious time periods for a date and place.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/choghadiya" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 2026,
    \"month\": 8,
    \"day\": 11,
    \"hour\": 0,
    \"minute\": 0,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/choghadiya"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 2026,
    "month": 8,
    "day": 11,
    "hour": 0,
    "minute": 0,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/muhurat/choghadiya

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Year (Gregorian calendar). Example: 2026

month   integer     

Month, 1-12. Example: 8

day   integer     

Day, 1-31. Example: 11

hour   integer     

Unused for this endpoint but required by the shared request shape - pass any value. Example: 0

minute   integer  optional    

optional Unused. Example: 0

latitude   number     

Place latitude in decimal degrees. Example: 28.6139

longitude   number     

Place longitude in decimal degrees. Example: 77.209

Hora (planetary hours)

requires authentication

The 12 day and 12 night planetary hours for a date and place, in Chaldean order.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/hora" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 2026,
    \"month\": 8,
    \"day\": 11,
    \"hour\": 0,
    \"minute\": 0,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/hora"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 2026,
    "month": 8,
    "day": 11,
    "hour": 0,
    "minute": 0,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/muhurat/hora

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Year (Gregorian calendar). Example: 2026

month   integer     

Month, 1-12. Example: 8

day   integer     

Day, 1-31. Example: 11

hour   integer     

Unused for this endpoint but required by the shared request shape - pass any value. Example: 0

minute   integer  optional    

optional Unused. Example: 0

latitude   number     

Place latitude in decimal degrees. Example: 28.6139

longitude   number     

Place longitude in decimal degrees. Example: 77.209

Rahu Kalam, Yamaganda, Gulika Kalam

requires authentication

The three daily inauspicious periods, each 1/8 of daylight, for a date and place.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/inauspicious-periods" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 2026,
    \"month\": 8,
    \"day\": 11,
    \"hour\": 0,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/inauspicious-periods"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 2026,
    "month": 8,
    "day": 11,
    "hour": 0,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/muhurat/inauspicious-periods

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Year (Gregorian calendar). Example: 2026

month   integer     

Month, 1-12. Example: 8

day   integer     

Day, 1-31. Example: 11

hour   integer     

Unused for this endpoint but required by the shared request shape - pass any value. Example: 0

latitude   number     

Place latitude in decimal degrees. Example: 28.6139

longitude   number     

Place longitude in decimal degrees. Example: 77.209

Muhurat finder

requires authentication

Daytime Choghadiya periods marked against Rahu Kalam/Yamaganda/Gulika Kalam overlap, so you can find windows that are both an auspicious Choghadiya and clear of all three. Does not account for tithi, nakshatra or purpose-specific muhurat rules.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/finder" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 2026,
    \"month\": 8,
    \"day\": 11,
    \"hour\": 0,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/muhurat/finder"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 2026,
    "month": 8,
    "day": 11,
    "hour": 0,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/muhurat/finder

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Year (Gregorian calendar). Example: 2026

month   integer     

Month, 1-12. Example: 8

day   integer     

Day, 1-31. Example: 11

hour   integer     

Unused for this endpoint but required by the shared request shape - pass any value. Example: 0

latitude   number     

Place latitude in decimal degrees. Example: 28.6139

longitude   number     

Place longitude in decimal degrees. Example: 77.209

Yoga detection

requires authentication

Checks for a small curated set of well-defined yogas (Gaja Kesari, Budhaditya, Chandra-Mangal).

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/yoga" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/yoga"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/yoga

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Divisional chart (Varga)

requires authentication

Classical Parashari divisional chart. Supported divisions: D2 (Hora), D3 (Drekkana), D7 (Saptamsa), D9 (Navamsa), D10 (Dashamsa), D12 (Dwadasamsa).

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/chart/varga" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"division\": 9,
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/chart/varga"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "division": 9,
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/chart/varga

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

division   integer     

Division number: 2, 3, 7, 9, 10 or 12. Example: 9

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Navamsa (D9) chart

requires authentication

The D9 divisional chart - marriage, spouse and dharma. Shortcut for POST /vedic/chart/varga with division=9, since it's the most requested divisional chart.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/chart/navamsa" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/chart/navamsa"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/chart/navamsa

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Transit (Gochar)

requires authentication

Current (or a given date's) transiting sidereal planets, placed relative to the natal Moon sign.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/transit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"transit_year\": 2026,
    \"transit_month\": 8,
    \"transit_day\": 11
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/transit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "transit_year": 2026,
    "transit_month": 8,
    "transit_day": 11
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/transit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

transit_year   integer  optional    

optional Year to check the transit at. Defaults to today. Example: 2026

transit_month   integer  optional    

optional Month to check the transit at, 1-12. Defaults to today. Example: 8

transit_day   integer  optional    

optional Day to check the transit at, 1-31. Defaults to today. Example: 11

Ashtakvarga

requires authentication

Bhinnashtakavarga (per-planet bindu strength across all 12 signs) for each of the 7 classical planets, plus Sarvashtakavarga (their sign-wise total). Every planet's total matches the classical constant except Venus - see the note field in the response for the known, disclosed one-bindu gap in that specific table.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/vedic/ashtakvarga" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/vedic/ashtakvarga"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/vedic/ashtakvarga

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

Western Astrology

Natal chart

requires authentication

Tropical natal chart: ascendant, midheaven, house cusps, planets (Sun through Pluto) and major aspects (conjunction, sextile, square, trine, opposition) between them.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/western/chart/natal" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"house_system\": \"P\"
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/western/chart/natal"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "house_system": "P"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/western/chart/natal

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

house_system   string  optional    

optional Single-letter house system code. Defaults to P. Example: P

Transits

requires authentication

Current (or a given date's) transiting tropical planets, with aspects to the natal planets.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/western/transit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 1990,
    \"month\": 5,
    \"day\": 15,
    \"hour\": 9,
    \"minute\": 30,
    \"latitude\": 28.6139,
    \"longitude\": 77.209,
    \"transit_year\": 2026,
    \"transit_month\": 8,
    \"transit_day\": 11
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/western/transit"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 9,
    "minute": 30,
    "latitude": 28.6139,
    "longitude": 77.209,
    "transit_year": 2026,
    "transit_month": 8,
    "transit_day": 11
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/western/transit

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

transit_year   integer  optional    

optional Year to check the transit at. Defaults to today. Example: 2026

transit_month   integer  optional    

optional Month to check the transit at, 1-12. Defaults to today. Example: 8

transit_day   integer  optional    

optional Day to check the transit at, 1-31. Defaults to today. Example: 11

Synastry

requires authentication

Cross-chart aspects between two people's tropical planets - the standard Western compatibility method.

Example request:
curl --request POST \
    "http://127.0.0.1:8765/api/v1/western/synastry" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"person_a\": {
        \"year\": 1990,
        \"month\": 5,
        \"day\": 15,
        \"hour\": 9,
        \"minute\": 30,
        \"latitude\": 28.6139,
        \"longitude\": 77.209
    },
    \"person_b\": {
        \"year\": 1992,
        \"month\": 8,
        \"day\": 20,
        \"hour\": 6,
        \"minute\": 0,
        \"latitude\": 19.076,
        \"longitude\": 72.8777
    }
}"
const url = new URL(
    "http://127.0.0.1:8765/api/v1/western/synastry"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "person_a": {
        "year": 1990,
        "month": 5,
        "day": 15,
        "hour": 9,
        "minute": 30,
        "latitude": 28.6139,
        "longitude": 77.209
    },
    "person_b": {
        "year": 1992,
        "month": 8,
        "day": 20,
        "hour": 6,
        "minute": 0,
        "latitude": 19.076,
        "longitude": 72.8777
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/western/synastry

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

person_a   object     

First person's birth details.

year   integer     

Birth year (Gregorian calendar). Example: 1990

month   integer     

Birth month, 1-12. Example: 5

day   integer     

Birth day, 1-31. Example: 15

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 9

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 30

latitude   number     

Birth place latitude in decimal degrees. Example: 28.6139

longitude   number     

Birth place longitude in decimal degrees. Example: 77.209

person_b   object     

Second person's birth details.

year   integer     

Birth year (Gregorian calendar). Example: 1992

month   integer     

Birth month, 1-12. Example: 8

day   integer     

Birth day, 1-31. Example: 20

hour   integer     

Birth hour, 0-23, in UT/GMT. Example: 6

minute   integer  optional    

optional Birth minute, 0-59, in UT/GMT. Defaults to 0. Example: 0

latitude   number     

Birth place latitude in decimal degrees. Example: 19.076

longitude   number     

Birth place longitude in decimal degrees. Example: 72.8777