Skip to content
API96Astro API

API reference / Reports

Reports

Long multi-section readings assembled from the chart: topic reports, classical Kundli bundles, matching and longevity.

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.

Marriage & Married Life Report

POSTAvailable

https://api.96astro.com/v1/reports/report-marriage

In-depth marriage & married life reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • overview · object
  • seventh_house · object
  • upapada · object
  • spouse · object
  • union_type · object
  • meeting · object
  • distance · object
  • spouse_career · object
  • in_laws · object
  • timing · object
  • delay · object
  • quality · object
  • stability · object
  • challenges · object
  • emotional · object
  • children · object
  • mangal_dosha · object
  • navamsa · object
  • relocation · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "marriage",
    "title": "Marriage & Married Life Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "overview": {
      "score": 40.3,
      "band": "moderate_low",
      "band_label": "Mixed — workable with awareness",
      "band_note": "The indications are mixed. Marriage is well within reach, and awareness of the weaker areas is what makes the difference.",
      "measured_layers": [
        "karaka",
        "seventh_house",
        "seventh_lord"
      ],
      "stars": 3,
      "strongest_factors": [
  …

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.

Romance Report

POSTAvailable

https://api.96astro.com/v1/reports/report-romance

In-depth romance reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

partnerobject | nullOptional

Optional partner's birth. Without it the compatibility section is not produced.

Default: null

partner.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})?)?$

partner.timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

partner.utc_offsetstring | nullOptional

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

Default: null

partner.latitudenumberRequired

Limits: minimum -90, maximum 90

partner.longitudenumberRequired

Limits: minimum -180, maximum 180

partner.ayanamshastringOptional

Default: lahiri

partner.languagestringOptional

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

Default: en

partner.nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

in_relationshipbooleanOptional

