Skip to content
API96Astro API

API reference / Location astrology

Location astrology

Astrocartography, relocation, city ranking and place-based timing for a birth chart.

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

Astrocartography Lines

POSTAvailable

https://api.96astro.com/v1/location-astrology/acg-lines

All planetary ASC/MC/DC/IC lines for a birth moment as map line segments, plus aspect lines, zenith points, parans and midheaven sign bands.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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 for the Rahu/Ketu lines: 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.

  • coordinates · string
  • node · string
  • ayanamsha · string
  • greenwich_sidereal_time_hours · number
  • lines · array of object
  • aspect_lines · array of object
  • midheaven_signs · object
  • zenith_points · array of object
  • parans · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "coordinates": "Points are [longitude, latitude] in signed decimal degrees (east and north positive), GeoJSON order.",
    "node": "true",
    "ayanamsha": "lahiri",
    "greenwich_sidereal_time_hours": 10.772952,
    "lines": [
      {
        "planet": "Sun",
        "angle": "MC",
        "theme": "Career, recognition, public visibility, leadership.",
        "segments": [
          [
            [
              41.3104,
              -85
            ],
            [
              41.3104,
              -84
  …

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.

Transit Astrocartography Lines

POSTAvailable

https://api.96astro.com/v1/location-astrology/transit-acg-lines

Planetary ASC/MC/DC/IC lines for any moment as map line segments.

Credits
1 credit
Input
Date
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 of the moment, 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: 2026-10-13T12:00:00

timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

utc_offsetstring | nullOptional

Fixed offset such as +05:30

Default: null

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.

  • coordinates · string
  • node · string
  • julian_day_ut · number
  • greenwich_sidereal_time_hours · number
  • lines · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "coordinates": "Points are [longitude, latitude] in signed decimal degrees (east and north positive), GeoJSON order.",
    "node": "mean",
    "julian_day_ut": 2461326.770833,
    "greenwich_sidereal_time_hours": 7.955955,
    "lines": [
      {
        "planet": "Sun",
        "angle": "MC",
        "theme": "Career, recognition, public visibility, leadership.",
        "segments": [
          [
            [
              79.0745,
              -85
            ],
            [
              79.0745,
              -84
  …

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.

Relocated Chart

POSTAvailable

https://api.96astro.com/v1/location-astrology/relocation-chart

The chart recast for a new place: angles, house cusps with their lords, and each planet's house there and at the birthplace.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

placeobjectRequired

Where the chart is relocated to.

place.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 35.6762

place.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 139.6503

place.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

Example: Tokyo

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

house_systemstringOptional

Default: placidus

Allowed values: placiduskochwhole_signequalcampanusregiomontanusporphyrymorinus

topocentricbooleanOptional

Parallax-correct positions for an observer at the new place.

Default: false

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 (1)
ValueMeaning
placidusPlacidus (default)

Response · fields in data

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

  • place · object
  • distance_from_birthplace_km · number
  • ayanamsha · string
  • node · string
  • house_system · string
  • topocentric · boolean
  • angles · object
  • house_cusps · array of object
  • planets · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "place": {
      "latitude": 35.6762,
      "longitude": 139.6503,
      "label": "Tokyo"
    },
    "distance_from_birthplace_km": 5834,
    "ayanamsha": "lahiri",
    "node": "true",
    "house_system": "placidus",
    "topocentric": false,
    "angles": {
      "ascendant": {
        "longitude": 22.3889,
        "sign": "Aries",
        "degree": 22.3889,
        "sign_lord": "Mars",
        "nakshatra": "Bharani",
        "pada": 3,
  …

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.

Best Cities for a Goal

POSTAvailable

https://api.96astro.com/v1/location-astrology/rank-cities

Ranks catalogue cities for one life goal: score, distance, rising and midheaven signs with their lords, and the reasons for 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

Allowed values: lahirikrishnamurtiraman

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

goalstringOptional

The life goal to score places for.

Default: career

Allowed values: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsartsbusiness

Example: career

regionstringOptional

Limit the catalogue to one region.

Default: world

Allowed values: worldasiaeuropeamericasafricaoceania

Example: asia

limitintegerOptional

How many places to return, best first.

Default: 10

Limits: minimum 1, maximum 100

Example: 5

max_city_rankinteger | nullOptional

Only catalogue cities of this importance rank or better (1 = global hubs).

Default: null

Limits: minimum 1, maximum 9

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 (16)
ValueMeaning
careerCareer
marriageMarriage
wealthWealth
spiritualSpiritual
healthHealth
educationEducation
peacePeace of mind
childrenChildren
propertyProperty
romanceRomance
fameFame
foreignForeign settlement
travelTravel
politicsPolitics
artsArts
businessBusiness

Response · fields in data

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

  • goal · string
  • region · string
  • formula · array of object
  • cities_in_catalogue · integer
  • cities_scored · integer
  • cities · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "goal": "career",
    "region": "asia",
    "formula": [
      {
        "house": 10,
        "weight": 0.4
      },
      {
        "house": 11,
        "weight": 0.3
      },
      {
        "house": 6,
        "weight": 0.2
      }
    ],
    "cities_in_catalogue": 246,
    "cities_scored": 108,
  …

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.

Dasha-Aware City Ranking

POSTAvailable

https://api.96astro.com/v1/location-astrology/dasha-optimize

City ranking for one goal weighted by the dashas running on a date, with the running Vimshottari, Char and Yogini periods.

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

Allowed values: lahirikrishnamurtiraman

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

goalstringOptional

The life goal to score places for.

Default: career

Allowed values: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsartsbusiness

Example: career

regionstringOptional

Limit the catalogue to one region.

Default: world

Allowed values: worldasiaeuropeamericasafricaoceania

limitintegerOptional

How many places to return, best first.

Default: 10

Limits: minimum 1, maximum 100

max_city_rankinteger | nullOptional

Only catalogue cities of this importance rank or better (1 = global hubs).

Default: null

Limits: minimum 1, maximum 9

dasha_systemstringOptional

Which running dasha weights the ranking.

Default: vimshottari

Allowed values: vimshottaricharyoginicombined

Example: combined

as_ofstring | nullOptional

Date whose running dasha is used (YYYY-MM-DD). Today in UTC when omitted.

Default: null

Limits: format date

Example: 2026-10-13

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
vimshottariVimshottari
charChar
yoginiYogini
combinedCombined

Response · fields in data

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

  • as_of · string
  • dasha_system · string
  • running · object
  • goal · string
  • region · string
  • formula · array of object
  • cities_in_catalogue · integer
  • cities_scored · integer
  • cities · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "as_of": "2026-10-13",
    "dasha_system": "combined",
    "running": {
      "vimshottari": {
        "mahadasha": "Jupiter",
        "antardasha": "Mars",
        "mahadasha_end": "2029-05-30",
        "antardasha_end": "2027-01-04"
      },
      "char": {
        "sign": "Leo",
        "lord": "Sun",
        "end": "2031-10-18"
      },
      "yogini": {
        "yogini": "Mangala",
        "lord": "Moon",
        "end": "2027-06-16"
  …

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.

KP Verdict for a Place

POSTAvailable

https://api.96astro.com/v1/location-astrology/location-kp-analysis

KP cusps and planets with star, sub and sub-sub lords and significations for one place and date, the running dashas, and a verdict per goal.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

placeobjectRequired
place.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 35.6762

place.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 139.6503

place.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

Example: Tokyo

as_ofstring | nullOptional

Date whose running dasha is read (YYYY-MM-DD). Today in UTC when omitted.

Default: null

Limits: format date

Example: 2026-10-13

goalsarray of string | nullOptional

Goals to judge; all sixteen when omitted.

Default: null

Each item one of: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsartsbusiness

Limits: at least 1 item

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.

  • place · object
  • distance_from_birthplace_km · number
  • as_of · string
  • running · object
  • cusps · array of object
  • planets · array of object
  • verdicts · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "place": {
      "latitude": 35.6762,
      "longitude": 139.6503,
      "label": "Tokyo"
    },
    "distance_from_birthplace_km": 5834,
    "as_of": "2026-10-13",
    "running": {
      "vimshottari": {
        "mahadasha": "Jupiter",
        "antardasha": "Mars",
        "mahadasha_end": "2029-05-30",
        "antardasha_end": "2027-01-04"
      },
      "char": {
        "sign": "Leo",
        "lord": "Sun",
        "end": "2031-10-18"
  …

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.

Compare Two Places

POSTAvailable

https://api.96astro.com/v1/location-astrology/compare-locations

Scores two places per goal under the same birth and date, with each place's angles and KP verdicts, the totals and the overall winner.

Credits
1 credit
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

This capability is computed with Lahiri only.

Default: lahiri

Allowed value: 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

place_aobjectRequired
place_a.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 35.6762

place_a.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 139.6503

place_a.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

Example: Tokyo

place_bobjectRequired
place_b.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 51.5074

place_b.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: -0.1278

place_b.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

Example: London

as_ofstring | nullOptional

Date whose running dasha is read (YYYY-MM-DD). Today in UTC when omitted.

Default: null

Limits: format date

Example: 2026-10-13

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.

  • as_of · string
  • running · object
  • distance_between_km · number
  • place_a · object
  • place_b · object
  • per_goal · object
  • total_a · number
  • total_b · number
  • overall_winner · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "as_of": "2026-10-13",
    "running": {
      "vimshottari": {
        "mahadasha": "Jupiter",
        "antardasha": "Mars",
        "mahadasha_end": "2029-05-30",
        "antardasha_end": "2027-01-04"
      }
    },
    "distance_between_km": 9559,
    "place_a": {
      "place": {
        "latitude": 35.6762,
        "longitude": 139.6503,
        "label": "Tokyo"
      },
      "ascendant": {
        "longitude": 22.3889,
  …

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.

Char Dasha Schedule (Phaladeepika)

POSTAvailable

https://api.96astro.com/v1/location-astrology/location-char-dasha

Twelve-row Char dasha schedule with each sign's lord, years and dates, and the period running on a date.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

as_ofstring | nullOptional

Date for `current` (YYYY-MM-DD). Today in UTC when omitted.

Default: null

Limits: format date

Example: 2026-10-13

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.

  • method · string
  • ayanamsha · string
  • ascendant_sign · string
  • ascendant_sign_type · string
  • total_years · integer
  • periods · array of object
  • current · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "method": "phaladeepika",
    "ayanamsha": "lahiri",
    "ascendant_sign": "Capricorn",
    "ascendant_sign_type": "movable",
    "total_years": 75,
    "periods": [
      {
        "sign": "Capricorn",
        "sign_type": "movable",
        "lord": "Saturn",
        "lord_sign": "Sagittarius",
        "years": 11,
        "start": "1990-10-18",
        "end": "2001-10-17"
      },
      {
        "sign": "Aquarius",
        "sign_type": "fixed",
  …

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.

Yogini Dasha Schedule

POSTAvailable

https://api.96astro.com/v1/location-astrology/location-yogini-dasha

Lifetime Yogini schedule from the birth nakshatra with each period's lord, years and dates, and the period running on a date.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

as_ofstring | nullOptional

Date for `current` (YYYY-MM-DD). Today in UTC when omitted.

Default: null

Limits: format date

Example: 2026-10-13

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 · string
  • janma_nakshatra · string
  • janma_yogini · string
  • janma_lord · string
  • balance_at_birth_years · number
  • cycle_years · integer
  • periods · array of object
  • current · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "ayanamsha": "lahiri",
    "janma_nakshatra": "Chitra",
    "janma_yogini": "Mangala",
    "janma_lord": "Moon",
    "balance_at_birth_years": 0.659,
    "cycle_years": 36,
    "periods": [
      {
        "yogini": "Mangala",
        "lord": "Moon",
        "years": 0.659,
        "start": "1990-10-18",
        "end": "1991-06-16"
      },
      {
        "yogini": "Pingala",
        "lord": "Sun",
        "years": 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.

Solar Return Moment

POSTAvailable

https://api.96astro.com/v1/location-astrology/solar-return

The sidereal solar return instant for a target year, returned as birth data for reuse.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

yearintegerRequired

Year of the solar return.

Limits: minimum 1001, maximum 2200

Example: 2026

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.

  • year · integer
  • ayanamsha · string
  • natal_sun_longitude · number
  • julian_day_ut · number
  • moment_utc · string
  • minutes_off_birthday · number
  • moment_local · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "year": 2026,
    "ayanamsha": "lahiri",
    "natal_sun_longitude": 180.9951,
    "julian_day_ut": 2461332.101061,
    "moment_utc": "2026-10-18T14:25:32Z",
    "minutes_off_birthday": 325.5,
    "moment_local": {
      "datetime": "2026-10-18T19:55:32",
      "timezone": "Asia/Kolkata",
      "utc_offset": "+05:30"
    }
  },
  "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.

Davison Relationship Chart

POSTAvailable

https://api.96astro.com/v1/location-astrology/davison-chart

Time and place midpoint of two births, returned as birth data for reuse.

Credits
1 credit
Input
Two people's 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
person_aobjectRequired

For routes whose engine ignores the ayanamsha (geometry, or Lahiri fixed).

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

person_a.timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

person_a.utc_offsetstring | nullOptional

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

Default: null

person_a.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

person_a.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

person_a.ayanamshastringOptional

This capability is computed with Lahiri only.

Default: lahiri

Allowed value: lahiri

person_a.languagestringOptional

Output language (ISO 639-1). Each capability lists the languages it supports.

Default: en

person_bobjectRequired

For routes whose engine ignores the ayanamsha (geometry, or Lahiri fixed).

person_b.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: 1992-03-02T05:47:00

person_b.timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

person_b.utc_offsetstring | nullOptional

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

Default: null

person_b.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 19.0767

person_b.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 72.8767

person_b.ayanamshastringOptional

This capability is computed with Lahiri only.

Default: lahiri

Allowed value: lahiri

person_b.languagestringOptional

Output language (ISO 639-1). Each capability lists the languages it supports.

Default: en

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.

  • julian_day_ut · number
  • moment_utc · string
  • latitude · number
  • longitude · number
  • years_apart · number
  • distance_apart_km · number
  • as_birth · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "julian_day_ut": 2448433.193403,
    "moment_utc": "1991-06-25T16:38:30Z",
    "latitude": 23.860427,
    "longitude": 74.962943,
    "years_apart": 1.37,
    "distance_apart_km": 1148,
    "as_birth": {
      "datetime": "1991-06-25T16:38:30",
      "utc_offset": "+00:00",
      "latitude": 23.860427,
      "longitude": 74.962943
    }
  },
  "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.

Navatara by Place

POSTAvailable

https://api.96astro.com/v1/location-astrology/location-navatara

The tara of the nakshatras rising and culminating at a place, counted from the birth nakshatra, with a reading; or catalogue cities ranked by it.

Credits
1 credit
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

Allowed values: lahirikrishnamurtiraman

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

variantstringOptional

One place, or every catalogue city ranked.

Default: place

Allowed values: placeranking

placeobject | nullOptional

For `place`; the birthplace when omitted.

Default: null

place.latitudenumberRequired

Limits: minimum -90, maximum 90

place.longitudenumberRequired

Limits: minimum -180, maximum 180

place.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

limitintegerOptional

For `ranking`: how many cities to return.

Default: 20

Limits: minimum 1, maximum 100

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 (2)
ValueMeaning
placeSingle place (lat/lon)
rankingCity ranking

Response · fields in data

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

  • variant · string
  • rule · string
  • place · object
  • janma_nakshatra · string
  • rising · object
  • reading · string
  • midheaven · object
  • angles_agree · boolean

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "variant": "place",
    "rule": "tara = (rising nakshatra - janma nakshatra) mod 9",
    "place": {
      "latitude": 28.6139,
      "longitude": 77.209,
      "label": null
    },
    "janma_nakshatra": "Chitra",
    "rising": {
      "nakshatra": "Dhanishta",
      "sign": "Capricorn",
      "tara": {
        "number": 1,
        "name": "Janma",
        "alternate_name": null,
        "nature": "Neutral / Tense",
        "score": 40,
        "nakshatra_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.

Region Analysis

POSTAvailable

https://api.96astro.com/v1/location-astrology/zone-analysis

Scores a drawn polygon or bounding box from the cities inside it, with lines and strongest planets.

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

This capability is computed with Lahiri only.

Default: lahiri

Allowed value: 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

polygonarray of objects | nullOptional

Region outline, 3+ vertices.

Default: null

Limits: 3 to 500 items

polygon[].latitudenumberRequired

Limits: minimum -90, maximum 90

polygon[].longitudenumberRequired

Limits: minimum -180, maximum 180

bboxobject | nullOptional

Default: null

bbox.westnumberRequired

Limits: minimum -180, maximum 180

Example: -10

bbox.southnumberRequired

Limits: minimum -90, maximum 90

Example: 35

bbox.eastnumberRequired

May be less than west for a box across the antimeridian.

Limits: minimum -180, maximum 180

Example: 30

bbox.northnumberRequired

Limits: minimum -90, maximum 90

Example: 60

goalstring | nullOptional

Score for one goal; the mean of all sixteen when omitted.

Default: null

Allowed values: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsartsbusiness

Example: career

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 (16)
ValueMeaning
careerCareer
marriageMarriage
wealthWealth
spiritualSpiritual
healthHealth
educationEducation
peacePeace of mind
childrenChildren
propertyProperty
romanceRomance
fameFame
foreignForeign settlement
travelTravel
politicsPolitics
artsArts
businessBusiness

Response · fields in data

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

  • goal · string
  • formula · array of object
  • area_km2 · number
  • cities_inside · integer
  • cities_in_catalogue · integer
  • score · object
  • best_goals · array of object
  • lines_crossing · array of object
  • parans_inside · array of object
  • strongest_planets · array of object
  • top_cities · array of object
  • bounds · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "goal": "career",
    "formula": [
      {
        "house": 10,
        "weight": 0.4
      },
      {
        "house": 11,
        "weight": 0.3
      },
      {
        "house": 6,
        "weight": 0.2
      }
    ],
    "area_km2": 8287124,
    "cities_inside": 55,
    "cities_in_catalogue": 246,
  …

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.

Local Space Directions

POSTAvailable

https://api.96astro.com/v1/location-astrology/local-space

Each planet's compass bearing and altitude from where the person stands, with its themes and the cities along its great-circle ray.

Credits
1 credit
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

This capability is computed with Lahiri only.

Default: lahiri

Allowed value: 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

observerobject | nullOptional

Where the native stands now; the birthplace when omitted.

Default: null

observer.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 51.5074

observer.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: -0.1278

observer.labelstringOptional

Name to echo back, e.g. Tokyo.

Default: ""

Limits: at most 120 characters

Example: London

corridor_kmnumberOptional

How near a city must lie to a ray to be listed.

Default: 300

Limits: minimum 10, maximum 2000

nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

topocentricbooleanOptional

Parallax-correct positions for the observer.

Default: false

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.

  • coordinates · string
  • observer · object
  • node · string
  • topocentric · boolean
  • local_sidereal_time_degrees · number
  • corridor_km · number
  • rays · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "coordinates": "Points are [longitude, latitude] in signed decimal degrees (east and north positive), GeoJSON order.",
    "observer": {
      "latitude": 51.5074,
      "longitude": -0.1278,
      "label": "London"
    },
    "node": "true",
    "topocentric": false,
    "local_sidereal_time_degrees": 161.4665,
    "corridor_km": 300,
    "rays": [
      {
        "planet": "Jupiter",
        "azimuth": 223.95,
        "altitude": 49.77,
        "above_horizon": true,
        "compass": "SW",
        "themes": [
  …

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.

Location Goal Catalogue

POSTAvailable

https://api.96astro.com/v1/location-astrology/location-categories

The scoring goals with their house formulas and significators.

Credits
1 credit
Input
No 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
goalstring | nullOptional

Return only this goal; all sixteen when omitted.

Default: null

Allowed values: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsartsbusiness

Example: career

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.

  • goals · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "goals": [
      {
        "id": "career",
        "houses": [
          10,
          11,
          6
        ],
        "formula": [
          {
            "house": 10,
            "weight": 0.4
          },
          {
            "house": 11,
            "weight": 0.3
          },
          {
  …

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.