---
title: "Full birth chart"
method: POST
path: "/horoscope"
tags: ["Birth charts & matching"]
---

# Full birth chart

`POST /horoscope`

## Request

- Base URL: `https://jagannatha-hora-359167915530.europe-west1.run.app`
- URL: `https://jagannatha-hora-359167915530.europe-west1.run.app/horoscope`
- Auth: none declared

Every calculation for one birth moment in a single response: 23 divisional charts, nakshatras and padas, yogas, doshas, chara karakas, sahams, upagrahas, special lagnas, sphutas, arudhas, planetary states, Shad Bala and the other strengths, Ashtakavarga, graha and rasi dashas, Saturn transits and longevity. The response is large (several megabytes of JSON, sent compressed), so cache it.

The same inputs return the same chart until `engine_revision` changes, so cache by input and `engine_revision`.

With `calculation_type` `ss` the chart also carries a `surya_siddhanta` section. When a setting cannot be applied (for example a `chart_method` a chart does not have), the chart carries `request_notes` saying so.

Rate limit: 30 requests a minute per IP.

## Request body

- object
  - `date` string, required: Birth date, YYYY-MM-DD. Years 1800 to 2100.
  - `time` string, required: Birth time, HH:MM:SS on a 24-hour clock.
  - `place` string, required: Birth place name, echoed in the response. Coordinates decide the calculation.
  - `latitude` number, required: Decimal degrees, north positive. Places beyond about 66.5° north or south (inside the polar circles) are rejected with 422.
  - `longitude` number, required: Decimal degrees, -180 to 180, east positive.
  - `timezone` number, required: UTC offset in hours at birth, -12 to 14 (5.5 for India). By default the API works out the historically correct offset, including daylight saving, from the coordinates and date; see timezone_mode.
  - `elevation` number: Metres above sea level.
  - `gender` 'male' | 'female': Optional. A few classical yogas depend on gender; when it is omitted, those yogas are left out rather than guessed.
  - `ayanamsa_mode` 'LAHIRI' | 'TRUE_CITRA' | 'TRUE_LAHIRI' | 'KP' | 'FAGAN' | 'RAMAN' | 'USHASHASHI' | 'YUKTESHWAR' | 'SURYASIDDHANTA' | 'SURYASIDDHANTA_MSUN' | 'ARYABHATA' | 'ARYABHATA_MSUN' | 'SS_CITRA' | 'TRUE_REVATI' | 'SS_REVATI' | 'TRUE_PUSHYA' | 'TRUE_MULA' | 'KP-SENTHIL' | 'SENTHIL' | 'SIDM_USER': Ayanamsa (sidereal zodiac) to use. Case-insensitive. A value the API does not recognise as one of the listed modes is refused with HTTP 422 and a message listing them; it is never replaced by LAHIRI.
  - `ayanamsa_value` number: Your own ayanamsa in degrees, -30 to 30. Required with ayanamsa_mode SIDM_USER, which is refused with 422 without it.
  - `calculation_type` 'drik' | 'ss': drik for modern (drik) positions, ss for Surya Siddhanta.
  - `node_type` 'mean' | 'true': Rahu and Ketu as the mean or the true lunar node.
  - `bhava_madhya_method` 1 | 2 | 3 | 4 | 5: House system for the bhava chart: 1 equal houses with the lagna at the middle, 2 equal houses with the lagna at the start, 3 Sripati, 4 KP (Placidus cusps), 5 whole sign.
  - `timezone_mode` 'auto' | 'file': auto works out the historical offset from the coordinates and date, falling back to timezone where no zone is known. file uses timezone exactly as sent. The response reports the offset used.
  - `language` 'en' | 'hi' | 'ka' | 'ta' | 'te': Language for names in the response: English, Hindi, Kannada, Tamil or Telugu.
  - `pravesha_type` 0 | 1 | 2: 0 natal chart, 1 annual (varsha pravesha), 2 tithi pravesha.
  - `years` integer: Year number for annual charts, 1 to 120.
  - `months` integer: Month number for monthly charts, 1 to 12.
  - `sixty_hours` integer: Sixty-hour period number for hora progressions, 1 to 1000.
  - `divisional_chart_factor` integer: The divisional chart that chart_method applies to (1 = D-1, 9 = D-9, and so on).
  - `chart_method` integer: Construction method for that divisional chart, 1 to 6; how many exist depends on the chart. An unavailable method falls back to 1 and is reported in the response.
  - `base_rasi` integer: For custom divisional charts, which this endpoint does not return. 0 to 11.
  - `count_from_end_of_sign` boolean: For custom divisional charts, which this endpoint does not return.
  - `varnada_method` integer: Method for the varnada outputs (house varnadas and the varnada dasha), 1 to 4. Higher values fall back to 1 and are reported in the response.
  - `tamil_month_method` 0 | 1 | 2 | 3: How the Tamil month is reckoned, 0 to 3: 0 an alternative traditional rule, 1 starts at sunset, 2 at 10 AM, 3 at midday UTC.
  - `kali_start_year` 1 | 13: Sixty-year cycle naming: 1 starts at Prabhava (South Indian), 13 at Pramaadhi (North Indian).

## Response `200`

Success

- object
  - `birth_details` object: The inputs as used, including the UTC offset applied and where it came from. Keys: date, time, place, latitude, longitude, timezone, timezone_used, timezone_derived, timezone_source, request_settings.
  - `horoscope` object: The chart, one key per section. Keys: calendar_info, bhava_chart, ayanamsa_value, julian_day, divisional_charts, nakshatra_pada, amsa_rulers, yogas, doshas, chara_karakas, sahams, upagrahas, special_lagnas, house_varnadas, graha_arudhas, surya_arudhas, chandra_arudhas, house_relationships, planetary_states, shad_bala, shad_bala_required, bhava_bala, other_bala, vimsopaka_bala, vaiseshikamsa_bala, shashtiamsa_rulers, ashtakavarga, arudha_padhas, sphuta, graha_dashas, rasi_dashas, saturn_transits, longevity_prediction.
  - `engine_revision` unknown

## Other responses

- `400`: The input cannot be used for this calculation. The detail says why.
- `422`: A field is missing or out of range. The detail says which.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/jagannathahora/apis/vedic-astrology-calculation-api.md) · [All operations](https://skmtc.dev/jagannathahora/apis/vedic-astrology-calculation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jagannathahora/apis/vedic-astrology-calculation-api/revisions/bb90e41e2ba1?raw)