Whether the reader is currently in a relationship.

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • personality · object
  • attraction · object
  • love_marriage · object
  • ideal_partner · object
  • meeting · object
  • compatibility · object
  • communication · object
  • instability · object
  • reconciliation · object
  • timing · object
  • current_period · object
  • dating_outlook · object
  • long_distance · object
  • relocation · object
  • cities · object
  • combined_timing · object
  • career_chain · object
  • wellbeing · object
  • guidance · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "romance",
    "title": "Romance Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about relationships. It describes tendencies in your own chart and nothing more — it cannot see anyone you have not met, it cannot know what another person feels or int [... 178 more characters]",
    "overview": {
      "score": 43,
      "band": "mixed",
      "band_label": "Mixed indications — the right person matters more than timing",
      "band_note": "Your chart shows mixed indications for relationships. Who you choose appears to matter more here than when you meet them.",
      "unmeasured": false,
      "scores": {
        "romantic": {
          "key": "romantic",
          "label": "Romantic potential",
          "score": 41.6,
  …

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.

Career Report

POSTAvailable

https://api.96astro.com/v1/reports/report-career

In-depth career reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • overview · object
  • fields · object
  • job_vs_business · object
  • dashamsha · object
  • leadership · object
  • strengths · object
  • challenges · object
  • money · object
  • timing · object
  • relocation · object
  • cities · object
  • yogas · object
  • family_balance · object
  • strategy · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "career",
    "title": "Career Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "overview": {
      "score": 40.6,
      "band": "mixed",
      "band_label": "Mixed — workable with focus",
      "band_note": "The indications are mixed. A clear direction and a few deliberate choices matter more for you than for most.",
      "unmeasured": false,
      "scores": {
        "stability": {
          "label": "Career stability",
          "score": 48.9,
          "unmeasured": false
        },
  …

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.

Politics & Public Life Report

POSTAvailable

https://api.96astro.com/v1/reports/report-politics

In-depth politics & public life reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • leadership · object
  • image · object
  • potential · object
  • speaking · object
  • appeal · object
  • styles · object
  • government · object
  • opposition · object
  • reputation · object
  • impact · object
  • career · object
  • business · object
  • timing · object
  • combined_timing · object
  • relocation · object
  • cities · object
  • family · object
  • wealth · object
  • service · object
  • guidance · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "politics",
    "title": "Politics & Public Life Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about leadership and public life. No reading can promise an election result, a public office or an appointment — those are decided by voters, institutions and a great d [... 232 more characters]",
    "overview": {
      "score": 38.2,
      "band": "local",
      "band_label": "Influence within a circle rather than a crowd",
      "band_note": "Your chart supports influence within a circle you know rather than with a crowd you do not. That is a genuine form of public life and often the more effective one.",
      "unmeasured": false,
      "resilience": 47.8,
      "scores": {
        "leadership": {
          "key": "leadership",
          "label": "Leadership potential",
  …

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.

Wealth Report

POSTAvailable

https://api.96astro.com/v1/reports/report-wealth

In-depth wealth reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • overview · object
  • hora · object
  • income · object
  • routes · object
  • multiple_income · object
  • money_management · object
  • risk · object
  • challenges · object
  • business · object
  • property · object
  • sudden_gains · object
  • inherited · object
  • yogas · object
  • timing · object
  • relocation · object
  • cities · object
  • guidance · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "wealth",
    "title": "Wealth Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "overview": {
      "score": 44.2,
      "band": "mixed",
      "band_label": "Mixed — workable with discipline",
      "band_note": "The indications are mixed. Financial discipline matters more for you than for most, and it works.",
      "unmeasured": false,
      "scores": {
        "income": {
          "label": "Income potential",
          "score": 46.9,
          "unmeasured": false
        },
  …

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.

Children Report

POSTAvailable

https://api.96astro.com/v1/reports/report-children

In-depth children reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • fifth_house · object
  • jupiter · object
  • saptamsha · object
  • timing · object
  • delay · object
  • happiness · object
  • parenting · object
  • child_tendencies · object
  • talents · object
  • number_of_children · object
  • relocation · object
  • cities · object
  • guidance · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "children",
    "title": "Children Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about family life, not a medical opinion. It cannot assess fertility, and it says nothing about anyone's ability to have children. If you have questions or concerns about starting a family, a qualified doctor is the right person to speak to.",
    "overview": {
      "score": 53.4,
      "band": "moderate",
      "band_label": "Reasonably supported",
      "band_note": "Your chart gives family life a reasonable foundation, with the ordinary mix of supportive factors and areas to watch.",
      "unmeasured": false,
      "scores": {
        "expansion": {
          "label": "Family expansion potential",
          "score": 48.7,
          "unmeasured": false
  …

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.

Education Report

POSTAvailable

https://api.96astro.com/v1/reports/report-education

In-depth education reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • learning_styles · object
  • cognitive_strengths · object
  • study_habits · object
  • subjects · object
  • streams · object
  • higher_education · object
  • foreign_education · object
  • timing · object
  • exams · object
  • challenges · object
  • alignment · object
  • skills · object
  • relocation · object
  • cities · object
  • combined_timing · object
  • family · object
  • career_chain · object
  • spiritual · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "education",
    "title": "Education Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about learning and education. It is not a measure of intelligence, and it is not an assessment of anyone's ability — a chart cannot speak to either. Nothing here can guarantee an exam result, an admission or a scholarship, and none of it is a substitute for advice fro [... 54 more characters]",
    "overview": {
      "score": 51.2,
      "band": "moderate",
      "band_label": "Reasonably supported",
      "band_note": "Your chart gives learning a reasonable foundation, with the ordinary mix of supportive factors and areas to work at.",
      "unmeasured": false,
      "scores": {
        "learning_ability": {
          "key": "learning_ability",
          "label": "Learning ability",
          "score": 51.7,
  …

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.

Property Report

POSTAvailable

https://api.96astro.com/v1/reports/report-property

In-depth property reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • home_ownership · object
  • property_types · object
  • multiple · object
  • wealth · object
  • inherited · object
  • financing · object
  • timing · object
  • selling · object
  • challenges · object
  • relocation · object
  • cities · object
  • foreign · object
  • settlement · object
  • combined_timing · object
  • career_location · object
  • family · object
  • strategy · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "property",
    "title": "Property Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about property and assets. It is not legal, financial, mortgage, tax or investment advice, and it is not a substitute for a qualified professional. No reading can promise that a property will be acquired, that a value will rise, that rent will be earned or that anythi [... 77 more characters]",
    "overview": {
      "score": 48.3,
      "band": "mixed",
      "band_label": "Mixed indications — route matters more than timing",
      "band_note": "Your chart shows mixed indications for property. How and where you buy appears to matter more here than when.",
      "unmeasured": false,
      "scores": {
        "ownership": {
          "key": "ownership",
          "label": "Property ownership potential",
          "score": 51.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.

Health Report

POSTAvailable

https://api.96astro.com/v1/reports/report-health

In-depth health reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • vitality · object
  • stress · object
  • rest · object
  • routine · object
  • fitness · object
  • food · object
  • themes · object
  • timing · object
  • relocation · object
  • cities · object
  • spiritual · object
  • plan · object
  • remedies · object
  • supporting_charts · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "health",
    "title": "Health Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological wellbeing reading, not medical advice. It cannot diagnose anything, and it is not a substitute for a doctor. If you have a health concern, or you are already under treatment, speak to a qualified medical professional — and never change or stop treatment on the basis of a chart.",
    "overview": {
      "score": 42.1,
      "band": "mixed",
      "band_label": "Mixed — routine matters more for you than most",
      "band_note": "Your chart suggests a mixed picture where consistency makes a noticeable difference. Regular habits are likely to repay you more than occasional effort.",
      "unmeasured": false,
      "scores": {
        "vitality": {
          "label": "Vitality",
          "score": 49.8,
          "unmeasured": false
  …

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.

Foreign Travel Report

POSTAvailable

https://api.96astro.com/v1/reports/report-foreign-travel

In-depth foreign travel reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • travel · object
  • purposes · object
  • frequency · object
  • first_opportunity · object
  • domains · object
  • ladder · object
  • home_vs_foreign · object
  • return_home · object
  • domestic_vs_foreign · object
  • two_homes · object
  • timing · object
  • combined_timing · object
  • cities · object
  • foreign_property · object
  • family · object
  • integrated · object
  • guidance · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "foreign_travel",
    "title": "Foreign Travel Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about travel and living abroad. It is not immigration, visa or legal advice, and it is not a substitute for a qualified professional. No reading can promise a visa, a residency, a citizenship, a job abroad or a property overseas — those are decisions made by governmen [... 160 more characters]",
    "overview": {
      "score": 80.3,
      "band": "central",
      "band_label": "Foreign places are a central theme in your chart",
      "band_note": "Your chart makes distant places a central theme, with several independent factors agreeing. International experience is likely to shape a good deal of how your life develops.",
      "unmeasured": false,
      "rootedness": 43.6,
      "scores": {
        "travel": {
          "key": "travel",
          "label": "Foreign travel",
  …

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.

Relocation Report

POSTAvailable

https://api.96astro.com/v1/reports/report-relocation

Relocation reading: relocation potential, stay-or-move verdict, foreign settlement, best directions, house and D4 analysis, dasha support, ranked places, timing and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • relocation_potential · object
  • stay_or_move · object
  • foreign_settlement · object
  • relocation_types · array of object
  • directions · object
  • house_analyses · array of object
  • d4 · object
  • dasha_support · object
  • cities · object
  • states · object
  • countries · object
  • goals · object
  • caution_locations · array of object
  • timing · object
  • confidence · object
  • evidence · array of object
  • meta · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "relocation",
    "title": "Relocation Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "relocation_potential": {
      "score": 74.2,
      "band": "strong",
      "band_label": "Strong relocation indication",
      "components": {
        "ninth_twelfth": 92,
        "third": 92,
        "fourth_disp": 38,
        "seventh": 64,
        "d4": 60.3,
        "nodes": 45,
        "dasha": 82.5
      },
  …

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.

Spiritual Report

POSTAvailable

https://api.96astro.com/v1/reports/report-spiritual

In-depth spiritual reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

genderstring | nullOptional

Optional. Weights the spouse significator (Venus or Jupiter); the report's language stays neutral.

Default: null

Allowed values: malefemale

birth_time_accuracystring | nullOptional

How exact the birth time is: exact (from a record), rounded (5-15 min, the default), approx (hour), unknown. Lowers confidence and drops the finest divisional charts below exact.

Default: null

Allowed values: exactroundedapproxunknown

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.

  • topic · string
  • title · string
  • ascendant · object
  • ruleset · string
  • disclaimer · string
  • overview · object
  • paths · object
  • intelligence · object
  • dharma · object
  • withdrawal · object
  • moksha · object
  • soul_path · object
  • karmic_themes · object
  • practices · object
  • pilgrimage · object
  • timing · object
  • combined_timing · object
  • relocation · object
  • cities · object
  • balance · object
  • family · object
  • career · object
  • remedies · object
  • summary · object
  • confidence · object
  • evidence · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "topic": "spiritual",
    "title": "Spiritual Report",
    "ascendant": {
      "sign": "Capricorn"
    },
    "ruleset": "BPHS_PARASHARI",
    "disclaimer": "This is an astrological reading about inner life and practice. No reading can promise liberation, enlightenment or any spiritual attainment, and nothing here is a claim about a past life, a future teacher or any ability beyond the ordinary. Where traditional themes are described they are offered as  [... 181 more characters]",
    "overview": {
      "score": 42.6,
      "band": "quiet",
      "band_label": "A quiet inner thread alongside an outward life",
      "band_note": "Your chart carries a quiet inner thread running alongside an outward-facing life. It tends to surface at particular times rather than being constant, which is worth recognising rather than dismissing.",
      "unmeasured": false,
      "worldly_engagement": 42,
      "scores": {
        "inclination": {
          "key": "inclination",
          "label": "Spiritual inclination",
  …

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.

Classical Kundli Report Bundles

POSTAvailable

https://api.96astro.com/v1/reports/classical-kundli-report

The extra chapters of a classical Kundli bundle: ascendant reading, gemstones, rudraksha, yogas, graha phala, dasha reading or a month-by-month annual reading, by bundle.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

bundlestringOptional

small: ascendant reading. medium: + gemstones, rudraksha. large: + yogas, graha phala. dasha: ascendant, dasha reading, yogas. annual: ascendant + the next 12 months from the current month.

Default: small

Allowed values: smallmediumlargedashaannual

Example: large

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 (5)
ValueMeaning
smallSmall (ascendant)
mediumMedium (+ remedies, rudraksha)
largeLarge (+ yogas, graha phala)
dashaDasha (ascendant, dasha reading, yogas)
annualAnnual / 12-month

Response · fields in data

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

  • bundle · string
  • nature · string
  • ascendant_reading · object
  • gemstones · object
  • rudraksha · object
  • yogas · object
  • graha_phala · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "bundle": "large",
    "nature": "Classical textual reading: the yoga, graha phala, gemstone and rudraksha texts are quoted from the classical tradition for this chart. Statements about lifespan, illness or healing in them are not medical advice and not a prediction of lifespan or health.",
    "ascendant_reading": {
      "ascendant": {
        "sign": "Capricorn",
        "sign_no": 10,
        "degree": 23.8936,
        "nakshatra": "Dhanishta",
        "pada": 1,
        "element": "Earth",
        "modality": "Movable",
        "lord": "Saturn",
        "archetype": "a climber who measures progress in decades"
      },
      "lord": {
        "planet": "Saturn",
        "sign": "Sagittarius",
        "house": 12,
  …

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.

Kundli Matching Report

POSTAvailable

https://api.96astro.com/v1/reports/matching-report

Matching report: each side's nakshatra, ascendant and Mangal dosha, Ashtakoot and Dashakoot scores, Rajju and Vedha with readings, koota vetoes, personality notes and a verdict.

Credits
10 credits
Input
Two people's birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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
groomobjectRequired
groom.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

groom.timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

groom.utc_offsetstring | nullOptional

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

Default: null

groom.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 28.6139

groom.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 77.209

groom.ayanamshastringOptional

Default: lahiri

groom.languagestringOptional

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

Default: en

groom.nodestringOptional

Lunar node: true (osculating) or mean.

Default: true

Allowed values: truemean

brideobjectRequired
bride.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

bride.timezonestring | nullOptional

IANA time zone, e.g. Asia/Kolkata

Default: null

Example: Asia/Kolkata

bride.utc_offsetstring | nullOptional

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

Default: null

bride.latitudenumberRequired

Limits: minimum -90, maximum 90

Example: 19.0767

bride.longitudenumberRequired

Limits: minimum -180, maximum 180

Example: 72.8767

bride.ayanamshastringOptional

Default: lahiri

bride.languagestringOptional

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

Default: en

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

  • groom · object
  • bride · object
  • score · object
  • combined · object
  • rajju · object
  • vedha · object
  • vetoes · array of object
  • mangal_dosha · object
  • personality · object
  • verdict · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "groom": {
      "nakshatra": "Chitra",
      "pada": 2,
      "moon_sign": "Virgo",
      "ascendant": "Capricorn",
      "mangal_dosha": {
        "present": false,
        "from_ascendant": false,
        "from_moon": false,
        "from_venus": false,
        "mars_sign": "Taurus"
      }
    },
    "bride": {
      "nakshatra": "Shravana",
      "pada": 3,
      "moon_sign": "Capricorn",
      "ascendant": "Capricorn",
  …

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.

Longevity & Arishta Analysis

POSTAvailable

https://api.96astro.com/v1/reports/longevity-analysis

Classical Balarishta, Arishta, maraka, badhaka and critical-transit factors with an explainable rule log; classical arithmetic, explicitly not a medical or death prediction.

Credits
10 credits
Input
Birth details
Output
JSON
Delivery
Direct response (JSON); PDF via /v1/jobs/pdf
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

as_ofstring | nullOptional

Date the age, running dasha and transits are judged on (YYYY-MM-DD). Defaults to today (UTC).

Default: null

Limits: format date

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.

  • nature · string
  • disclaimer · string
  • caution · string
  • ayanamsha · string
  • node · string
  • as_of · string
  • current_age · integer
  • convergence · null
  • lifespan_estimate · object
  • balarishta · object
  • balarishta_cancellation · object
  • protective_factors · array of object
  • maraka · object
  • badhaka · object
  • chhidra_grahas · array of object
  • sensitive_points · object
  • dasha_activation · object
  • transit_windows_now · array of object
  • divisional_confirmation · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "nature": "Classical astrological arithmetic (Balarishta, Arishta-bhanga, maraka, badhaka, chhidra grahas, sensitive points, dasha and transit screening). It is not a medical, actuarial or factual prediction of death, illness or lifespan, and must not be used for any health, insurance or personal-safety decision.",
    "disclaimer": "A convergence screening of classical longevity-sensitive factors. NOT a death prediction, date or certainty.",
    "caution": "This is a convergence-based screening of classical longevity factors for study and remedial focus — never a deterministic death prediction.",
    "ayanamsha": "lahiri",
    "node": "true",
    "as_of": "2026-10-14",
    "current_age": 35,
    "convergence": null,
    "lifespan_estimate": {
      "method": "Mean of the chart's classical Ayurdaya methods and the Ashtakavarga ayus, each capped at the maximum; the mean's band gives the category.",
      "cap_years": 120,
      "methods": [
        {
          "method": "amsayu",
          "source": "ayurdaya",
          "years": 51.15,
          "capped": false,
          "used_years": 51.15
  …

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.