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"
}
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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());Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.