curl -X POST https://api.occultapi.com/api/astro/kalsarp/ \
-H "X-API-Key: $OCCULT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date_time":"1990-08-15T10:30:00+05:30","latitude":26.9124,"longitude":75.7873,"timezone_as_float":5.5}'Whether the chart forms Kala Sarpa — all seven grahas from the Sun to Saturn hemmed into one of the two semicircles the Rahu–Ketu axis cuts the zodiac into — and, when it does, which of the twelve named forms it is. Most charts are NOT Kala Sarpa: a single graha on the far side of the axis breaks it. So this does not return a bare yes or no. `between_rahu_and_ketu` and `between_ketu_and_rahu` list which grahas fell on which side, which is what lets you see why the answer came out the way it did — and it is the difference between a chart that misses by one graha and one that misses by four. The twelve names (Anant, Kulik, Vasuki, Shankhpal, Padma, Mahapadma, Takshak, Karkotak, Shankhachud, Ghatak, Vishdhar, Sheshnag) are decided by the house Rahu occupies, and `name` is only filled in when the yoga is actually formed — never for a chart that merely came close. A graha sitting within one degree of either node belongs to neither side. Those are listed in `conjunct_a_node` and set `partial` rather than being pushed onto one side to force a verdict. Positions come from the same engine as /api/astro/planet-positions/, so the longitudes are identical by construction.
| Field | Type | Required | Notes |
|---|---|---|---|
| date_time | string (date-time) | required | The moment to calculate for, ISO 8601. ALWAYS include an offset or a trailing Z - a value with no zone is read as Asia/Kolkata (UTC+05:30), not UTC, and can return the previous day's result with a 200. '2026-09-01T06:00:00Z' and '2026-09-01 06:00:00' are different instants and give different answers. |
| latitude | number (double) | required | Latitude of the place, in decimal degrees. Positive is north, negative is south. Example: 26.9124 for Jaipur, 40.7128 for New York. Minutes and seconds are not accepted - convert first. min -90 · max 90 |
| longitude | number (double) | required | Longitude of the place, in decimal degrees. Positive is east, negative is west. Example: 75.7873 for Jaipur, -74.0060 for New York. Note the sign: a missing minus puts New York in China. min -180 · max 180 |
| ayanamsa | string | optional | |
| timezone_as_float | number (double) | optional | UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30), -5 for New York in winter, 5.75 for Nepal. This is NOT validated against date_time - if the two disagree you get a successful response for the wrong moment, so derive both from the same source. Use the offset in force on that date, not today's: a summer birth in a country with daylight saving needs the summer offset. min -12 · max 14 |