---
title: "KP Ruling Planets"
method: POST
path: "/v1/astro/kp/ruling-planets"
tags: ["KP"]
---

# KP Ruling Planets

`POST /v1/astro/kp/ruling-planets`

## Request

- Base URL: `https://api.asterwise.com`
- URL: `https://api.asterwise.com/v1/astro/kp/ruling-planets`
- Auth: HTTP bearer

Computes KP Ruling Planets at a given moment (no natal birth chart). Request body: `latitude`, `longitude`, optional `target_date`, `target_time`, `target_timezone`. KP takes ruling planets at the moment of judgment, so with no `target_date` and no `target_time` the current instant is used. `target_time` alone means that time today; `target_date` alone means 12:00 on that date. Local date and time are read in `target_timezone`, which defaults to the time zone at the coordinates. `target_utc` and `target_timezone` in the response show the instant and zone used. A date not in the calendar (e.g. 2026-02-30) is rejected with 422 saying it does not exist; dates outside 1800-01-01 to 2099-12-31 are rejected with 422 too. A local time skipped by a daylight-saving change is read with the offset before the change (moved forward by the gap), a repeated time as its first occurrence; `local_time_status` says which applied. Works at every latitude, including inside the polar circles: only the ascendant is used, which needs no house cusps (the day lord still needs a sunrise). Returns day lord, Moon sign/nakshatra/sub lords, ascendant sign/nakshatra/sub lords, and the combined list of ruling planets in priority order.

## Request body

- KPRulingPlanetsRequest
  - `latitude` number, required: Location latitude in decimal degrees. North positive, south negative.
  - `longitude` number, required: Location longitude in decimal degrees. East positive, west negative.
  - `target_date` string, nullable: YYYY-MM-DD, local date in `target_timezone`. Omit together with `target_time` to use the current instant. Given without `target_time`, 12:00 local on that date is used. A date that is not in the calendar (e.g. 2026-02-30) is rejected with 422 saying the date does not exist. Supported dates: 1800-01-01 to 2099-12-31.
  - `target_time` string, nullable: HH:MM (24-hour), local time in `target_timezone`. Given without `target_date`, that time today is used. Omit together with `target_date` to use the current instant. A time skipped by a daylight-saving change (e.g. 02:30 on 2026-03-08 in America/New_York) is read with the offset in force before the change, i.e. moved forward by the gap (03:30 EDT); a time that occurred twice is read as the first occurrence. `local_time_status` in the response says which applied.
  - `target_timezone` string, nullable: IANA timezone (or explicit UTC offset) for `target_date` and `target_time`. Defaults to the time zone at the coordinates.

## Response `200`

Successful Response

- ApiResponseKPRulingPlanetsResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` KPRulingPlanetsResponse, required
    - `ayanamsa` string, required
    - `target_utc` string, required: The instant used, ISO 8601 UTC.
    - `target_timezone` string, required: Time zone used to read `target_date`/`target_time` and for the sunrise-based day lord.
    - `local_time_status` 'ok' | 'nonexistent' | 'ambiguous': How `target_date`/`target_time` was read. 'nonexistent': the local time fell in a daylight-saving gap and was read with the offset in force before the change (moved forward by the gap). 'ambiguous': the local time occurred twice and the first occurrence was used. 'ok' otherwise, including when the current instant was used.
    - `day_lord` string, required
    - `moon` KPRulingPlanetBody, required
      - `longitude` number, required
      - `rashi` string, required
      - `sign_lord` string, required
      - `nakshatra_lord` string, required
      - `sub_lord` string, required
    - `ascendant` KPRulingPlanetBody, required
      - `longitude` number, required
      - `rashi` string, required
      - `sign_lord` string, required
      - `nakshatra_lord` string, required
      - `sub_lord` string, required
    - `ruling_planets` string[], required

## Other responses

- `401`: Authentication failed
- `403`: Authorization failed
- `404`: Resource not found
- `413`: Payload too large
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream provider error
- `503`: Service unavailable

---

[API](https://skmtc.dev/asterwise/apis/asterwise-api.md) · [All operations](https://skmtc.dev/asterwise/apis/asterwise-api/llms.txt) · [OpenAPI document](https://skmtc.dev/asterwise/apis/asterwise-api/revisions/3c4bbb1194e2?raw)
