Skip to content
API96Astro API

API reference / Vastu

Vastu

Floor-plan Vastu analysis, Ayadi, comparisons, heatmaps and reference tables.

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

Vastu Floor Analysis

POSTBeta

https://api.96astro.com/v1/vastu/vastu-analyse

Vastu analysis of one floor from its marked-up plan: overall and category scores, zones, rooms, brahmasthan, marma, devatas, defects with remedies, Ayadi and a checklist.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
boundaryarray of [number, number]Required

The property outline, in order round the shape.

Limits: 3 to 500 items

northobjectOptional
north.degreesnumberOptional

Bearing of north, clockwise from the top of the plan (smaller y): 0 = north is up, 90 = north is right.

Default: 0

Limits: minimum 0, less than 360

Example: 0

north.referencestringOptional

What the reading is relative to. A magnetic reading with a site is corrected to true north.

Default: unknown

Allowed values: magnetictrueunknown

Example: true

north.declination_degreesnumber | nullOptional

Magnetic declination, east positive.

Default: null

Limits: minimum -90, maximum 90

north.uncertainty_degreesnumber | nullOptional

How far the reading may be off.

Default: null

Limits: minimum 0, maximum 45

north.measured_onstring | nullOptional

Day the reading was taken (for the declination model).

Default: null

Limits: format date

north.siteobject | nullOptional

Where the property is; used to look up the declination.

Default: null

north.site.latitudenumberRequired

Limits: minimum -90, maximum 90

north.site.longitudenumberRequired

Limits: minimum -180, maximum 180

unitsstring | nullOptional

The unit the coordinates are in, if they are real lengths.

Default: null

Allowed values: mcmmmftinyd

Example: m

scaleobject | nullOptional

For a drawing in pixels: a length on the plan and its real length.

Default: null

scale.plan_lengthnumberRequired

A length measured on the plan, in plan coordinates.

Limits: greater than 0, maximum 2000000

scale.real_lengthnumberRequired

What that length is in reality.

Limits: greater than 0, maximum 100000

scale.unitstringRequired

Allowed values: mcmmmftinyd

centre[number, number] | nullOptional

The plan's centre (Brahmasthan); defaults to the centre of the outline's bounding box.

Default: null

Limits: exactly 2 items

roomsarray of objectsOptional

Limits: at most 80 items

rooms[].namestringRequired

Limits: 1 to 120 characters

Example: Kitchen

rooms[].typestring | nullOptional

Room use; omitted = untyped (reported, not scored).

Default: null

Allowed values: kitchenmaster_bedroomchildren_bedroomguest_bedroompoojatoiletbathroomstudyliving_roomdiningstore_roomstairsmain_entrancewater_tank_undergroundwater_tank_overheadswimming_poolseptic_tankborewellgaragebalconycorridor

Example: kitchen

rooms[].polygonarray of [number, number]Required

Limits: 3 to 200 items

structuresarray of objectsOptional

Limits: at most 80 items

structures[].namestringRequired

Limits: 1 to 120 characters

structures[].typestringRequired

Allowed values: pillarstaircaseliftmachinekitchen_pitbeamwallstairsmain_entrancewater_tank_undergroundwater_tank_overheadseptic_tankborewell

structures[].polygonarray of [number, number]Required

Limits: 3 to 200 items

fixturesarray of objectsOptional

Limits: at most 50 items

fixtures[].namestringOptional

Default: ""

Limits: at most 120 characters

fixtures[].typestringRequired

Allowed values: bedstovedesksafewc

fixtures[].position[number, number]Required

Limits: exactly 2 items

fixtures[].toward[number, number]Required

A second point in the direction the fixture faces (bed: where the head rests).

Limits: exactly 2 items

holesarray of objectsOptional

Open courtyards and cut-outs.

Limits: at most 20 items

holes[].namestringOptional

Default: ""

Limits: at most 120 characters

holes[].kindstringRequired

Allowed values: courtyardcutout

