Gemstone Recommendations
Recommends gemstones based on the natal chart. Primary gemstone strengthens the Lagna lord. Secondary gemstone supports the Atmakaraka (soul planet). Returns contraindicated gemstones (debilitated, combust, dusthana lords, dual lagna/8th). Request JSON follows BirthInput: name, date, time, location or latitude/longitude/timezone, ayanamsa.
Endpoint
POST /v1/astro/gemstones
Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
| location | string | null | No | City name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required. |
| name | string | No | Person name associated with the birth record |
| date | string | Yes | Birth date in YYYY-MM-DD format |
| time | string | null | No | Birth time in HH:MM 24-hour format. If omitted, sunrise chart is used as fallback. |
| latitude | number | null | No | Latitude. Required if location not provided. |
| longitude | number | null | No | Longitude. Required if location not provided. |
| timezone | string | null | No | IANA timezone. Required if location not provided. |
| ayanamsa | string | No | Sidereal ayanamsa mode used in calculations |
Example request
- curl
- Python
- TypeScript
curl -X POST "https://api.asterwise.com/v1/astro/gemstones" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"1985-11-12","time":"06:45","latitude":19.076,"longitude":72.8777,"timezone":"Asia/Kolkata"}'
import asterwise
from asterwise.api.astrology_api import AstrologyApi
from asterwise.models.gemstone_request import GemstoneRequest
configuration = asterwise.Configuration(
host="https://api.asterwise.com",
access_token="YOUR_API_KEY",
)
request = GemstoneRequest(
date="1985-11-12",
time="06:45",
latitude=19.076,
longitude=72.8777,
timezone="Asia/Kolkata",
)
with asterwise.ApiClient(configuration) as client:
api = AstrologyApi(client)
result = api.gemstones(gemstone_request=request)
print(result)
import { createClient, createConfig, gemstones } from 'asterwise';
const client = createClient(createConfig({
baseUrl: 'https://api.asterwise.com',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
}));
const result = await gemstones({
client,
body: {
"date": "1985-11-12",
"time": "06:45",
"latitude": 19.076,
"longitude": 72.8777,
"timezone": "Asia/Kolkata"
},
});
console.log(result.data);
Example response
Response fields
| Field | Type | Description |
|---|---|---|
| success | boolean | True if the request succeeded |
| message | string | Human-readable status message |
| data | object | |
| data.primary | object | |
| data.secondary | object | null | |
| data.yogakaraka_gem | object | null | |
| data.fifth_lord_gem | object | null | |
| data.ninth_lord_gem | object | null | |
| data.atmakaraka_gem | object | null | |
| data.contraindicated | array[object] | |
| data.note | string |
Errors
| Code | Description | Reference |
|---|---|---|
| authentication_failed | Missing or invalid API key. | authentication_failed |
| ephemeris_unavailable | Upstream ephemeris service error. | ephemeris_unavailable |
| insufficient_tier | API key tier does not include this endpoint. | insufficient_tier |
| internal_error | Unexpected server error. | internal_error |
| ip_rate_limit_exceeded | Too many requests in a short window. | ip_rate_limit_exceeded |
| payload_too_large | Request body exceeds the size limit. | payload_too_large |
| resource_not_found | Referenced resource was not found. | resource_not_found |
| validation_error | Request body failed schema validation. | validation_error |