Chart (Kundli)
GET
1 credit

/v1/chart/house-occupants

Which planets are in which houses.

What this tells you

A pre-computed convenience endpoint: which planets sit in which houses. Saves your app from iterating over `/v1/chart/planets` response and bucketing by house.

Request

All requests require an Authorization header with your dv_live_* API key.

example request
curl "https://api.divyastroapi.com/v1/chart/house-occupants?date=2026-04-19&time=06%3A30&tz=%2B05%3A30&lat=28.61&lon=77.21" \
  -H "Authorization: Bearer dv_live_0123456789abcdef0123456789abcdef"

Response (200 OK)

Successful requests return a JSON body. Field names are stable across versions.

200 response
{
  "houses": [
    { "number":  1, "sign": "Cancer",       "occupants": ["Jupiter", "Ketu"] },
    { "number":  2, "sign": "Leo",          "occupants": [] },
    { "number":  3, "sign": "Virgo",        "occupants": [] },
    { "number":  4, "sign": "Libra",        "occupants": [] },
    { "number":  5, "sign": "Scorpio",      "occupants": ["Mars"] },
    { "number":  6, "sign": "Sagittarius",  "occupants": ["Mercury", "Venus"] },
    { "number":  7, "sign": "Capricorn",    "occupants": ["Sun", "Saturn", "Rahu"] },
    { "number":  8, "sign": "Aquarius",     "occupants": [] },
    { "number":  9, "sign": "Pisces",       "occupants": [] },
    { "number": 10, "sign": "Aries",        "occupants": [] },
    { "number": 11, "sign": "Taurus",       "occupants": ["Moon"] },
    { "number": 12, "sign": "Gemini",       "occupants": [] }
  ]
}

Field reference

Every field in the response, with its type, a real example, and what it means.

FieldTypeMeaning
houses[].numberinteger
House number.
example: 1
houses[].signstring
Sign occupying the house.
example: "Cancer"
houses[].occupantsstring[]
Planets currently in the house. Empty array if none.
example: ["Jupiter", "Ketu"]

Usage tips

How to use it

  • Primary chart-drawing data
    For a South Indian chart, this is the single most useful endpoint — render each house with its occupants list.

Errors

Every error follows the same envelope. Use the error.code field (not the message) for conditional logic in your integration.

401 Unauthorized

{
  "error": {
    "code": "unauthorized",
    "message": "missing or invalid API key",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

402 Payment Required

{
  "error": {
    "code": "trial_exhausted",
    "message": "your free trial credits are exhausted — pick a plan to continue",
    "top_up_url": "https://divyastroapi.com/pricing",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

429 Too Many Requests

{
  "error": {
    "code": "rate_limited",
    "message": "rate limit exceeded; retry after 12 seconds",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

Try it

Get a dv_live_* key from your dashboard and paste into the cURL snippet above. New accounts get 500 free credits. Sign up.