holes[].polygonarray of [number, number]Required

Limits: 3 to 200 items

ayadiobject | nullOptional

Ayadi options; Ayadi needs units or a scale.

Default: null

ayadi.unitstringOptional

Default: kishku_hasta

Allowed values: kishku_hastakerala_kolcustom

ayadi.custom_unit_metresnumber | nullOptional

Default: null

Limits: minimum 0.1, maximum 2

ayadi.owner_nakshatrastring | nullOptional

Owner's birth star; enables Tara-bala.

Default: null

Allowed values: AshwiniBharaniKrittikaRohiniMrigashiraArdraPunarvasuPushyaAshleshaMaghaPurva PhalguniUttara PhalguniHastaChitraSwatiVishakhaAnuradhaJyeshthaMulaPurva AshadhaUttara AshadhaShravanaDhanishtaShatabhishaPurva BhadrapadaUttara BhadrapadaRevati

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.

  • overall_score · number
  • score_status · string
  • score_basis · object
  • defect_count · integer
  • severe_defect_count · integer
  • scoring_method · object
  • north · object
  • plot · object
  • category_scores · object
  • zones · array of object
  • rooms · array of object
  • structures · array
  • brahmasthan · object
  • marma · object
  • devatas · array of object
  • cut_zones · array
  • defects · array of object
  • remedies · array of object
  • sacred_objects · object
  • mantras · object
  • checklist · object
  • orientation · object
  • ayadi · object
  • duplicates_merged · integer
  • shape_warnings · array

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "overall_score": 61,
    "score_status": "assessed",
    "score_basis": {
      "coverage_pct": 61.1,
      "checks_assessed": 11,
      "checks_not_assessed": 7,
      "missing": [
        "a toilet or bathroom"
      ],
      "threshold_pct": 50,
      "explanation": "Based on 61.1% of the automatic checks."
    },
    "defect_count": 2,
    "severe_defect_count": 1,
    "scoring_method": {
      "version": "2.1",
      "room_zones": "area share in each of the 16 zones; the primary zone holds the most floor",
      "room_score": "rule score per zone weighted by floor share; parts under 15% of the room are left out",
  …

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.

Vastu Category Heatmap

POSTBeta

https://api.96astro.com/v1/vastu/vastu-heatmap

Sampled points across the floor, each scored for one life goal with its zone.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
boundaryarray of [number, number]Required

The property outline, in order round the shape.

Limits: 3 to 500 items

northobjectOptional
north.degreesnumberOptional

Bearing of north, clockwise from the top of the plan (smaller y): 0 = north is up, 90 = north is right.

Default: 0

Limits: minimum 0, less than 360

Example: 0

north.referencestringOptional

What the reading is relative to. A magnetic reading with a site is corrected to true north.

Default: unknown

Allowed values: magnetictrueunknown

Example: true

north.declination_degreesnumber | nullOptional

Magnetic declination, east positive.

Default: null

Limits: minimum -90, maximum 90

north.uncertainty_degreesnumber | nullOptional

How far the reading may be off.

Default: null

Limits: minimum 0, maximum 45

north.measured_onstring | nullOptional

Day the reading was taken (for the declination model).

Default: null

Limits: format date

north.siteobject | nullOptional

Where the property is; used to look up the declination.

Default: null

north.site.latitudenumberRequired

Limits: minimum -90, maximum 90

north.site.longitudenumberRequired

Limits: minimum -180, maximum 180

unitsstring | nullOptional

The unit the coordinates are in, if they are real lengths.

Default: null

Allowed values: mcmmmftinyd

Example: m

scaleobject | nullOptional

For a drawing in pixels: a length on the plan and its real length.

Default: null

scale.plan_lengthnumberRequired

A length measured on the plan, in plan coordinates.

Limits: greater than 0, maximum 2000000

scale.real_lengthnumberRequired

What that length is in reality.

Limits: greater than 0, maximum 100000

scale.unitstringRequired

Allowed values: mcmmmftinyd

centre[number, number] | nullOptional

The plan's centre (Brahmasthan); defaults to the centre of the outline's bounding box.

Default: null

Limits: exactly 2 items

roomsarray of objectsOptional

Limits: at most 80 items

rooms[].namestringRequired

Limits: 1 to 120 characters

Example: Kitchen

rooms[].typestring | nullOptional

Room use; omitted = untyped (reported, not scored).

Default: null

Allowed values: kitchenmaster_bedroomchildren_bedroomguest_bedroompoojatoiletbathroomstudyliving_roomdiningstore_roomstairsmain_entrancewater_tank_undergroundwater_tank_overheadswimming_poolseptic_tankborewellgaragebalconycorridor

Example: kitchen

rooms[].polygonarray of [number, number]Required

Limits: 3 to 200 items

structuresarray of objectsOptional

Limits: at most 80 items

structures[].namestringRequired

Limits: 1 to 120 characters

structures[].typestringRequired

Allowed values: pillarstaircaseliftmachinekitchen_pitbeamwallstairsmain_entrancewater_tank_undergroundwater_tank_overheadseptic_tankborewell

structures[].polygonarray of [number, number]Required

Limits: 3 to 200 items

fixturesarray of objectsOptional

Limits: at most 50 items

fixtures[].namestringOptional

Default: ""

Limits: at most 120 characters

fixtures[].typestringRequired

Allowed values: bedstovedesksafewc

fixtures[].position[number, number]Required

Limits: exactly 2 items

fixtures[].toward[number, number]Required

A second point in the direction the fixture faces (bed: where the head rests).

Limits: exactly 2 items

holesarray of objectsOptional

Open courtyards and cut-outs.

Limits: at most 20 items

holes[].namestringOptional

Default: ""

Limits: at most 120 characters

holes[].kindstringRequired

Allowed values: courtyardcutout

holes[].polygonarray of [number, number]Required

Limits: 3 to 200 items

ayadiobject | nullOptional

Ayadi options; Ayadi needs units or a scale.

Default: null

ayadi.unitstringOptional

Default: kishku_hasta

Allowed values: kishku_hastakerala_kolcustom

ayadi.custom_unit_metresnumber | nullOptional

Default: null

Limits: minimum 0.1, maximum 2

ayadi.owner_nakshatrastring | nullOptional

Owner's birth star; enables Tara-bala.

Default: null

Allowed values: AshwiniBharaniKrittikaRohiniMrigashiraArdraPunarvasuPushyaAshleshaMaghaPurva PhalguniUttara PhalguniHastaChitraSwatiVishakhaAnuradhaJyeshthaMulaPurva AshadhaUttara AshadhaShravanaDhanishtaShatabhishaPurva BhadrapadaUttara BhadrapadaRevati

categorystringRequired

Life goal to weight the field for.

Allowed values: careermarriagewealthspiritualhealtheducationpeacechildrenpropertyromancefameforeigntravelpoliticsarts

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

Response · fields in data

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

  • category · string
  • grid_size · integer
  • bbox · array of number
  • samples · array of object
  • basis · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "category": "career",
    "grid_size": 24,
    "bbox": [
      0,
      0,
      12
    ],
    "samples": [
      {
        "point": [
          0,
          0
        ],
        "score": 75,
        "zone": "NW"
      },
      {
        "point": [
  …

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 Properties

POSTBeta

https://api.96astro.com/v1/vastu/vastu-compare

Two plans analysed side by side: each one's scores and defects, the winner per category with reasons, and the overall winner.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
aobjectRequired
a.boundaryarray of [number, number]Required

The property outline, in order round the shape.

Limits: 3 to 500 items

a.northobjectOptional
a.north.degreesnumberOptional

Bearing of north, clockwise from the top of the plan (smaller y): 0 = north is up, 90 = north is right.

Default: 0

Limits: minimum 0, less than 360

Example: 0

a.north.referencestringOptional

What the reading is relative to. A magnetic reading with a site is corrected to true north.

Default: unknown

Allowed values: magnetictrueunknown

Example: true

a.north.declination_degreesnumber | nullOptional

Magnetic declination, east positive.

Default: null

Limits: minimum -90, maximum 90

a.north.uncertainty_degreesnumber | nullOptional

How far the reading may be off.

Default: null

Limits: minimum 0, maximum 45

a.north.measured_onstring | nullOptional

Day the reading was taken (for the declination model).

Default: null

Limits: format date

a.north.siteobject | nullOptional

Where the property is; used to look up the declination.

Default: null

a.north.site.latitudenumberRequired

Limits: minimum -90, maximum 90

a.north.site.longitudenumberRequired

Limits: minimum -180, maximum 180

a.unitsstring | nullOptional

The unit the coordinates are in, if they are real lengths.

Default: null

Allowed values: mcmmmftinyd

Example: m

a.scaleobject | nullOptional

For a drawing in pixels: a length on the plan and its real length.

Default: null

a.scale.plan_lengthnumberRequired

A length measured on the plan, in plan coordinates.

Limits: greater than 0, maximum 2000000

a.scale.real_lengthnumberRequired

What that length is in reality.

Limits: greater than 0, maximum 100000

a.scale.unitstringRequired

Allowed values: mcmmmftinyd

a.centre[number, number] | nullOptional

The plan's centre (Brahmasthan); defaults to the centre of the outline's bounding box.

Default: null

Limits: exactly 2 items

a.roomsarray of objectsOptional

Limits: at most 80 items

a.rooms[].namestringRequired

Limits: 1 to 120 characters

Example: Kitchen

a.rooms[].typestring | nullOptional

Room use; omitted = untyped (reported, not scored).

Default: null

Allowed values: kitchenmaster_bedroomchildren_bedroomguest_bedroompoojatoiletbathroomstudyliving_roomdiningstore_roomstairsmain_entrancewater_tank_undergroundwater_tank_overheadswimming_poolseptic_tankborewellgaragebalconycorridor

Example: kitchen

a.rooms[].polygonarray of [number, number]Required

Limits: 3 to 200 items

a.structuresarray of objectsOptional

Limits: at most 80 items

a.structures[].namestringRequired

Limits: 1 to 120 characters

a.structures[].typestringRequired

Allowed values: pillarstaircaseliftmachinekitchen_pitbeamwallstairsmain_entrancewater_tank_undergroundwater_tank_overheadseptic_tankborewell

a.structures[].polygonarray of [number, number]Required

Limits: 3 to 200 items

a.fixturesarray of objectsOptional

Limits: at most 50 items

a.fixtures[].namestringOptional

Default: ""

Limits: at most 120 characters

a.fixtures[].typestringRequired

Allowed values: bedstovedesksafewc

a.fixtures[].position[number, number]Required

Limits: exactly 2 items

a.fixtures[].toward[number, number]Required

A second point in the direction the fixture faces (bed: where the head rests).

Limits: exactly 2 items

a.holesarray of objectsOptional

Open courtyards and cut-outs.

Limits: at most 20 items

a.holes[].namestringOptional

Default: ""

Limits: at most 120 characters

a.holes[].kindstringRequired

Allowed values: courtyardcutout

a.holes[].polygonarray of [number, number]Required

Limits: 3 to 200 items

a.ayadiobject | nullOptional

Ayadi options; Ayadi needs units or a scale.

Default: null

a.ayadi.unitstringOptional

Default: kishku_hasta

Allowed values: kishku_hastakerala_kolcustom

a.ayadi.custom_unit_metresnumber | nullOptional

Default: null

Limits: minimum 0.1, maximum 2

a.ayadi.owner_nakshatrastring | nullOptional

Owner's birth star; enables Tara-bala.

Default: null

Allowed values: AshwiniBharaniKrittikaRohiniMrigashiraArdraPunarvasuPushyaAshleshaMaghaPurva PhalguniUttara PhalguniHastaChitraSwatiVishakhaAnuradhaJyeshthaMulaPurva AshadhaUttara AshadhaShravanaDhanishtaShatabhishaPurva BhadrapadaUttara BhadrapadaRevati

bobjectRequired
b.boundaryarray of [number, number]Required

The property outline, in order round the shape.

Limits: 3 to 500 items

b.northobjectOptional
b.north.degreesnumberOptional

Bearing of north, clockwise from the top of the plan (smaller y): 0 = north is up, 90 = north is right.

Default: 0

Limits: minimum 0, less than 360

Example: 180

b.north.referencestringOptional

What the reading is relative to. A magnetic reading with a site is corrected to true north.

Default: unknown

Allowed values: magnetictrueunknown

Example: true

b.north.declination_degreesnumber | nullOptional

Magnetic declination, east positive.

Default: null

Limits: minimum -90, maximum 90

b.north.uncertainty_degreesnumber | nullOptional

How far the reading may be off.

Default: null

Limits: minimum 0, maximum 45

b.north.measured_onstring | nullOptional

Day the reading was taken (for the declination model).

Default: null

Limits: format date

b.north.siteobject | nullOptional

Where the property is; used to look up the declination.

Default: null

b.north.site.latitudenumberRequired

Limits: minimum -90, maximum 90

b.north.site.longitudenumberRequired

Limits: minimum -180, maximum 180

b.unitsstring | nullOptional

The unit the coordinates are in, if they are real lengths.

Default: null

Allowed values: mcmmmftinyd

Example: m

b.scaleobject | nullOptional

For a drawing in pixels: a length on the plan and its real length.

Default: null

b.scale.plan_lengthnumberRequired

A length measured on the plan, in plan coordinates.

Limits: greater than 0, maximum 2000000

b.scale.real_lengthnumberRequired

What that length is in reality.

Limits: greater than 0, maximum 100000

b.scale.unitstringRequired

Allowed values: mcmmmftinyd

b.centre[number, number] | nullOptional

The plan's centre (Brahmasthan); defaults to the centre of the outline's bounding box.

Default: null

Limits: exactly 2 items

b.roomsarray of objectsOptional

Limits: at most 80 items

b.rooms[].namestringRequired

Limits: 1 to 120 characters

Example: Kitchen

b.rooms[].typestring | nullOptional

Room use; omitted = untyped (reported, not scored).

Default: null

Allowed values: kitchenmaster_bedroomchildren_bedroomguest_bedroompoojatoiletbathroomstudyliving_roomdiningstore_roomstairsmain_entrancewater_tank_undergroundwater_tank_overheadswimming_poolseptic_tankborewellgaragebalconycorridor

Example: kitchen

b.rooms[].polygonarray of [number, number]Required

Limits: 3 to 200 items

b.structuresarray of objectsOptional

Limits: at most 80 items

b.structures[].namestringRequired

Limits: 1 to 120 characters

b.structures[].typestringRequired

Allowed values: pillarstaircaseliftmachinekitchen_pitbeamwallstairsmain_entrancewater_tank_undergroundwater_tank_overheadseptic_tankborewell

b.structures[].polygonarray of [number, number]Required

Limits: 3 to 200 items

b.fixturesarray of objectsOptional

Limits: at most 50 items

b.fixtures[].namestringOptional

Default: ""

Limits: at most 120 characters

b.fixtures[].typestringRequired

Allowed values: bedstovedesksafewc

b.fixtures[].position[number, number]Required

Limits: exactly 2 items

b.fixtures[].toward[number, number]Required

A second point in the direction the fixture faces (bed: where the head rests).

Limits: exactly 2 items

b.holesarray of objectsOptional

Open courtyards and cut-outs.

Limits: at most 20 items

b.holes[].namestringOptional

Default: ""

Limits: at most 120 characters

b.holes[].kindstringRequired

Allowed values: courtyardcutout

b.holes[].polygonarray of [number, number]Required

Limits: 3 to 200 items

b.ayadiobject | nullOptional

Ayadi options; Ayadi needs units or a scale.

Default: null

b.ayadi.unitstringOptional

Default: kishku_hasta

Allowed values: kishku_hastakerala_kolcustom

b.ayadi.custom_unit_metresnumber | nullOptional

Default: null

Limits: minimum 0.1, maximum 2

b.ayadi.owner_nakshatrastring | nullOptional

Owner's birth star; enables Tara-bala.

Default: null

Allowed values: AshwiniBharaniKrittikaRohiniMrigashiraArdraPunarvasuPushyaAshleshaMaghaPurva PhalguniUttara PhalguniHastaChitraSwatiVishakhaAnuradhaJyeshthaMulaPurva AshadhaUttara AshadhaShravanaDhanishtaShatabhishaPurva BhadrapadaUttara BhadrapadaRevati

name_astringOptional

Default: A

Limits: 1 to 60 characters

Example: Corner flat

name_bstringOptional

Default: B

Limits: 1 to 60 characters

Example: Garden flat

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.

  • name_a · string
  • name_b · string
  • a · object
  • b · object
  • overall_winner · string
  • verdict · string
  • categories · array of object
  • category_summary · object
  • provisional · boolean
  • scoring_method · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "name_a": "Corner flat",
    "name_b": "Garden flat",
    "a": {
      "overall_score": 61,
      "score_status": "assessed",
      "coverage_pct": 61.1,
      "defect_count": 2,
      "severe_defect_count": 1,
      "brahmasthan_score": 100,
      "brahmasthan_openness_pct": 100,
      "plot_shape": "rectangular"
    },
    "b": {
      "overall_score": 42.7,
      "score_status": "assessed",
      "coverage_pct": 61.1,
      "defect_count": 6,
      "severe_defect_count": 4,
  …

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.

Ayadi Calculation

POSTBeta

https://api.96astro.com/v1/vastu/vastu-ayadi

Ayadi factors (aya-vyaya, yoni, nakshatra, vara) for given dimensions, how many are favourable, and the nearest all-favourable size.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
perimeter_mnumber | nullOptional

Building perimeter in metres.

Default: null

Limits: greater than 0, maximum 10000

length_mnumber | nullOptional

Or: length of a rectangular building.

Default: null

Limits: greater than 0, maximum 5000

Example: 12

breadth_mnumber | nullOptional

And its breadth.

Default: null

Limits: greater than 0, maximum 5000

Example: 9

unitstringOptional

The traditional unit the perimeter is counted in.

Default: kishku_hasta

Allowed values: kishku_hastakerala_kolcustom

Example: kishku_hasta

custom_unit_metresnumber | nullOptional

Length of the custom unit.

Default: null

Limits: minimum 0.1, maximum 2

owner_nakshatrastring | nullOptional

Owner's birth star; enables Tara-bala.

Default: null

Allowed values: AshwiniBharaniKrittikaRohiniMrigashiraArdraPunarvasuPushyaAshleshaMaghaPurva PhalguniUttara PhalguniHastaChitraSwatiVishakhaAnuradhaJyeshthaMulaPurva AshadhaUttara AshadhaShravanaDhanishtaShatabhishaPurva BhadrapadaUttara BhadrapadaRevati

Example: Rohini

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 (3)
ValueMeaning
kishku_hastaKishku hasta
kerala_kolKerala kol
customCustom unit

Response · fields in data

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

  • profile · object
  • unit · object
  • perimeter_m · number
  • perimeter_units · number
  • whole_units · integer
  • holds_between_m · array of number
  • factors · object
  • favourable_count · integer
  • judged_count · integer
  • all_favourable · boolean
  • nearest_favourable · array of object
  • note · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "profile": {
      "id": "mayamata_perimeter_5",
      "name": "Ayadi — Mayamata tradition, perimeter method (five factors)",
      "basis": "perimeter, in whole units of the chosen measure",
      "factors": {
        "aya": {
          "multiplier": 8,
          "divisor": 12
        },
        "vyaya": {
          "multiplier": 9,
          "divisor": 10
        },
        "yoni": {
          "multiplier": 3,
          "divisor": 8
        },
        "nakshatra": {
  …

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.

Vastu + City Score

POSTBeta

https://api.96astro.com/v1/vastu/vastu-combined-with-city

Combines Vastu category scores with a city's location-astrology scores: a combined score and diagnosis per category, and an average.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
vastu_scoresmap of numberRequired

Category scores from vastu-analyse.

Limits: at least 1 entries

location_scoresmap of numberRequired

The city's location-astrology category scores.

Limits: at least 1 entries

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.

  • categories · array of object
  • not_combined · array
  • average_combined_score · number
  • summary · string
  • method · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "categories": [
      {
        "category": "career",
        "vastu_score": 63.3,
        "location_score": 82.4,
        "combined_score": 52.2,
        "diagnosis": "City helps compensate for the house"
      },
      {
        "category": "marriage",
        "vastu_score": 61.9,
        "location_score": 71.5,
        "combined_score": 44.3,
        "diagnosis": "Balanced — both house and city aligned"
      },
      {
        "category": "wealth",
        "vastu_score": 66.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.

Remedy Timing

POSTBeta

https://api.96astro.com/v1/vastu/vastu-auspicious-times

Auspicious days in a range for carrying out a Vastu remedy, optionally for a deity: each day's tier, score, reasons, nakshatra and Brahma and Abhijit muhurta.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
start_datestringRequired

Limits: format date

Example: 2026-10-14

end_datestringRequired

Limits: format date

Example: 2026-10-20

timezonestring | nullOptional

IANA time zone of the place, 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

deitystring | nullOptional

Deity of the remedy; favours that deity's weekday.

Default: null

Allowed values: SunSuryaVishnuRamMoonSomaShivaMahamrityunjayaMarsHanumanDeviKartikeyaMercuryGaneshaSaraswatiJupiterBrihaspatiLakshmi-NarayanVenusLakshmiMahalakshmiDurgaSaturnKaliRahuKetu

Example: Ganesha

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.

  • days · array of object
  • basis · string

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "days": [
      {
        "date": "2026-10-14",
        "weekday": "Wednesday",
        "tier": "best",
        "score": 95,
        "reasons": [
          "Auspicious nakshatra (Anuradha)",
          "Wednesday matches deity Ganesha"
        ],
        "nakshatra_at_sunrise": "Anuradha",
        "sunrise": "06:21",
        "sunset": "17:53",
        "brahma_muhurta": {
          "start": "04:41",
          "end": "05:31"
        },
        "abhijit_muhurta": {
  …

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.

DXF Floor-Plan Import

POSTBeta

https://api.96astro.com/v1/vastu/vastu-import-dxf

Reads an ASCII DXF drawing into a reviewable plan (boundary, north, rooms, scale) with the drawing units and notes.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
dxf_base64stringRequired

The ASCII DXF file, base64-encoded (at most 2 MB decoded).

Limits: 8 to 2796210 characters

Example: MApTRUNUSU9OCjIKSEVBREVSCjkKJEFDQURWRVIKMQpBQzEwMTUKOQokSU5TVU5JVFMKNzAKNgowCkVORFNFQwowClNFQ1RJT04KMgpFTlRJVElFUwowCkxXUE9MWUxJTkUKMTAwCkFjRGJFbnRpdHkKOAowCjEwMApBY0RiUG9seWxpbmUKOTAKNAo3MAoxCjEwCjAKMjAKMAoxMAoxMgoyMAowCjEwCjEyCjIwCjkKMTAKMAoyMAo5CjAKTFdQT0xZTElORQoxMDAKQWNEYkVudGl0eQo4CjAKMTAwCkFjRGJQb2x5bGluZQo5MAo0CjcwCjEKMTAKOQoyMAo2CjEwCjEyCjIwCjYKMTAKMTIKMjAKOQoxMAo5CjIwCjkKMApURVhUCjEwMApBY0RiRW50aXR5CjgKMAoxMDAKQWNEYlRleHQKMTAKMTAuNQoyMAo3LjUKNDAKMC4zCjEKS2l0Y2hlbgowCkVORFNFQwowCkVPRgo=

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.

  • plan · object
  • drawing_units · string
  • notes · array

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "plan": {
      "boundary": [
        [
          40,
          880
        ],
        [
          1160,
          880
        ],
        [
          1160,
          40
        ]
      ],
      "north": {
        "degrees": 0
      },
  …

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.

Vastu Plan Templates

POSTBeta

https://api.96astro.com/v1/vastu/vastu-templates

Lists the starter floor-plan templates with their rooms.

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
include_previewbooleanOptional

Add each template's outline and rooms in percent of the frame, for thumbnails.

Default: false

Example: 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.

  • templates · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "templates": [
      {
        "id": "1bhk_north_entry",
        "name": "1 BHK · North entry",
        "description": "Single bedroom apartment with the main door on the north wall. Classic layout: bedroom SW, kitchen SE, hall NE, pooja in the north-east corner.",
        "room_count": 5,
        "includes": [
          "5 rooms"
        ]
      },
      {
        "id": "2bhk_east_entry",
        "name": "2 BHK · East entry",
        "description": "Two bedroom apartment with main door on the east. Master SW, kids W, kitchen SE, pooja NE.",
        "room_count": 7,
        "includes": [
          "7 rooms"
        ]
  …

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.

Vastu Plan Template

POSTBeta

https://api.96astro.com/v1/vastu/vastu-template

One starter template scaled to the given canvas size.

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

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

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
template_idstringRequired

Allowed values: 1bhk_north_entry2bhk_east_entry3bhk_classicplot_rectangularshop_commercialoffice_floorsample_house_delhi

Example: 3bhk_classic

widthintegerOptional

Width of the frame the template is drawn into.

Default: 1200

Limits: minimum 100, maximum 10000

heightintegerOptional

Height of the frame.

Default: 800

Limits: minimum 100, maximum 10000

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Options (7)
ValueMeaning
1bhk_north_entry1 BHK, North entry
2bhk_east_entry2 BHK, East entry
3bhk_classic3 BHK, Classic
plot_rectangularVacant plot
shop_commercialShop / Commercial
office_floorOffice, Open plan
sample_house_delhiSample house

Response · fields in data

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

  • template_id · string
  • plan · object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "template_id": "3bhk_classic",
    "plan": {
      "boundary": [
        [
          60,
          40
        ],
        [
          1140,
          40
        ],
        [
          1140,
          760
        ]
      ],
      "north": {
        "degrees": 0
  …

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.

Vastu Reference Tables

POSTBeta

https://api.96astro.com/v1/vastu/vastu-reference

The 16 Vastu zones the analysis scores: each with its deity, element, planet, chakra, what it governs and what it suits.

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
sectionsarray of stringOptional

Tables to return.

Default: ["zones","entrances","devatas"]

Each item one of: zonesentrancesdevatas

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.

  • zones · array of object

Try in Playground →Capability overview

Example request

Example response

200application/json
{
  "data": {
    "zones": [
      {
        "code": "N",
        "label": "North",
        "deity": "Kubera",
        "element": "Water",
        "planet": "Mercury",
        "chakra": "Throat",
        "governs": "Wealth, career growth, opportunity flow",
        "favourable_for": "Cash safe, main entrance, study room, water sources",
        "unfavourable_for": "Toilets, kitchens, heavy clutter"
      },
      {
        "code": "NNE",
        "label": "North-North-East",
        "deity": "Soma",
        "element": "Water",
        "planet": "Moon",
  …

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.