API reference / Remedies & guidance
Remedies & guidance
Gemstone, rudraksha, nakshatra-vastu and Panch Pakshi guidance.
6 endpoints. Every endpoint is POST with a JSON body and your key in the Authorization header. Request schemas and examples come from the OpenAPI document; each example response was captured from the live engine and its data fields are a guide to the shape, not a contract.
Gemstone Details
POSTAvailable
https://api.96astro.com/v1/remedies/gem-detailsThe gemstone for one planet or sign: its planet and deity, colour, substitutes, metal, finger, day, weight, benefits, cautions and mantra.
- Credits
- 1 credit
- Input
- Specific input
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
planetstring | nullOptional | One of the nine grahas. Default: Allowed values: SunMoonMarsMercuryJupiterVenusSaturnRahuKetu Example: |
signstring | nullOptional | A sign; its lord's gemstone is returned. Default: Allowed values: AriesTaurusGeminiCancerLeoVirgoLibraScorpioSagittariusCapricornAquariusPisces |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
| Value | Meaning |
|---|---|
planet | By planet |
sign | By sign |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
lookup· objectplanet· stringplanet_deity· stringgemstone· stringsanskrit_name· stringcolor· stringsecondary_gems· array of stringmetal· stringfinger· stringday· stringweight· stringnakshatras· array of stringsigns· array of stringhouses· array of integerbenefits· array of stringcautions· array of stringmantra· stringmantra_repetitions· integerpuja_day· stringquality_indicators· array of stringhow_to_activate· string
Example request
curl -X POST https://api.96astro.com/v1/remedies/gem-details \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"planet": "Jupiter"
}'const response = await fetch("https://api.96astro.com/v1/remedies/gem-details", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"planet": "Jupiter"
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.gemDetails({
"planet": "Jupiter"
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/gem-details",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"planet": "Jupiter",
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.gem_details({
"planet": "Jupiter",
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/gem-details');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'planet' => 'Jupiter',
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"planet": "Jupiter"
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/gem-details", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"lookup": {
"planet": "Jupiter"
},
"planet": "Jupiter",
"planet_deity": "Brihaspati (Jupiter)",
"gemstone": "Yellow Sapphire",
"sanskrit_name": "Pukhraj",
"color": "Yellow / Golden Yellow",
"secondary_gems": [
"Citrine",
"Yellow Topaz",
"Heliodor"
],
"metal": "Gold",
"finger": "Index finger (right hand)",
"day": "Thursday",
"weight": "3–5 carats",
"nakshatras": [
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.
Gemstone Catalogue
POSTAvailable
https://api.96astro.com/v1/remedies/gem-details-allEvery planet's gemstone entry with substitutes, metal, finger, day, weight, nakshatras, signs, houses and benefits.
- Credits
- 1 credit
- Input
- No input
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
planetsarray of string | nullOptional | Only these planets; all nine when omitted. Default: Each item one of: SunMoonMarsMercuryJupiterVenusSaturnRahuKetu Limits: at most 9 items |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
gemstones· array of object
Example request
curl -X POST https://api.96astro.com/v1/remedies/gem-details-all \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"planets": [
"Sun",
"Moon"
]
}'const response = await fetch("https://api.96astro.com/v1/remedies/gem-details-all", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"planets": [
"Sun",
"Moon"
]
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.gemDetailsAll({
"planets": [
"Sun",
"Moon"
]
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/gem-details-all",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"planets": [
"Sun",
"Moon",
],
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.gem_details_all({
"planets": [
"Sun",
"Moon",
],
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/gem-details-all');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'planets' => [
'Sun',
'Moon',
],
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"planets": [
"Sun",
"Moon"
]
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/gem-details-all", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"gemstones": [
{
"planet": "Sun",
"planet_deity": "Surya (Sun God)",
"gemstone": "Ruby",
"sanskrit_name": "Manikya",
"color": "Red / Deep Pink",
"secondary_gems": [
"Red Garnet",
"Red Spinel",
"Red Tourmaline"
],
"metal": "Gold",
"finger": "Ring finger (right hand)",
"day": "Sunday",
"weight": "3–5 carats minimum",
"nakshatras": [
"Krittika",
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.
Rudraksha Recommendation
POSTAvailable
https://api.96astro.com/v1/remedies/rudrakshaRudraksha suggestions from any of lagna, Moon and Sun signs, dasha lord, birth date and weak planets: the primary mukhi and each recommendation with reasons.
- Credits
- 1 credit
- Input
- Specific input
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
lagna_signstring | nullOptional | Default: Allowed values: AriesTaurusGeminiCancerLeoVirgoLibraScorpioSagittariusCapricornAquariusPisces Example: |
moon_signstring | nullOptional | Default: Allowed values: AriesTaurusGeminiCancerLeoVirgoLibraScorpioSagittariusCapricornAquariusPisces Example: |
sun_signstring | nullOptional | Default: Allowed values: AriesTaurusGeminiCancerLeoVirgoLibraScorpioSagittariusCapricornAquariusPisces Example: |
dasha_lordstring | nullOptional | Running Vimshottari mahadasha lord. Default: Allowed values: SunMoonMarsMercuryJupiterVenusSaturnRahuKetu Example: |
birth_datestring | nullOptional | For the numerological root number. Default: Limits: format date Example: |
weak_planetsarray of stringOptional | Weak or afflicted planets. Each item one of: SunMoonMarsMercuryJupiterVenusSaturnRahuKetu Limits: at most 9 items |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
primary_mukhi· integerrecommendations· array of object
Example request
curl -X POST https://api.96astro.com/v1/remedies/rudraksha \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars"
]
}'const response = await fetch("https://api.96astro.com/v1/remedies/rudraksha", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars"
]
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.rudraksha({
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars"
]
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/rudraksha",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars",
],
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.rudraksha({
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars",
],
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/rudraksha');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'lagna_sign' => 'Capricorn',
'moon_sign' => 'Virgo',
'sun_sign' => 'Libra',
'dasha_lord' => 'Jupiter',
'birth_date' => '1990-10-18',
'weak_planets' => [
'Mars',
],
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"lagna_sign": "Capricorn",
"moon_sign": "Virgo",
"sun_sign": "Libra",
"dasha_lord": "Jupiter",
"birth_date": "1990-10-18",
"weak_planets": [
"Mars"
]
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/rudraksha", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"primary_mukhi": 3,
"recommendations": [
{
"mukhi": 3,
"name": "Teen Mukhi (3 Face)",
"planet": "Mars",
"deity": "Agni (Fire God) and Lord Brahma",
"mantra": "Om Kleem Namah",
"wearing_day": "Tuesday",
"metal": "Gold or Copper",
"color": "Brown",
"rarity": "Common",
"benefits": [
"Liberates from the karmic cycle and past life burdens.",
"Enhances energy, courage, ambition, and self-confidence.",
"Alleviates depression, inferiority complex, and self-doubt."
],
"who_should_wear": "Suitable for Aries/Scorpio ascendant, weak Mars, or those suffering from Mars-related issues.",
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.
Nakshatra Vastu
POSTAvailable
https://api.96astro.com/v1/remedies/nakshatra-vastuVastu guidance for a birth nakshatra (by name or number): door, sleep, work and cooking directions, colours, numbers, metal, zones and tips.
- Credits
- 1 credit
- Input
- Specific input
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
nakshatrastring | nullOptional | Default: Example: |
nakshatra_numberinteger | nullOptional | Default: Limits: minimum 1, maximum 27 |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
number· integernakshatra· stringlord· stringdeity· stringnature· stringenergy· stringvastu· object
Example request
curl -X POST https://api.96astro.com/v1/remedies/nakshatra-vastu \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nakshatra": "Chitra"
}'const response = await fetch("https://api.96astro.com/v1/remedies/nakshatra-vastu", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"nakshatra": "Chitra"
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.nakshatraVastu({
"nakshatra": "Chitra"
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/nakshatra-vastu",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"nakshatra": "Chitra",
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.nakshatra_vastu({
"nakshatra": "Chitra",
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/nakshatra-vastu');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'nakshatra' => 'Chitra',
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"nakshatra": "Chitra"
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/nakshatra-vastu", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"number": 14,
"nakshatra": "Chitra",
"lord": "Mars",
"deity": "Vishvakarma (Divine Architect)",
"nature": "mridu",
"energy": "Artistic & Precise",
"vastu": {
"door_direction": "West",
"sleep_direction": "South",
"work_direction": "South",
"cook_direction": "South-East",
"favorable_colors": [
"Bright Red",
"Black",
"Multicolor"
],
"unfavorable_colors": [
"Pale tones"
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.
Nakshatra Vastu Catalogue
POSTAvailable
https://api.96astro.com/v1/remedies/nakshatra-vastu-allThe nakshatra Vastu guidance for all 27 nakshatras.
- Credits
- 1 credit
- Input
- No input
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
nakshatrasarray of string | nullOptional | Only these; all 27 when omitted. Default: Limits: at most 27 items |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
nakshatras· array of object
Example request
curl -X POST https://api.96astro.com/v1/remedies/nakshatra-vastu-all \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nakshatras": [
"Ashwini",
"Chitra"
]
}'const response = await fetch("https://api.96astro.com/v1/remedies/nakshatra-vastu-all", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"nakshatras": [
"Ashwini",
"Chitra"
]
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.nakshatraVastuAll({
"nakshatras": [
"Ashwini",
"Chitra"
]
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/nakshatra-vastu-all",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"nakshatras": [
"Ashwini",
"Chitra",
],
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.nakshatra_vastu_all({
"nakshatras": [
"Ashwini",
"Chitra",
],
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/nakshatra-vastu-all');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'nakshatras' => [
'Ashwini',
'Chitra',
],
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"nakshatras": [
"Ashwini",
"Chitra"
]
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/nakshatra-vastu-all", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"nakshatras": [
{
"number": 1,
"nakshatra": "Ashwini",
"lord": "Ketu",
"deity": "Ashwini Kumaras",
"nature": "laghu",
"energy": "Active & Healing",
"vastu": {
"door_direction": "East",
"sleep_direction": "South",
"work_direction": "North",
"cook_direction": "South-East",
"favorable_colors": [
"White",
"Red"
],
"unfavorable_colors": [
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.
Panch Pakshi
POSTAvailable
https://api.96astro.com/v1/remedies/panch-pakshiPanch Pakshi for a day at a place: the ruling and dying bird with each yama for day and night, and the bird and activity at the given moment.
- Credits
- 1 credit
- Input
- Date and place
- Output
- JSON
- Delivery
- Direct response
- Languages
- English; translated term names with
labels
| Header | Value and description |
|---|---|
AuthorizationRequired | Bearer YOUR_API_KEYYour sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead. |
Content-TypeRequired | application/jsonThe body is JSON. |
Idempotency-KeyOptional | <unique string>Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters) |
| Field | Description |
|---|---|
datetimestringRequired | Local date and time, ISO 8601 without offset. Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$ Example: |
timezonestring | nullOptional | IANA time zone, e.g. Asia/Kolkata Default: Example: |
utc_offsetstring | nullOptional | Fixed offset such as +05:30, if no IANA zone is known Default: |
latitudenumberRequired | Limits: minimum -90, maximum 90 Example: |
longitudenumberRequired | Limits: minimum -180, maximum 180 Example: |
labelsstringOptional | Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language. Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur |
Response · fields in data
Inferred from the example response: a guide to the shape, not a contract.
panchang_day· stringweekday· stringpaksha· stringutc_offset· stringsunrise· stringsunset· stringnext_sunrise· stringat_moment· objectday· objectnight· object
Example request
curl -X POST https://api.96astro.com/v1/remedies/panch-pakshi \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209
}'const response = await fetch("https://api.96astro.com/v1/remedies/panch-pakshi", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209
}),
});
const { data, meta } = await response.json();
console.log(data);import { Astro96Client } from "@96astro/api";
const astro = new Astro96Client({ apiKey: "YOUR_API_KEY" });
const { data, meta } = await astro.remedies.panchPakshi({
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209
});
console.log(data);import requests
response = requests.post(
"https://api.96astro.com/v1/remedies/panch-pakshi",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209,
},
timeout=60,
)
response.raise_for_status()
data = response.json()["data"]
print(data)from astro96_api import Astro96Client
astro = Astro96Client(api_key="YOUR_API_KEY")
res = astro.remedies.panch_pakshi({
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209,
})
print(res.data)<?php
$ch = curl_init('https://api.96astro.com/v1/remedies/panch-pakshi');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'datetime' => '2026-10-13T10:00:00',
'timezone' => 'Asia/Kolkata',
'latitude' => 28.6139,
'longitude' => 77.209,
]),
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result['data']);package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"datetime": "2026-10-13T10:00:00",
"timezone": "Asia/Kolkata",
"latitude": 28.6139,
"longitude": 77.209
}`)
req, err := http.NewRequest("POST", "https://api.96astro.com/v1/remedies/panch-pakshi", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.Status, string(out))
}Example response
{
"data": {
"panchang_day": "2026-10-13",
"weekday": "Tuesday",
"paksha": "shukla",
"utc_offset": "+05:30",
"sunrise": "2026-10-13T06:21:00",
"sunset": "2026-10-13T17:54:06",
"next_sunrise": "2026-10-14T06:21:36",
"at_moment": {
"datetime": "2026-10-13T10:00:00",
"period": "day",
"yama_number": 2,
"yama_bird": "Vulture",
"yama_activity": "Walking",
"sub_period": {
"bird": "Peacock",
"activity": "Eating",
"relationship_to_yama_bird": "Enemy",
"start": "2026-10-13T09:53:33",
…Captured from the live engine with a sandbox key (so credits_used is 0) and trimmed: long arrays keep their first items.
Error responses
- 400invalid_request
- 401invalid_key, expired_key
- 402payment_required
- 403account_suspended
- 404not_found
- 409idempotency_conflict
- 413payload_too_large
- 422invalid_request, unsupported_language
- 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
- 500computation_failed
- 502unavailable
- 503unavailable
- 504deadline_exceeded
Errors are never charged. What each status means and what to do: errors.