Tarabala and Chandrabala
Tarabala and Chandrabala for any date, with the Moon's star and sign change times. For every Moon nakshatra and Moon sign in the range (1 to 31 civil days) it gives the exact start and end, the tara counted from the birth nakshatra with its name and whether it is favourable, and the Moon's house from the natal Moon sign with the chandrabala verdict (Muhurta Chintamani rules). Needs the birth Moon, so a birth time makes it exact; without one the natal Moon may be a star off.
Endpoint
POST /v1/astro/tarabala
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 (unless utc_offset is given). For dates before the zone adopted a standard time, the birthplace's local mean time (longitude / 15 hours) is used. |
| utc_offset | string | null | No | Optional explicit UTC offset of the birth time, as ±HH:MM or ±HH:MM:SS (e.g. '+04:51:31' for Bombay mean time). Overrides the offset timezone would give. Use it when the birth record states the offset, or for historical local times the IANA database cannot represent. |
| ayanamsa | string | No | Sidereal ayanamsa mode used in calculations |
| target_date | string | null | No | First day of the range (YYYY-MM-DD, civil day in timezone). Defaults to today in the birth timezone. |
| days | integer | No | Number of civil days to cover, 1 to 31. |
| target_timezone | string | null | No | IANA timezone that defines the civil days. Defaults to the birth timezone. The Moon's star and sign do not depend on place; only the day boundaries do. |
Example request
- curl
- Python
- TypeScript
curl -X POST "https://api.asterwise.com/v1/astro/tarabala" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Arjun Mehta","date":"1985-11-12","time":"06:45","latitude":19.076,"longitude":72.8777,"timezone":"Asia/Kolkata","target_date":"2026-01-01","days":7}'
import asterwise
from asterwise.api.advanced_api import AdvancedApi
from asterwise.models.tarabala_request import TarabalaRequest
configuration = asterwise.Configuration(
host="https://api.asterwise.com",
access_token="YOUR_API_KEY",
)
request = TarabalaRequest(
name="Arjun Mehta",
date="1985-11-12",
time="06:45",
latitude=19.076,
longitude=72.8777,
timezone="Asia/Kolkata",
target_date="2026-01-01",
days=7,
)
with asterwise.ApiClient(configuration) as client:
api = AdvancedApi(client)
result = api.tarabala(tarabala_request=request)
print(result)
import { createClient, createConfig, tarabala } from 'asterwise';
const client = createClient(createConfig({
baseUrl: 'https://api.asterwise.com',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
}));
const result = await tarabala({
client,
body: {
"name": "Arjun Mehta",
"date": "1985-11-12",
"time": "06:45",
"latitude": 19.076,
"longitude": 72.8777,
"timezone": "Asia/Kolkata",
"target_date": "2026-01-01",
"days": 7
},
});
console.log(result.data);
Example response
Example response omitted — live API call did not return HTTP 200.
Response fields
| Field | Type | Description |
|---|---|---|
| success | boolean | True if the request succeeded |
| message | string | Human-readable status message |
| data | object | |
| data.birth_time_provided | boolean | False when no birth time was given: the natal Moon then comes from a sunrise chart and may sit in a neighbouring nakshatra, so every tara below may be off by one. |
| data.start_date | string | |
| data.end_date | string | |
| data.timezone | string | |
| data.range_start | string | |
| data.range_end | string | |
| data.range_start_utc | string | |
| data.range_end_utc | string | |
| data.natal | object | |
| data.natal.moon_nakshatra_index | integer | |
| data.natal.moon_nakshatra | string | |
| data.natal.moon_sign_index | integer | |
| data.natal.moon_sign | string | |
| data.moon_nakshatras | array[object] | Every Moon nakshatra overlapping the range, in order, with its tara. Times are unclipped: the first span may start before the range. |
| data.moon_nakshatras[].index | integer | |
| data.moon_nakshatras[].number | integer | |
| data.moon_nakshatras[].name | string | |
| data.moon_nakshatras[].start | string | When the Moon entered this nakshatra. ISO 8601 local time with UTC offset. |
| data.moon_nakshatras[].end | string | When it leaves. ISO 8601 local time with UTC offset. |
| data.moon_nakshatras[].start_utc | string | |
| data.moon_nakshatras[].end_utc | string | |
| data.moon_nakshatras[].tarabala | object | |
| data.moon_nakshatras[].tarabala.count_from_birth | integer | Count from the birth nakshatra, both inclusive. |
| data.moon_nakshatras[].tarabala.tara_number | integer | |
| data.moon_nakshatras[].tarabala.cycle | integer | Which round of nine the count falls in. |
| data.moon_nakshatras[].tarabala.cycle_name | string | |
| data.moon_nakshatras[].tarabala.name | string | Tara name: Janma, Sampat, Vipat, Kshema, Pratyak, Sadhana, Naidhana, Mitra, Ati-Mitra (Anujanma/Trijanma for the 10th and 19th). |
| data.moon_nakshatras[].tarabala.meaning | string | |
| data.moon_nakshatras[].tarabala.is_favorable | boolean | True for Sampat, Kshema, Sadhana, Mitra and Ati-Mitra. |
| data.moon_nakshatras[].tarabala.is_moon_in_birth_nakshatra | boolean | |
| data.moon_signs | array[object] | Every Moon sign overlapping the range, with its chandrabala. |
| data.moon_signs[].index | integer | |
| data.moon_signs[].name | string | Sidereal sign (Sanskrit name). |
| data.moon_signs[].start | string | |
| data.moon_signs[].end | string | |
| data.moon_signs[].start_utc | string | |
| data.moon_signs[].end_utc | string | |
| data.moon_signs[].chandrabala | object | |
| data.moon_signs[].chandrabala.moon_house_from_natal | integer | The Moon's sign counted from the natal Moon sign. |
| data.moon_signs[].chandrabala.is_favorable | boolean | True for houses 1, 3, 6, 7, 10 and 11. |
| data.moon_signs[].chandrabala.is_ashtama | boolean | True in the 8th: Ashtama Chandra, the one to avoid. |
| data.rules | object | The classical rules used, in plain words. |
Errors
| Code | Description | Reference |
|---|---|---|
| api_key_invalid | Invalid API key format. | api_key_invalid |
| api_key_missing | API key is missing. Include it in the Authorization header as 'Bearer YOUR_KEY'. | api_key_missing |
| api_key_not_found | The provided API key was not found. Verify the key in your Asterwise dashboard. | api_key_not_found |
| api_key_revoked | This API key has been revoked. | api_key_revoked |
| burst_limit_exceeded | Too many requests per minute. Please slow down. | burst_limit_exceeded |
| internal_error | Something went wrong on our end. Please try again, or contact [email protected] if the problem persists. Include your request_id when contacting support. | internal_error |
| ip_rate_limit_exceeded | Too many requests from this IP address. Please slow down. | ip_rate_limit_exceeded |
| monthly_usage_limit_exceeded | Monthly API call limit reached. Upgrade your plan to continue. | monthly_usage_limit_exceeded |
| payload_too_large | Request body exceeds maximum allowed size of 64KB. | payload_too_large |
| subscription_expired | Your subscription has expired. Please renew at asterwise.com/dashboard to continue. | subscription_expired |
| validation_error | The request couldn't be processed. See the 'details' field for specific field-level issues. | validation_error |