Skip to content
API96Astro API

API reference / Birth charts & planets

Birth charts & planets

Sidereal birth charts, planet positions, divisional and special-lagna charts, rendered chart images and chart markers.

12 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.

Full Birth Chart Bundle

POSTAvailable

https://api.96astro.com/v1/vedic-charts/birth-chart-bundle

The core birth chart in one call: ayanamsha, ascendant, planets, the D1 and D9 charts, a Moon and Avakhada summary, Vimshottari periods and the Manglik check. Chart images: use chart-image-styles.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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

Options (52)
ValueMeaning
sayanaSayana (tropical, no ayanamsha)
krishnamurti_newKrishnamurti New (KP)
lahiriLahiri (Chitrapaksha) - default
lahiri_1940Lahiri 1940
lahiri_vp285Lahiri Vp285
lahiri_icrcLahiri Icrc
lahiri_rashtriyaLahiri Rashtriya
ramanB.V. Raman
krishnamurtiKrishnamurti (KP)
krishnamurti_vp291Krishnamurti Vp291
yukteshwarSri Yukteshwar
bhasinJ.N. Bhasin
faganFagan-Bradley
true_chitraTrue Chitra
true_pushyaTrue Pushya
true_mulaTrue Mula
true_revatiTrue Revati
true_sheoranTrue Sheoran
ss_citraSs Citra
ss_revatiSs Revati
ushashashiUshashashi
nadiNadi
surya_siddhantaSurya Siddhanta
surya_siddhanta_msunSurya Siddhanta Msun
aryabhataAryabhata
aryabhata_msunAryabhata Msun
aryabhata_522Aryabhata 522
babyl_brittonBabyl Britton
babyl_etpscBabyl Etpsc
babyl_huberBabyl Huber
babyl_kugler1Babyl Kugler1
babyl_kugler2Babyl Kugler2
babyl_kugler3Babyl Kugler3
deluceDeluce
djwhal_khulDjwhal Khul
hipparchosHipparchos
sassanianSassanian
valens_moonValens Moon
aldebaran_15tauAldebaran 15Tau
galcent_0sagGalcent 0Sag
galcent_rgilbrandGalcent Rgilbrand
galcent_cochraneGalcent Cochrane
galcent_mula_wilhelmGalcent Mula Wilhelm
galequ_iau1958Galequ Iau1958
galequ_trueGalequ True
galequ_mulaGalequ Mula
galequ_fiorenzaGalequ Fiorenza
galalign_mardyksGalalign Mardyks
j1900J1900
j2000J2000
b1950B1950
customCustom offset at J2000

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • ayanamsha · object
  • ascendant · object
  • planets · array of object
  • charts · object
  • summary · object
  • vimshottari · object
  • manglik · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "ascendant": {
      "sign": "Capricorn",
      "sign_number": 10,
      "sign_lord": "Saturn",
      "degree": 23.8935,
      "degree_dms": "23-53-37",
      "longitude": 293.8935,
      "nakshatra": "Dhanishta",
      "nakshatra_number": 23,
      "nakshatra_lord": "Mars",
      "pada": 1
    },
    "planets": [
  …

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.

Avakhada Chakra & Birth Summary

POSTAvailable

https://api.96astro.com/v1/vedic-charts/avakhada-birth-summary

Ascendant, Moon sign and nakshatra with pada, sidereal and tropical Sun sign, the Avakhada attributes (varna, yoni, gana, nadi and more), the birth tithi/yoga/karana, the sunrise panchang and sunrise/sunset times.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • ascendant · object
  • moon · object
  • sun_sign · object
  • avakhada · object
  • panchang_at_birth · object
  • panchang_at_sunrise · object
  • sunrise · string
  • sunset · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "ascendant": {
      "sign": "Capricorn",
      "sign_lord": "Saturn",
      "nakshatra": "Dhanishta",
      "pada": 1
    },
    "moon": {
      "sign": "Virgo",
      "sign_lord": "Mercury",
      "nakshatra": "Chitra",
      "nakshatra_lord": "Mars",
      "pada": 2
    },
  …

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.

Planet Positions

POSTAvailable

https://api.96astro.com/v1/vedic-charts/planet-positions

Sidereal longitude, sign and sign lord, nakshatra, nakshatra lord and pada, house, speed, retrograde and combust flags for the Ascendant, the nine grahas and Uranus, Neptune and Pluto.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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

Options (52)
ValueMeaning
sayanaSayana (tropical, no ayanamsha)
krishnamurti_newKrishnamurti New (KP)
lahiriLahiri (Chitrapaksha) - default
lahiri_1940Lahiri 1940
lahiri_vp285Lahiri Vp285
lahiri_icrcLahiri Icrc
lahiri_rashtriyaLahiri Rashtriya
ramanB.V. Raman
krishnamurtiKrishnamurti (KP)
krishnamurti_vp291Krishnamurti Vp291
yukteshwarSri Yukteshwar
bhasinJ.N. Bhasin
faganFagan-Bradley
true_chitraTrue Chitra
true_pushyaTrue Pushya
true_mulaTrue Mula
true_revatiTrue Revati
true_sheoranTrue Sheoran
ss_citraSs Citra
ss_revatiSs Revati
ushashashiUshashashi
nadiNadi
surya_siddhantaSurya Siddhanta
surya_siddhanta_msunSurya Siddhanta Msun
aryabhataAryabhata
aryabhata_msunAryabhata Msun
aryabhata_522Aryabhata 522
babyl_brittonBabyl Britton
babyl_etpscBabyl Etpsc
babyl_huberBabyl Huber
babyl_kugler1Babyl Kugler1
babyl_kugler2Babyl Kugler2
babyl_kugler3Babyl Kugler3
deluceDeluce
djwhal_khulDjwhal Khul
hipparchosHipparchos
sassanianSassanian
valens_moonValens Moon
aldebaran_15tauAldebaran 15Tau
galcent_0sagGalcent 0Sag
galcent_rgilbrandGalcent Rgilbrand
galcent_cochraneGalcent Cochrane
galcent_mula_wilhelmGalcent Mula Wilhelm
galequ_iau1958Galequ Iau1958
galequ_trueGalequ True
galequ_mulaGalequ Mula
galequ_fiorenzaGalequ Fiorenza
galalign_mardyksGalalign Mardyks
j1900J1900
j2000J2000
b1950B1950
customCustom offset at J2000

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • ayanamsha · object
  • node · string
  • house_system · string
  • ascendant · object
  • planets · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "node": "true",
    "house_system": "whole_sign",
    "ascendant": {
      "sign": "Capricorn",
      "sign_number": 10,
      "sign_lord": "Saturn",
      "degree": 23.8935,
      "degree_dms": "23-53-37",
      "longitude": 293.8935,
      "nakshatra": "Dhanishta",
      "nakshatra_number": 23,
      "nakshatra_lord": "Mars",
      "pada": 1
  …

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.

Divisional Charts (D1-D300)

POSTAvailable

https://api.96astro.com/v1/vedic-charts/divisional-charts

Up to 23 divisional (varga) charts, D1 to D300: each with its ascendant, planet placements and twelve houses with sign and occupants. Pick charts with `charts`; images: use chart-image-styles.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

chartsarray of string | nullOptional

Which vargas to return, e.g. ["D9", "D10"]. All 23 when omitted.

Default: null

Each item one of: D1D2D3D4D6D7D8D9D10D12D16D20D24D27D30D40D45D60D81D108D144D150D300

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

Options (23)
ValueMeaning
d1Rasi (D1)
d2Hora (D2)
d3Drekkana (D3)
d4Chaturthamsha (D4)
d6Shashthamsha (D6)
d7Saptamsha (D7)
d8Ashtamsha (D8)
d9Navamsa (D9)
d10Dashamsha (D10)
d12Dwadashamsha (D12)
d16Shodashamsha (D16)
d20Vimshamsha (D20)
d24Chaturvimshamsha (D24)
d27Saptavimshamsha / Bhamsha (D27)
d30Trimshamsha (D30)
d40Khavedamsha (D40)
d45Akshavedamsha (D45)
d60Shashtiamsha (D60)
d81Nava-Navamsha (D81)
d108Ashtottaramsha (D108)
d144Dwadash-Dwadashamsha (D144)
d150Nadiamsha (D150)
d300D300

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • ayanamsha · object
  • node · string
  • charts · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "node": "true",
    "charts": [
      {
        "code": "D9",
        "name": "Navamsa",
        "ascendant": {
          "sign": "Leo",
          "sign_number": 5,
          "degree": 5.0425
        },
        "planets": [
          {
            "name": "Sun",
  …

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.

Special Lagna Charts

POSTAvailable

https://api.96astro.com/v1/vedic-charts/special-lagna-charts

Charts cast from the special lagnas (Hora, Ghati, Bhava, Indu, Sree, Pranapada, Varnada): each lagna's own sign and degree, the planets' houses from it and the twelve houses.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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

Options (7)
ValueMeaning
hora-lagnaHora Lagna
ghati-lagnaGhati Lagna
bhava-lagnaBhava Lagna
indu-lagnaIndu Lagna
sree-lagnaSree Lagna
pranapada-lagnaPranapada Lagna
varnada-lagnaVarnada Lagna

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • ayanamsha · object
  • charts · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "charts": [
      {
        "id": "hora_lagna",
        "name": "Hora Lagna",
        "lagna": {
          "sign": "Gemini",
          "sign_number": 3,
          "degree": 4.06
        },
        "planets": [
          {
            "name": "Sun",
            "sign": "Libra",
  …

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.

Bhav Chalit Chart & Bhava Table

POSTAvailable

https://api.96astro.com/v1/vedic-charts/bhav-chalit

Bhava (house) table with start, middle and end of each house, the planets in each bhava, and every planet's sign house next to its bhava house.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • house_system · string
  • bhavas · array of object
  • planets · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "house_system": "sripati",
    "bhavas": [
      {
        "bhava": 1,
        "start": {
          "longitude": 281.11,
          "sign": "Capricorn",
          "degree": 11.11
        },
        "middle": {
          "longitude": 293.89,
          "sign": "Capricorn",
          "degree": 23.89
  …

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.

Chandra Kundali (Moon Chart)

POSTAvailable

https://api.96astro.com/v1/vedic-charts/chandra-kundali

The chart re-read with the Moon's sign as the first house: the Ascendant's and each planet's house from the Moon, and the twelve houses with their occupants.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • moon_sign · string
  • ascendant · object
  • planets · array of object
  • houses · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "moon_sign": "Virgo",
    "ascendant": {
      "sign": "Capricorn",
      "degree": 23.8935,
      "house": 5
    },
    "planets": [
      {
        "name": "Sun",
        "sign": "Libra",
        "degree": 0.9951,
        "house": 2
      },
  …

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.

Chakra Charts

POSTAvailable

https://api.96astro.com/v1/vedic-charts/chakra-charts

Kalachakra, Kota, Sudarshan and Shoola chakras as SVG drawings built from the birth positions, with the point positions (longitude, nakshatra, pada) used to draw them.

Credits
3 credits
Input
Birth details
Output
JSON, SVG
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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

Options (4)
ValueMeaning
kalachakraKalachakra
kotaKota Chakra
sudarshanSudarshan Chakra
shoolaShoola Chakra

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • ayanamsha · object
  • charts · array of object
  • points · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "charts": [
      {
        "id": "kalachakra",
        "title": "Kalachakra",
        "svg": "<SVG document, 14240 characters; omitted from this example>"
      },
      {
        "id": "kota",
        "title": "Kota Chakra",
        "svg": "<SVG document, 11430 characters; omitted from this example>"
      },
      {
        "id": "sudarshan",
  …

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.

Upagrahas, Special Lagnas & Sphutas

POSTAvailable

https://api.96astro.com/v1/vedic-charts/upagrahas-sphutas

Positions of the Gulika group, the Sun-based upagrahas (Dhooma and others), special lagnas, the sphutas (Prana, Deha, Mrityu and others) and the MC and IC, plus the chara karakas.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • chara_karakas · object
  • gulikadi · array of object
  • sun_based · array of object
  • special_lagnas · array of object
  • sphutas · array of object
  • angles · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "chara_karakas": {
      "darakaraka": "Sun",
      "amatyakaraka": "Moon",
      "bhratrikaraka": "Mars",
      "putrakaraka": "Mercury",
      "pitrikaraka": "Jupiter",
      "atmakaraka": "Venus",
      "gnatikaraka": "Saturn",
      "matrikaraka": "Rahu"
    },
    "gulikadi": [
      {
        "name": "Gulika",
  …

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.

Drekkana & 22nd Drekkana

POSTAvailable

https://api.96astro.com/v1/vedic-charts/drekkana-22nd

The D3 sign and lord of the Ascendant and the Moon, and the 22nd drekkana from each.

Credits
3 credits
Input
Birth details
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • ascendant · object
  • moon · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "ascendant": {
      "sign": "Capricorn",
      "degree": 23.8935,
      "drekkana": {
        "number": 3,
        "sign": "Virgo",
        "lord": "Mercury"
      },
      "twenty_second_drekkana": {
        "sign": "Aries",
        "lord": "Mars"
      }
    },
  …

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.

Chart Image Styles

POSTAvailable

https://api.96astro.com/v1/vedic-charts/chart-image-styles

Chart drawings as SVG in one style per call (north, south, east or western) for the charts you name (D1 to D300, chalit, chandra_kundali, kp, karakamsha, swamsha).

Credits
3 credits
Input
Birth details
Output
JSON, SVG
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

stylestringOptional

Chart drawing style.

Default: north

Allowed values: northsoutheastwestern

Example: south

chartsarray of string | nullOptional

Which charts, e.g. ["D1", "D9", "chalit"]. D1 when omitted.

Default: null

Limits: at most 40 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

Options (4)
ValueMeaning
northNorth Indian
southSouth Indian
eastEast Indian
westernWestern wheel

Response · fields in data

Inferred from the example response: a guide to the shape, not a contract.

  • images · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "images": [
      {
        "chart": "D1",
        "style": "south",
        "format": "svg",
        "svg": "<SVG document, 10548 characters; omitted from this example>"
      },
      {
        "chart": "D9",
        "style": "south",
        "format": "svg",
        "svg": "<SVG document, 10418 characters; omitted from this example>"
      }
    ]
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
    "language": "en"
  }
}

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.

D1 Markers (Vargottama, Pushkara)

POSTAvailable

https://api.96astro.com/v1/vedic-charts/d1-markers

Vargottama, Pushkara Navamsa and Pushkara Bhaga flags for the Ascendant and each planet, with its navamsa sign and the Pushkara Bhaga degree of its sign.

Credits
3 credits
Input
Specific input
Output
JSON
Delivery
Direct response
Languages
English; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The 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)

Body · application/json
FieldDescription
datetimestringRequired

Local date and time, ISO 8601 without offset, e.g. 1990-10-18T14:30:00

Limits: format local-date-time, pattern ^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(:\d{2}(\.\d{1,6})?)?$

Example: 1990-10-18T14:30:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30, if no IANA zone is known

Default: null

latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

ayanamshastringOptional

Default: lahiri

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed value: en

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

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.

  • ayanamsha · object
  • lagna_vargottama · boolean
  • markers · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": {
      "id": "lahiri",
      "name": "N.C. Lahiri",
      "degrees": 23.7285
    },
    "lagna_vargottama": false,
    "markers": [
      {
        "name": "Ascendant",
        "sign": "Capricorn",
        "degree": 23.8936,
        "navamsa_sign": "Leo",
        "vargottama": false,
        "pushkara_navamsa": false,
        "pushkara_bhaga": false,
        "pushkara_bhaga_degree": 14
      },
      {
  …

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.