# Occult API — full reference > Vedic astrology as a REST API. 309 endpoints computing panchang, kundli and divisional charts, dashas, yogas, muhurat timings, ashtakavarga, planetary strength, numerology and horoscope matching from NASA JPL ephemeris data. This is the detailed companion to https://occultapi.com/llms.txt, which is an index of links. This file carries the request fields and example for every endpoint, so it can be read without following any of them. ## How to call it Base URL: https://api.occultapi.com Auth: `X-API-Key: yt_live_...` header on every request. Almost everything is POST with a JSON body. Every JSON response uses one envelope: { "data": ..., "status": 200, "is_error": false, "message": "successful" } Branch on `is_error`. On failure, `message` carries a stable machine code: invalid_api_key (401), insufficient_credits (402), endpoint_not_allowed (403), scope_not_allowed (403), api_key_rate_limited (429), or field errors (400). ## Billing, because it changes how you should call this One credit per SUCCESSFUL call. Failed requests cost nothing. Crucially, an endpoint's `keys` array lets one request return many calculations for that same single credit — so batching keys into one call is the cheap path, and looping one call per calculation is the expensive one. Credits are prepaid and never expire. There is no subscription. ## Machine-readable alternatives - OpenAPI 3.1 spec: https://occultapi.com/openapi.json - Brief for coding agents: https://occultapi.com/AGENTS.md - MCP server (searching and reading schemas costs no credits): https://occultapi.com/mcp ## AI & chat ### Astrology chat POST https://api.occultapi.com/api/astro/chat/ Docs: https://occultapi.com/docs/astro/chat Ask a question about a birth chart and get an answer in plain language, grounded in the classical texts. Request body: - birth (object, required): Whose chart the question is about. - question (string, required): What to ask about the chart. - compare_with (object): A second person, for compatibility questions. Optional. - history (array): Earlier turns, oldest first, at most 20. This endpoint stores nothing between calls, so pass back whatever context the answer should take account of. Example request: ```json { "question": "Which planet rules my ascendant, and what does it say about my career?", "birth": { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "place": "Jaipur, India", "name": "Asha", "gender": "female" } } ``` ## PDF reports ### Horoscope PDF report POST https://api.occultapi.com/api/astro/pdf/horoscope/ Docs: https://occultapi.com/docs/astro/pdf/horoscope A complete Vedic horoscope as a finished PDF, in one call. The response body IS the PDF (`application/pdf`) — there is no second request and no hosted file. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - branding (object): Reseller details printed on the cover, header and footer. - chart_style (string, one of north | south | both, default "both"): Which convention the birth chart is drawn in. Both are included by default. - date_time (string): 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. - day (integer, 1..31): Day of the month as a number, 1-31. - gender (string) - hour (integer, 0..23): Hour of birth in 24-hour form, 0-23. Local time at the place of birth. - minute (integer, 0..59) - month (integer, 1..12): Month of birth as a number, 1-12. January is 1. - name (string) - place (string) - timezone_as_float (number, -12..14): 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. - year (integer, 1800..2200): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "name": "Ajeet Kanojia", "gender": "male", "date_time": "1985-02-23T05:45:00+05:30", "latitude": 20.8833, "longitude": 76.2, "timezone_as_float": 5.5, "place": "Malkapur, Maharashtra, India", "chart_style": "both", "branding": { "company_name": "Acme Astrology", "company_info": "Vedic reports since 2011.", "company_email": "hello@acme.example", "company_mobile": "+91 90000 00000", "domain_url": "https://acme.example", "footer_link": "acme.example" } } ``` ### Year Book PDF report POST https://api.occultapi.com/api/astro/pdf/yearbook/ Docs: https://occultapi.com/docs/astro/pdf/yearbook The next twelve months as a finished PDF, divided by dasha period. The response body IS the PDF (`application/pdf`) — one call, nothing stored. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - branding (object): Reseller details printed on the cover, header and footer. - date_time (string): 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. - day (integer, 1..31): Day of the month as a number, 1-31. - gender (string) - hour (integer, 0..23): Hour of birth in 24-hour form, 0-23. Local time at the place of birth. - minute (integer, 0..59) - month (integer, 1..12): Month of birth as a number, 1-12. January is 1. - name (string) - place (string) - start_date (string): First day of the twelve months to cover, YYYY-MM-DD. Defaults to today. Pass the native's next birthday to get a birthday-to-birthday book instead of a rolling one. - timezone_as_float (number, -12..14): 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. - year (integer, 1800..2200): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "name": "Ajeet Kanojia", "gender": "male", "date_time": "1985-02-23T05:45:00+05:30", "latitude": 20.8833, "longitude": 76.2, "timezone_as_float": 5.5, "place": "Malkapur, Maharashtra, India", "start_date": "2026-01-01", "branding": { "company_name": "Acme Astrology", "company_info": "Vedic reports since 2011.", "company_email": "hello@acme.example", "domain_url": "https://acme.example", "footer_link": "acme.example" } } ``` ## Panchang ### Birth panchanga readings (your elements) POST https://api.occultapi.com/api/astro/birth-panchanga-effects/ Docs: https://occultapi.com/docs/astro/birth-panchanga-effects What each of your birth panchanga elements is held to signify. Request body: - hora (string, default "surya") - karana (string, default "bava") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - paksha (string, default "shukla") - tithi (string, default "pratipada") - vaara (string, default "sunday") - yoga (string, default "vishkumbha") Example request: ```json { "tithi": "pratipada", "karana": "bava", "yoga": "vishkumbha", "vaara": "sunday", "hora": "surya", "paksha": "shukla" } ``` ### Chandrabala POST https://api.occultapi.com/api/astro/chandrabala/ Docs: https://occultapi.com/docs/astro/chandrabala Chandra bala: which signs are well placed relative to the Moon's current sign. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Day and night length POST https://api.occultapi.com/api/astro/day-night-length/ Docs: https://occultapi.com/docs/astro/day-night-length How long the day and the night are, and where their midpoints fall. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-06-02T06:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Disha shool POST https://api.occultapi.com/api/astro/disha-shool/ Docs: https://occultapi.com/docs/astro/disha-shool The direction not to set out towards today, with its Hindi name. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Karana POST https://api.occultapi.com/api/astro/karana/ Docs: https://occultapi.com/docs/astro/karana The karana in force - half a tithi - and every one touching the day. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Lunar month POST https://api.occultapi.com/api/astro/lunar-month/ Docs: https://occultapi.com/docs/astro/lunar-month The lunar month under both reckonings, and the season. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string, one of vedic | drik, default "drik") - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Lunar phase POST https://api.occultapi.com/api/astro/lunar-phase/ Docs: https://occultapi.com/docs/astro/lunar-phase Which paksha the Moon is in, and how far through the lunation. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-06-02T06:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Nakshatra POST https://api.occultapi.com/api/astro/nakshatra/ Docs: https://occultapi.com/docs/astro/nakshatra The Moon's nakshatra now, and every nakshatra touching the local day. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Nitya yoga POST https://api.occultapi.com/api/astro/nitya-yoga/ Docs: https://occultapi.com/docs/astro/nitya-yoga The Nityayoga in force, and every one touching the day. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Panchak POST https://api.occultapi.com/api/astro/panchak/ Docs: https://occultapi.com/docs/astro/panchak The day divided into windows, each labelled with the panchaka it falls under. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Panchang (five limbs) POST https://api.occultapi.com/api/astro/panchang/ Docs: https://occultapi.com/docs/astro/panchang The five limbs of the panchanga - tithi, vaara, nakshatra, yoga and karana - and nothing else. This is what the word means in ordinary use. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Birth panchanga effects (reference table) POST https://api.occultapi.com/api/astro/panchang_element_birth_effect/ Docs: https://occultapi.com/docs/astro/panchang_element_birth_effect The limbs of the panchanga — weekday, tithi, karana, yoga and fortnight, plus the planetary hora — each carry a classical character reading for a person born under them. This endpoint is the lookup table for those readings. Request body: - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - hora (string, one of surya | chandra | mangala | budha | brihaspati | shukra | shani) - karana (string, one of bava | balava | kaulava | taitila | gara | vanija | vishti | shakuni | chatushpada | naga | kimstughna) - paksha (string, one of shukla | krishna) - tithi (string, one of pratipada | dvitiya | tritiya | chaturthi | panchami | shashthi | saptami | ashtami | navami | dashami | ekadashi | dvadashi … (16 total)) - vaara (string, one of sunday | monday | tuesday | wednesday | thursday | friday | saturday) - yoga (string, one of vishkumbha | priti | ayushman | saubhagya | shobhana | atiganda | sukarma | dhriti | shula | ganda | vriddhi | dhruva … (27 total)) Calculations available via `keys` (13, all one credit): get_all_hora_keys, get_all_karana_keys, get_all_keys_summary, get_all_paksha_keys, get_all_tithi_keys, get_all_vaara_keys, get_all_yoga_keys, get_birth_hora_result, get_birth_karana_effects, get_birth_paksha_effects, get_birth_panchang_yoga_effects, get_birth_tithi_effects, get_vaara_during_birth Example request: ```json { "keys": [ "get_vaara_during_birth" ], "vaara": "sunday", "hora": "surya", "paksha": "shukla", "tithi": "pratipada", "karana": "bava", "yoga": "vishkumbha" } ``` ### Panchanga POST https://api.occultapi.com/api/astro/panchanga/ Docs: https://occultapi.com/docs/astro/panchanga The panchanga is the Hindu almanac for one moment at one place: five 'limbs' — tithi, vaara, nakshatra, yoga and karana — plus everything else a printed panchang carries. This is the largest endpoint in the API, with fifty-seven keys, and most callers use a handful. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string, one of vedic | drik) - nakshatras (string, one of special) - samvata_type (string, one of shaka | vikram) - tolerance (number) Calculations available via `keys` (57, all one credit): abhijit_muhurta, agni_vasa_segments, amrit_kalam, bhaava_madhya_sripati, bhaava_madhya_swe, brahma_muhurta, calcualte_special_tithi, chandrabalam, choghadiya, day_length, disha_shool, do_ghati, durmuhurata, eccentric_anomaly, gauri_choghadiya, godhuli_muhurta, gulika_kaalam, hora, kali_samvat, karana, karana_segments, lagnas, lunar_month, lunar_month_poornima, lunar_phase, midday, midnight, nakshatra_segments, night_length, nishita_muhurta, panchaka_rahita, pratah_sandhya, rahu_kaalam, ritu, samvatsara_name, sankranti_dates, sayahna_sandhya, shaka_samvat, shiva_vasa_segments, shunya_nakshatra, special_longitudes, sree_lagna, tamil_solar_month_date, tarabala, tithi, tithi_segments, trikalam, true_anomaly, udaya_lagna_muhurta, upagraha_longitudes, vaara, vijaya_muhurta, vikram_samvat, yamaganda_kaalam, yoga_segments, yogam, yogas Example request: ```json { "date_time": "2026-06-02T06:30:52.786Z", "keys": [ "midday" ], "latitude": 26.849, "longitude": 75.768, "timezone_as_float": 5.5, "samvata_type": "shaka", "mode": 0, "mean_anomaly": 0, "eccentricity": 1, "tolerance": 0.000001, "gulika_rises_at": "beginning", "mandi_rises_at": "middle", "kala_mrityu_rise_at": "middle", "dhuma_vyatipata_relation": "360_minus_dhuma" } ``` ### Panchanga yogas POST https://api.occultapi.com/api/astro/panchanga_yogas/ Docs: https://occultapi.com/docs/astro/panchanga_yogas A Panchanga yoga is a named quality a whole day carries, good or bad, arising from the combination of that day's lunar day (tithi), weekday (vaara) and lunar mansion (nakshatra). Sarvartha Siddhi ("all purposes succeed"), Amrit Siddhi, Tripushkara, Dagdha, Mrityu and Yamaghanta are the familiar ones. Muhurta practice uses them as a first filter: pick a day that carries a benefic combination and avoid one that carries a malefic one. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - use_28_nakshatras (boolean, default true) Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Panchanga element names POST https://api.occultapi.com/api/astro/panchanga-elements/ Docs: https://occultapi.com/docs/astro/panchanga-elements Every value the birth-effect lookup accepts, for all six elements. Request body: - hora (string, default "surya") - karana (string, default "bava") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - paksha (string, default "shukla") - tithi (string, default "pratipada") - vaara (string, default "sunday") - yoga (string, default "vishkumbha") Example request: ```json {} ``` ### Samvat years POST https://api.occultapi.com/api/astro/samvat/ Docs: https://occultapi.com/docs/astro/samvat The year in the Indian eras: Vikram, Shaka and Kali, plus its name in the sixty-year Jovian cycle. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string, one of shaka | vikram, default "vikram") - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Sankranti dates POST https://api.occultapi.com/api/astro/sankranti/ Docs: https://occultapi.com/docs/astro/sankranti The previous and next Sankranti — the Sun's entry into a sidereal sign. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-06-02T06:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Tarabala POST https://api.occultapi.com/api/astro/tarabala/ Docs: https://occultapi.com/docs/astro/tarabala Tara bala: which of the twenty-seven birth nakshatras are well placed against the nakshatra the Moon is transiting. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Tithi POST https://api.occultapi.com/api/astro/tithi/ Docs: https://occultapi.com/docs/astro/tithi The lunar day in force at the moment you ask, with its start, end and how much of it is left, plus every tithi touching the local day. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ## Muhurta & timings ### Abhijit muhurat POST https://api.occultapi.com/api/astro/abhijit-muhurat/ Docs: https://occultapi.com/docs/astro/abhijit-muhurat Abhijit muhurta as a single {start, end} window. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Weekday activities POST https://api.occultapi.com/api/astro/activities_day_of_week/ Docs: https://occultapi.com/docs/astro/activities_day_of_week Each day of the week is ruled by a planet, and Vedic tradition assigns every weekday a set of undertakings it favours — particular metals, materials, trades and kinds of work. This endpoint returns that guidance as written English prose, one paragraph per weekday. Request body: - keys (array, required, one of get_week_activities | get_all_weeks): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - week (string, one of sunday | monday | tuesday | wednesday | thursday | friday | saturday) Calculations available via `keys` (2, all one credit): get_all_weeks, get_week_activities Example request: ```json { "keys": [ "get_week_activities" ], "week": "sunday" } ``` ### Amrit kaal POST https://api.occultapi.com/api/astro/amrit-kaal/ Docs: https://occultapi.com/docs/astro/amrit-kaal Amrit kaal: the day's most favourable windows. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Auspicious timings POST https://api.occultapi.com/api/astro/auspicious-timings/ Docs: https://occultapi.com/docs/astro/auspicious-timings The favourable windows of the day: abhijit, brahma, godhuli, nishita, vijaya and amrit kalam. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Brahma muhurat POST https://api.occultapi.com/api/astro/brahma-muhurat/ Docs: https://occultapi.com/docs/astro/brahma-muhurat Brahma muhurta as a single {start, end} window. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Choghadiya POST https://api.occultapi.com/api/astro/choghadiya/ Docs: https://occultapi.com/docs/astro/choghadiya The choghadiya: the daylight and the night each divided into eight parts, each named for its quality, plus which one is running at the moment you asked. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Durmuhurat POST https://api.occultapi.com/api/astro/durmuhurat/ Docs: https://occultapi.com/docs/astro/durmuhurat Durmuhurta: the one or two short unfavourable windows of the day. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Planetary hours (hora) POST https://api.occultapi.com/api/astro/hora/ Docs: https://occultapi.com/docs/astro/hora The twenty-four planetary hours - twelve dividing sunrise to sunset and twelve dividing sunset to the next sunrise - each with its ruling planet. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Inauspicious timings POST https://api.occultapi.com/api/astro/inauspicious-timings/ Docs: https://occultapi.com/docs/astro/inauspicious-timings Every period of the day traditionally avoided, in one call: rahu kaal, yamaganda, gulika, durmuhurta, and disha shool, the direction not to travel towards. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Ceremony muhurats POST https://api.occultapi.com/api/astro/muhurat/ Docs: https://occultapi.com/docs/astro/muhurat Finds the times within a date range at which one of five Hindu rites of passage may be performed. Each rite has its own list of permitted nakshatras plus further conditions on tithi, weekday or the Sun's sign, and every sampling instant in the range is tested against all five. Request body: - birth_date (string, required) - date_time (string, 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. - end_date (string, required) - interval_hours (integer, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - start_date (string, required) - timezone (number, required, -12..14): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. Calculations available via `keys` (1, all one credit): find_muhurats_in_range Example request: ```json { "keys": [ "find_muhurats_in_range" ], "date_time": "2025-03-27T13:50:05.104Z", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "start_date": "2025-02-27T13:50:05.104Z", "end_date": "2025-03-27T13:50:05.104Z", "birth_date": "2025-03-27T13:50:05.104Z", "interval_hours": 2 } ``` ### Muhurta table POST https://api.occultapi.com/api/astro/muhurta-table/ Docs: https://occultapi.com/docs/astro/muhurta-table All thirty muhurtas of the day: fifteen dividing sunrise to sunset and fifteen dividing sunset to the next sunrise. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Rahu kaal POST https://api.occultapi.com/api/astro/rahu-kaal/ Docs: https://occultapi.com/docs/astro/rahu-kaal Rahu kaal, and the two periods always quoted beside it - yamaganda and gulika. Three windows, each {start, end}. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Ravi yoga windows POST https://api.occultapi.com/api/astro/ravi_yoga/ Docs: https://occultapi.com/docs/astro/ravi_yoga Ravi Yoga is present when the Moon's nakshatra stands 4, 6, 9, 10, 13 or 20 places from the Sun's. It is treated as an auspicious window that overrides an otherwise unfavourable muhurta, and is commonly used for house-warmings, taking delivery of a vehicle, opening a shop and similar one-off acts. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Sandhya windows POST https://api.occultapi.com/api/astro/sandhya/ Docs: https://occultapi.com/docs/astro/sandhya The two twilight observance windows: pratah in the morning and sayahna in the evening, each {start, end}. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Agni vasa and Shiva vasa POST https://api.occultapi.com/api/astro/vasa-segments/ Docs: https://occultapi.com/docs/astro/vasa-segments Where fire and Shiva are held to reside through the day, as timed segments. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-09T06:00:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ## Sunrise & moonrise ### Moonrise and moonset POST https://api.occultapi.com/api/astro/moonrise/ Docs: https://occultapi.com/docs/astro/moonrise Moonrise and moonset for a date and place, with the time the moon spends above the horizon in seconds. For the sun, use /api/astro/sunrise/. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Sunrise and sunset POST https://api.occultapi.com/api/astro/sunrise/ Docs: https://occultapi.com/docs/astro/sunrise Sunrise and sunset for a date and place, with the length of the day in seconds. For the moon, use /api/astro/moonrise/. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ## Lunar ### Lunar mansions POST https://api.occultapi.com/api/astro/lunar/mansions/ Docs: https://occultapi.com/docs/astro/lunar/mansions Which of the twenty-eight manazil the Moon occupies. Request body: - date_time (string, 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Void of course Moon POST https://api.occultapi.com/api/astro/lunar/void-of-course/ Docs: https://occultapi.com/docs/astro/lunar/void-of-course Whether the Moon will make any further aspect before it changes sign. Request body: - date_time (string, 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. - include_modern (boolean, default false): Count aspects to Uranus, Neptune and Pluto as well. Traditional practice uses the seven classical bodies only, and adding three more makes void periods markedly rarer. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Moon illumination and phase POST https://api.occultapi.com/api/astro/moon-illumination/ Docs: https://occultapi.com/docs/astro/moon-illumination How much of the Moon is lit, as a real fraction. Request body: - date_time (string, 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. - altitude (number, default 0): OBSERVER elevation in metres, not a body's altitude. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - planet_names (array, default ["SUN","MOON"]): Ignored. This endpoint always reads the Sun and the Moon. - time_zone (number, -12..14, default 0): UTC offset. Either this or timezone_as_float; they mirror. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-09T12:00:00+00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 0 } ``` ## Calendars ### Assamese calendar POST https://api.occultapi.com/api/astro/assamese_calendar/ Docs: https://occultapi.com/docs/astro/assamese_calendar The Assamese year for a given Gregorian year: the Bihus, the Sankrantis, the eclipses and the pan-Indian festivals as Assam observes them, each resolved to the civil date on which it is actually kept at the place you give. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Bengali calendar POST https://api.occultapi.com/api/astro/bengali_calendar/ Docs: https://occultapi.com/docs/astro/bengali_calendar The Bengali year for a given Gregorian year: Pohela Boishakh and the solar new year, the twelve Sankrantis, Durga Puja and the rest of the autumn sequence, Kali Puja, Bhai Phonta, Jagaddhatri Puja and the pan-Indian festivals as Bengal observes them. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Gujarati calendar POST https://api.occultapi.com/api/astro/gujarati_calendar/ Docs: https://occultapi.com/docs/astro/gujarati_calendar The Gujarati year for a given Gregorian year, resolved to the civil dates on which each observance is kept at the place you give. The Gujarati calendar is amanta luni-solar on the Vikrama Samvat era, whose new year falls at Bestu Varsh the day after Diwali rather than in spring, so the shape of the year differs from the Bengali and Assamese ones. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### ISKCON calendar POST https://api.occultapi.com/api/astro/iskcon_calendar/ Docs: https://occultapi.com/docs/astro/iskcon_calendar The Vaishnava calendar kept by ISKCON: a full year of Ekadashis, the appearance and disappearance days of the acharyas, and the major festivals, dated by Gaudiya reckoning rather than the general Hindu one. Months carry the twelve names of Vishnu — Madhava, Govinda, Damodara and the rest — the two fortnights are Krishna and Gaura, and years are counted in the Gaurabda era. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Kannada calendar POST https://api.occultapi.com/api/astro/kannada_calendar/ Docs: https://occultapi.com/docs/astro/kannada_calendar A year of festivals and observances as kept in Karnataka. The Kannada calendar is amanta luni-solar on the Shaka era — months run from one new moon to the next — and its festival set covers the Ekadashis, the twelve Sankrantis, eclipses, and the regional days: Yugadi, Gowri Habba, Kamanahabba, the Karaga festival, Sakat and Karwa Chauth. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Malayalam calendar POST https://api.occultapi.com/api/astro/malayalam_calendar/ Docs: https://occultapi.com/docs/astro/malayalam_calendar A year of Kerala observances on the Malayalam (Kollam era) calendar, which is solar: months begin with the Sun's entry into each sidereal sign, and the year opens at Chingam Sankramam in August. The list covers the twelve Sankramams, the Kerala temple festivals and vratas — Thiruvathira, Makaravilakku, Attukal Pongal, Painkuni Uthram, Guruvayur Ekadasi, the start of Mandalakala — and the pan-Indian days as observed there. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Marathi calendar POST https://api.occultapi.com/api/astro/marathi_calendar/ Docs: https://occultapi.com/docs/astro/marathi_calendar A year of Maharashtrian festivals and vratas. The Marathi calendar is amanta luni-solar on the Shaka era, the same month scheme as Kannada and Telugu. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Monthly panchang POST https://api.occultapi.com/api/astro/monthly_panchang/ Docs: https://occultapi.com/docs/astro/monthly_panchang One row per calendar day for a whole Gregorian month — the grid a panchang wall calendar prints. Each day carries sunrise, sunset, moonrise and moonset, the weekday in Sanskrit, the lunar month under both reckonings, the Vikram and Shaka years with their sixty-year cycle names, and the tithi, Moon sign and Moon nakshatra prevailing at that day's sunrise. Request body: - latitude (number, 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. - longitude (number, 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. - month (integer, required, 1..12): Month of birth as a number, 1-12. January is 1. - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - moon_option (string, one of purnimanta | amanta, default "purnimanta") Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "month": 9, "timezone_as_float": 5.5, "year": 2026, "moon_option": "purnimanta" } ``` ### Nepali calendar POST https://api.occultapi.com/api/astro/nepali_calendar/ Docs: https://occultapi.com/docs/astro/nepali_calendar A year of Nepali festivals and observances on the Bikram Sambat calendar. The Nepali calendar is solar — twelve months each opening with the Sun's entry into a sidereal sign, Baishakh first — and the response reports the Bikram Sambat year or year-pair spanning the Gregorian year you asked for. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Odia calendar POST https://api.occultapi.com/api/astro/odia_calendar/ Docs: https://occultapi.com/docs/astro/odia_calendar A year of Odia (Oriya) festivals on the Vilayati era calendar. The list is dominated by three groups: the twelve Sankrantis under their Odia names — Mahabisuba Pana, Brusha, Raja, Dakhinaya Karkata, Singha, Garbhana and the rest — all the Ekadashis under Odia names such as Sattila, Pankoddhar, Jala Krida, Khalilagi and Kaliyadalan, and the major lunar festivals: Rath Yatra, Gamha Purnima, Savitri Amabasya, Mahastami and Dasahara. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Onam calendar POST https://api.occultapi.com/api/astro/onam_calendar/ Docs: https://occultapi.com/docs/astro/onam_calendar Onam is not one day but a sequence keyed to consecutive nakshatras, running from Atham (Hasta) through Thiruvonam to Chathayam. This endpoint returns that whole window for a given year, one row per civil day. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Tamil calendar POST https://api.occultapi.com/api/astro/tamil_calendar/ Docs: https://occultapi.com/docs/astro/tamil_calendar The Tamil calendar is solar rather than lunar, and that is what separates it from most of the other regional calendars here. A month begins the moment the Sun enters a new sidereal sign, so the twelve months (Chithirai, Vaikasi, Aani, Aadi, Aavani, Purattasi, Aippasi, Karthigai, Margazhi, Thai, Maasi and Panguni) follow the Sun's position and start on roughly the same Gregorian dates each year, with Chithirai opening the year around 14 April. Day one of a month is fixed by the sunset rule: if the Sun's ingress falls between sunrise and sunset, that civil day is day one, and if it falls after sunset the following day is. The Telugu, Marathi, Gujarati and Kannada calendars, by contrast, count months from a new or full Moon. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Telugu calendar POST https://api.occultapi.com/api/astro/telugu_calendar/ Docs: https://occultapi.com/docs/astro/telugu_calendar The Telugu calendar is Amanta luni-solar: months run from one new Moon to the next, carry Telugu names (Chaithramu, Vaisakhamu, Jyesthamu, Ashadhamu, Sravanamu, Bhadhrapadamu, Asvayujamu, Karthikamu, Margasiramu, Pushyamu, Maghamu and Phalgunamu), and the year is reckoned in Shaka Samvat and opens at Ugadi on Chaithramu Shukla Padyami. The underlying month arithmetic, adhika-month detection included, is the same one the Marathi and Kannada calendars use — the difference between those three is the month naming and the festival list, not the astronomy. It is not the solar sign-to-sign scheme of the Tamil and Malayalam calendars. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 2006..2046): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ## Festivals & vrats ### Hindu festivals POST https://api.occultapi.com/api/astro/festival/ Docs: https://occultapi.com/docs/astro/festival Every Hindu festival of a calendar year computed from first principles for the place you give, together with the ekadashis and the Jain, Sikh and Christian observances the engine tracks. Unlike the regional calendar endpoints, which return a curated list per tradition, this is the full pan-Indian set with the exact tithi window attached to each entry. Request body: - date_time (string, 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. - keys (array, required, one of calculate_festivals): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - moon_option (string, required, one of amavas | poornima) - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. Calculations available via `keys` (1, all one credit): calculate_festivals Example request: ```json { "keys": [ "calculate_festivals" ], "moon_option": "amavas", "year": 2025, "date_time": "2025-02-12T08:35:00.795Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Festival calendar POST https://api.occultapi.com/api/festivals/ Docs: https://occultapi.com/docs/festivals Precomputed festival dates across four traditions, read straight from a table rather than calculated on the request, so a whole year comes back in one indexed query. `keys` chooses which lists you want: `festivals` is the main Hindu calendar, `ekadashis` the twenty-four or twenty-six named Ekadashis of the year, and `jain_festivals`, `sikh_festivals` and `christian_festivals` the corresponding calendars. Request body: - keys (array, required, one of festivals | ekadashis | jain_festivals | sikh_festivals | christian_festivals): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - month (integer, 1..12): Month of birth as a number, 1-12. January is 1. Example request: ```json { "year": 2026, "month": 9, "keys": [ "festivals", "ekadashis" ] } ``` ### Vrat and upavas POST https://api.occultapi.com/api/vrat-upavas/ Docs: https://occultapi.com/docs/vrat-upavas Vrat and upavas are the recurring fasting and observance days of the Hindu month, each tied to a particular tithi. This endpoint returns every occurrence of the types you ask for across a whole year, read from a precomputed table rather than calculated on the request, so a year of eighteen observance types is one indexed query. Request body: - keys (array, required, one of amavasya | ashtaka | chandra_dharshan | durgashtami | ekadashi | kaalashtami | mahalaya_paksha | manvaadhi | moondraam_pirai | pournami | pradosham | sankatahara_chathurthi … (18 total)): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number): 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. Example request: ```json { "year": 2026, "month": 9, "keys": [ "ekadashi", "amavasya", "pradosham" ] } ``` ## Birth chart & houses ### Chart attributes POST https://api.occultapi.com/api/astro/attributes/ Docs: https://occultapi.com/docs/astro/attributes A grab-bag of twelve small chart quantities returned in one call — the sort of thing you would otherwise make a dozen requests for. It always computes all twelve, whatever you send. Request body: - date_time (string, 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. - chart_factor (integer, default 1): Divisional chart factor for dasavarga_from_longitude (1=Rashi, 9=Navamsa, etc.). - limitdays (integer, default 30): Search window in days for search_moon_phase. - longitude (number, -180..180, default 0): 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. - lord (string, one of saturn | jupiter | mars | sun | venus | Mercury | moon | ascendant, default "saturn"): Planetary lord used by get_kakshya_number. - nakshatras (string, default "") - name (string, one of Aardra | Aasresha | Abhijit | Anooraadha | Anuradha | Ardra | Ashlesha | Ashwini | Bharani | Chitra | Dhanishta | Dhanishtha … (45 total), default "Ashwini"): Nakshatra name used by get_nakshatra_details. - target_phase (integer, default 0): Moon phase to search for: 0=new, 1=first quarter, 2=full, 3=last quarter. - when (string) - year (integer, default 2026): Year of birth as a number, e.g. 1990. Four digits. - zodiac (string, one of Aries | Taurus | Gemini | Cancer | Leo | Virgo | Libra | Scorpio | Sagittarius | Capricorn | Aquarius | Pisces, default "Aries"): Zodiac sign used by get_hadda_lord. Example request: ```json { "date_time": "2024-11-21T07:45:44.368Z", "longitude": 76.125, "name": "Ashwini", "zodiac": "Aries", "lord": "saturn", "target_phase": 0, "limitdays": 30, "year": 1, "chart_factor": 1 } ``` ### Bhava cusps POST https://api.occultapi.com/api/astro/bhava-cusps/ Docs: https://occultapi.com/docs/astro/bhava-cusps The twelve house cusps under two systems, side by side. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Birth chart POST https://api.occultapi.com/api/astro/chart/ Docs: https://occultapi.com/docs/astro/chart The core chart endpoint: planetary positions, house divisions and the ascendant for a moment and a place. Ask for the Rashi chart (D-1) for an ordinary birth chart, or any of thirty-odd divisional charts — Navamsa, Dasamsa, Dwadasamsa, Shashtyamsa and the rest — by name, and pass an array of names to get several back in one call, keyed by chart name. Request body: - ascendant_pos (string, required, one of cusp | start | end) - ayanamsa (string, required, one of FAGAN_BRADLEY | LAHIRI | DELUCE | RAMAN | USHASHASHI | KRISHNAMURTI | DJWHAL_KHUL | YUKTESHWAR | JN_BHASIN | BABYL_KUGLER1 | BABYL_KUGLER2 | BABYL_KUGLER3 … (48 total)) - chart_name (string, required, one of BhavaChart | RashiChart | HoraChart | JagannathHoraChart | ParivrittidwayaHoraChart | ParivrittitrayaDrekkanaChart | DrekkanaChart | SomnathDrekkanaChart | JagannathDrekkanaChart | ChaturthamsaChart | PanchamsaChart | ShashthamsaChart … (32 total)) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -180..180): 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. - longitude (number, required, -180..180): 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. - notation (string, required, one of astrological | degree) - aberration (boolean, default true) - apply_correction (boolean, default false) - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array, one of asteroids | planetary_moons | fictitious_bodies): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "NavamsaChart", "datetime": "2026-04-09T15:35:00+05:30", "longitude": 75.76861133842026, "latitude": 26.849874414615, "notation": "degree", "ayanamsa": "lahiri", "ascendant_pos": "cusp", "rahu": "true", "true_mean": "Mean", "refraction": false, "apply_correction": false, "correction_direction": "add", "correction_deg": 0, "correction_min": 0, "correction_sec": 0 } ``` ### Chart analysis POST https://api.occultapi.com/api/astro/chart_analysis/ Docs: https://occultapi.com/docs/astro/chart_analysis Fourteen structural readings of a birth chart in a single call, plus one comparison between a natal chart and a transit chart. This is the interpretive layer above /api/astro/chart/: it does not give you positions, it gives you what those positions amount to. Request body: - chart_name_natal (string, required) - chart_name_transit (string, required) - date_time_natal (string, required) - date_time_transit (string, required) - latitude_natal (number, required, -180..180) - latitude_transit (number, required, -180..180) - longitude_natal (number, required, -180..180) - longitude_transit (number, required, -180..180) - mode (integer, required, one of 7 | 8) - rahu (string, required, one of true | mean) - ref_celestial (string, required, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | northtruenode | northmeannode … (15 total)) - target_celestial (string, required, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | northtruenode | northmeannode … (15 total)) - bhava_arudha_exceptions (boolean, default true) - graha_arudha_exceptions (boolean, default true) - nakshatras (string) Example request: ```json { "date_time_natal": "2025-11-21T05:45:23.715Z", "date_time_transit": "2024-11-21T05:45:23.715Z", "longitude_natal": 77.5946, "latitude_natal": 12.9716, "longitude_transit": 26.1046, "latitude_transit": 26.9124, "chart_name_natal": "RashiChart", "chart_name_transit": "RashiChart", "ref_celestial": "mercury", "target_celestial": "mars", "rahu": "true", "mode": 0 } ``` ### House lord placements (all 144) POST https://api.occultapi.com/api/astro/effect_house_lord_different_house/ Docs: https://occultapi.com/docs/astro/effect_house_lord_different_house The lord of a house carries that house's affairs into whichever house it sits in, and the 144 possible pairings — twelve lords in twelve houses — are one of the oldest interpretive tables in Vedic astrology. The lord of the 2nd in the 11th says something about money that the lord of the 2nd in the 12th does not. Request body: - h2 (string, required, one of lagna | dhana | sahaja | sukha | mantra | ari | dara | randhra | bhagya | karma | labha | vyaya) - house (string, required, one of lagnesha | dhanesha | sahajesha | sukhesha | mantresha | shashthesha | daresha | randhresha | bhagyesha | karmesha | labhesha | vyayesha) - keys (array, required, one of get_effect_house_lord_different_house): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Calculations available via `keys` (1, all one credit): get_effect_house_lord_different_house Example request: ```json { "keys": [ "get_effect_house_lord_different_house" ], "house": "lagnesha", "h2": "lagna" } ``` ### House cusps POST https://api.occultapi.com/api/astro/house/ Docs: https://occultapi.com/docs/astro/house The twelve house divisions for a moment and a place, in whichever house system you name. Vedic practice usually takes whole signs as houses, but this endpoint exposes the full ephemeris range — Placidus, Koch, Campanus, Regiomontanus, Sripati, Porphyry, equal and whole-sign among two dozen — so you can cast the same chart in the system a given tradition expects. Positions are sidereal. Request body: - date_time (string, 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. - keys (array, required, one of set_house_method | houses | house_ranges | house_starts | house_cusps | house_ends | change_house_system): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - method_name (string, required, one of equal | alcabitius | campanus | equal (mc) | carter poli-equ. | gauquelin sectors | horizon/azimut | sunshine | savard-a | koch | pullen sd | morinus … (24 total)) - notation (string, required, one of astrological | degree) - timezone_as_float (number, required, -12..14): 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. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. Calculations available via `keys` (7, all one credit): change_house_system, house_cusps, house_ends, house_ranges, house_starts, houses, set_house_method Example request: ```json { "keys": [ "set_house_method" ], "latitude": 26.9124, "longitude": 26.1046, "timezone_as_float": 5.5, "method_name": "equal", "notation": "astrological", "date_time": "2024-11-18" } ``` ### House relationships POST https://api.occultapi.com/api/astro/house_hora/ Docs: https://occultapi.com/docs/astro/house_hora The relational structure of a birth chart: which signs aspect which, which planets aspect which, who is whose friend, and which planets the classical texts single out as significant for a chart's turning points. This is much of the machinery behind Jaimini and Parashari judgement, exposed one piece at a time. Request body: - date_time (string, 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. - keys (array, required, one of trikonas | dushthanas | chathusras | quadrants | kendras | upachayas | chara_karakas | raasi_drishti_of_the_planet | aspected_planets_of_the_planet | aspected_rasis_of_the_planet | aspected_houses_of_the_planet | aspected_houses_of_the_raasi … (29 total)): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - node (string, required, one of true | mean) - planet (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - raasi (integer, required, one of 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11) - timezone_as_float (number, required, -12..14): 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. Calculations available via `keys` (29, all one credit): argala, aspected_houses_of_the_planet, aspected_houses_of_the_raasi, aspected_planets_of_the_planet, aspected_raasis_of_the_raasi, aspected_rasis_of_the_planet, associations_of_the_planet, baadhakas_of_raasi, brahma, chara_karakas, chathusras, dushthanas, kendras, maheshwara, maheshwara_from_planet_positions, marakas, marakas_from_planet_positions, natural_enemies_of_planets, natural_friends_of_planets, natural_neutral_of_planets, order_of_planets_by_strength, planets_aspecting_the_planet, quadrants, raasi_drishti_of_the_planet, rudra, rudra_based_on_planet_positions, trikonas, trishoola_rasis, upachayas Example request: ```json { "keys": [ "trikonas" ], "raasi": 2, "planet": "Mars", "node": "mean", "date_time": "2025-02-12T09:35:49.036Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### House significations POST https://api.occultapi.com/api/astro/house_information/ Docs: https://occultapi.com/docs/astro/house_information Every house of a chart — the twelve bhavas — governs a bundle of life matters: the fourth home and mother, the seventh partnership, the tenth career. This endpoint returns the reference sheet for one of them: what it stands for, its element and quality, the themes it rules grouped under headings, and how to judge it from the house lord, the planets in it and its natural significators. Request body: - house_number (integer, required, one of 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12) - keys (array, required, one of get_house_info): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Calculations available via `keys` (1, all one credit): get_house_info Example request: ```json { "keys": [ "get_house_info" ], "house_number": 4 } ``` ### House lord placement (one pair) POST https://api.occultapi.com/api/astro/house_lord_particular_house/ Docs: https://occultapi.com/docs/astro/house_lord_particular_house The lord of a house carries that house's matters wherever it goes, so the classics have a specific statement for each of the 144 combinations — twelve lords in twelve places. This endpoint returns the statement for one pair. Request body: - house (string, required, one of lagna | dhana | sahaja | sukha | putra | satru | yuvati | randhara | dharma | karma | labha | vyaya) - keys (array, required, one of get_house_lord): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - number (integer, required, one of 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12) Calculations available via `keys` (1, all one credit): get_house_lord Example request: ```json { "keys": [ "get_house_lord" ], "house": "lagna", "number": 4 } ``` ### Special lagnas POST https://api.occultapi.com/api/astro/lagna/ Docs: https://occultapi.com/docs/astro/lagna The special ascendants: the five fast-moving lagnas and Sree Lagna. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Part of Fortune POST https://api.occultapi.com/api/astro/part-of-fortune/ Docs: https://occultapi.com/docs/astro/part-of-fortune The Part of Fortune, computed with the correct formula for the chart's sect. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - sect (string, one of auto | day | night, default "auto"): Which formula to use. `auto` decides from the Sun's actual altitude at the birth moment, which is what sect means. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "sect": "auto" } ``` ## Divisional charts ### Akshavedamsa (D45) POST https://api.occultapi.com/api/astro/akshavedamsa/ Docs: https://occultapi.com/docs/astro/akshavedamsa The akshavedamsa, the forty-fifth divisional chart: each sign divided into forty-five parts of 40' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Ashtamsa (D8) POST https://api.occultapi.com/api/astro/ashtamsa/ Docs: https://occultapi.com/docs/astro/ashtamsa The ashtamsa, the eighth divisional chart: each sign divided into eight parts of 3°45' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Astottaramsa (D108) POST https://api.occultapi.com/api/astro/astottaramsa/ Docs: https://occultapi.com/docs/astro/astottaramsa The astottaramsa, the hundred-and-eighth division, compounded from the navamsa. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Chaturthamsa (D4) POST https://api.occultapi.com/api/astro/chaturthamsa/ Docs: https://occultapi.com/docs/astro/chaturthamsa The chaturthamsa, the fourth divisional chart, also called turyamsa: each sign divided into four parts of 7°30' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Chaturvimsamsa (D24) POST https://api.occultapi.com/api/astro/chaturvimsamsa/ Docs: https://occultapi.com/docs/astro/chaturvimsamsa The chaturvimsamsa, the twenty-fourth divisional chart, also called siddhamsa: each sign divided into twenty-four parts of 1°15' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Dasamsa (D10) POST https://api.occultapi.com/api/astro/dasamsa/ Docs: https://occultapi.com/docs/astro/dasamsa The dasamsa, the tenth divisional chart: each sign divided into ten parts of 3° each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Drekkana (D3) POST https://api.occultapi.com/api/astro/drekkana/ Docs: https://occultapi.com/docs/astro/drekkana The drekkana, the third divisional chart: each sign divided into three parts of 10° each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Dwadasamsa (D12) POST https://api.occultapi.com/api/astro/dwadasamsa/ Docs: https://occultapi.com/docs/astro/dwadasamsa The dwadasamsa, the twelfth divisional chart: each sign divided into twelve parts of 2°30' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Dwadasdwadasamsa (D144) POST https://api.occultapi.com/api/astro/dwadasdwadasamsa/ Docs: https://occultapi.com/docs/astro/dwadasdwadasamsa The dwadasdwadasamsa, the hundred-and-forty-fourth division - the dwadasamsa OF the dwadasamsa. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Hora chart (D2) POST https://api.occultapi.com/api/astro/hora-chart/ Docs: https://occultapi.com/docs/astro/hora-chart The hora, the second divisional chart: each sign divided in half. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Khavedamsa (D40) POST https://api.occultapi.com/api/astro/khavedamsa/ Docs: https://occultapi.com/docs/astro/khavedamsa The khavedamsa, the fortieth divisional chart: each sign divided into forty parts of 45' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Nakshatramsa (D27) POST https://api.occultapi.com/api/astro/nakshatramsa/ Docs: https://occultapi.com/docs/astro/nakshatramsa The nakshatramsa, the twenty-seventh divisional chart, also called bhamsa: each sign divided into twenty-seven parts of 1°6'40" each, one per nakshatra of the zodiac. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Navamsa (D9) POST https://api.occultapi.com/api/astro/navamsa/ Docs: https://occultapi.com/docs/astro/navamsa The navamsa, the ninth divisional chart: each sign divided into nine parts of 3°20' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Navnavamsa (D81) POST https://api.occultapi.com/api/astro/navnavamsa/ Docs: https://occultapi.com/docs/astro/navnavamsa The navnavamsa, the eighty-first division - the navamsa OF the navamsa, which is what the name says: nava-navamsa. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Panchamsa (D5) POST https://api.occultapi.com/api/astro/panchamsa/ Docs: https://occultapi.com/docs/astro/panchamsa The panchamsa, the fifth divisional chart: each sign divided into five parts of 6° each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Rashi (D1) POST https://api.occultapi.com/api/astro/rashi/ Docs: https://occultapi.com/docs/astro/rashi The rashi chart - the birth chart itself, undivided. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Rudramsa (D11) POST https://api.occultapi.com/api/astro/rudramsa/ Docs: https://occultapi.com/docs/astro/rudramsa The rudramsa, the eleventh divisional chart, also called ekadasamsa: each sign divided into eleven parts of 2°43' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Saptamsa (D7) POST https://api.occultapi.com/api/astro/saptamsa/ Docs: https://occultapi.com/docs/astro/saptamsa The saptamsa, the seventh divisional chart: each sign divided into seven parts of roughly 4°17' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Shashthamsa (D6) POST https://api.occultapi.com/api/astro/shashthamsa/ Docs: https://occultapi.com/docs/astro/shashthamsa The shashthamsa, the sixth divisional chart, also called kaulaka: each sign divided into six parts of 5° each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Shashtyamsa (D60) POST https://api.occultapi.com/api/astro/shashtyamsa/ Docs: https://occultapi.com/docs/astro/shashtyamsa The shashtyamsa, the sixtieth divisional chart: each sign divided into sixty parts of 30' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Shodasamsa (D16) POST https://api.occultapi.com/api/astro/shodasamsa/ Docs: https://occultapi.com/docs/astro/shodasamsa The shodasamsa, the sixteenth divisional chart, also called kalamsa: each sign divided into sixteen parts of 1°52'30" each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ### Trimsamsa (D30) POST https://api.occultapi.com/api/astro/trimsamsa/ Docs: https://occultapi.com/docs/astro/trimsamsa The trimsamsa, the thirtieth divisional chart: each sign divided into thirty parts of 1° each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Vimsamsa (D20) POST https://api.occultapi.com/api/astro/vimsamsa/ Docs: https://occultapi.com/docs/astro/vimsamsa The vimsamsa, the twentieth divisional chart: each sign divided into twenty parts of 1°30' each. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "chart_name": "string", "datetime": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "ascendant_pos": "cusp", "chart_style": "north", "correction_direction": "add", "label_style": "english", "notation": "astrological", "rahu": "true", "render": "none", "theme": "light", "true_mean": "True" } ``` ## Jaimini ### Argala and virodhargala POST https://api.occultapi.com/api/astro/argala/ Docs: https://occultapi.com/docs/astro/argala Argala: the Jaimini doctrine of intervention between houses. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, default "Sun") - raasi (integer, 1..12, default 1) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true" } ``` ### Chara karakas (Jaimini) POST https://api.occultapi.com/api/astro/chara-karakas/ Docs: https://occultapi.com/docs/astro/chara-karakas The eight Jaimini chara karakas, as planet names rather than raw indices. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, default "Sun") - raasi (integer, 1..12, default 1) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true" } ``` ### Karakamsa (swamsa) POST https://api.occultapi.com/api/astro/karakamsa/ Docs: https://occultapi.com/docs/astro/karakamsa The sign the Atmakaraka occupies in the navamsa — the seat Jaimini readings of character and destiny are taken from, rather than the rashi lagna. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Longevity factors POST https://api.occultapi.com/api/astro/longevity-factors/ Docs: https://occultapi.com/docs/astro/longevity-factors Marakas, maheshwara, rudra, brahma and the trishoola rasis — the classical longevity indicators. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, default "Sun") - raasi (integer, 1..12, default 1) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true" } ``` ### What a sign aspects POST https://api.occultapi.com/api/astro/rashi-aspects/ Docs: https://occultapi.com/docs/astro/rashi-aspects What one sign aspects, and which planets are its baadhaka. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, default "Sun") - raasi (integer, 1..12, default 1): Sign number, 1 = Aries through 12 = Pisces. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true", "raasi": 5 } ``` ## KP (Krishnamurti Paddhati) ### KP chart (cusps, signs and planets) POST https://api.occultapi.com/api/astro/kp-chart/ Docs: https://occultapi.com/docs/astro/kp-chart A Krishnamurti Paddhati chart as named parts rather than one opaque blob. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - new_start (integer, default 50): Cusp adjustment start, passed straight through to the engine. - notation (string, default "degree") Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "notation": "degree", "new_start": 50 } ``` ### KP parts (pick with keys) POST https://api.occultapi.com/api/astro/krishnamurti/ Docs: https://occultapi.com/docs/astro/krishnamurti Krishnamurti Paddhati is the South Indian school that reads a chart from house cusps rather than whole signs. This endpoint builds a KP framework: Placidus cusps, each house running from its own cusp to the next house's cusp, and every body assigned to whichever of those spans its longitude falls in. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - new_start (number, required) - notation (string, required, one of degree | astrological) - timezone_as_float (number, required, -12..14): 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. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. Calculations available via `keys` (6, all one credit): adjust_houses, ascendant, house_rashis, houses, planet_houses, planet_longs Example request: ```json { "keys": [ "adjust_houses" ], "latitude": 26.1046, "longitude": 74.319, "timezone_as_float": 5.5, "new_start": 50, "notation": "degree", "date_time": "2026-09-01T06:00:00+05:30" } ``` ## Chakras ### Sarvatobhadra chakra POST https://api.occultapi.com/api/astro/sarvatobhadra/ Docs: https://occultapi.com/docs/astro/sarvatobhadra The nine-by-nine board used to judge transits, with the grahas placed on it and the vedha (piercing) worked out. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - timezone_as_float (number, -12..14, default 0): 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. - transit_date_time (string): Optional. When given, the transiting grahas for this moment are placed on the chakra alongside the natal ones, which is what the chakra is actually read for. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ## Planets & positions ### Ayanamsa value GET https://api.occultapi.com/api/astro/ayanamsa_value/ Docs: https://occultapi.com/docs/astro/ayanamsa_value The ayanamsa is the gap between the tropical zodiac, which is tied to the equinox, and the sidereal zodiac used in Vedic astrology, which is tied to the stars. It grows by roughly fifty arc-seconds a year, so every sidereal calculation depends on which ayanamsa you adopt and for which date. Query parameters: - ayanamsa (string) - date (string) Example request: ```json {} ``` ### Celestial positions POST https://api.occultapi.com/api/astro/celestial/ Docs: https://occultapi.com/docs/astro/celestial Raw ephemeris for one or more bodies: where a planet is, how fast it is moving, when it rises and sets, whether it is retrograde. This is the astronomy layer beneath the rest of the API, exposed directly, and it reaches well past the nine Vedic grahas — the outer planets, Chiron and the asteroids, the Uranian fictitious points and several planetary moons are all addressable. Request body: - altitude (number, required) - date_time (string, 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. - keys (array, required, one of set_default_rising | set_hindu_rising | set_disc_center_refraction | set_disc_bottom_refraction | set_disc_center_no_refraction | set_disc_bottom_no_refraction | set_default_positions | set_true_positions | set_topocentric_positions | set_heliocentric_positions | set_barycentric_positions | set_astrometric_positions … (31 total)): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - planet_names (array, required, one of SUN | MOON | MERCURY | VENUS | MARS | JUPITER | SATURN | URANUS | NEPTUNE | PLUTO | MEAN_NODE | TRUE_NODE … (36 total)) - time_zone (number, required, -12..14) - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. Calculations available via `keys` (31, all one credit): get_altitude, get_apsis, get_azimuth, get_declination, get_distance, get_ecliptic_speeds, get_equatorial_speeds, get_illumination, get_latitude, get_longitude, get_right_ascension, is_retrograde, is_stationary, rise_time, set_astrometric_j_positions, set_astrometric_positions, set_barycentric_positions, set_default_positions, set_default_rising, set_disc_bottom_no_refraction, set_disc_bottom_refraction, set_disc_center_no_refraction, set_disc_center_refraction, set_heliocentric_positions, set_hindu_rising, set_jpl_horizons_positions, set_mean_equinox_positions, set_sidereal_positions, set_time, set_topocentric_positions, set_true_positions Example request: ```json { "date_time": "2024-11-20T08:40:08.658Z", "keys": [ "set_default_positions", "set_hindu_rising" ], "latitude": 26.9124, "longitude": 75.7873, "time_zone": 5.5, "altitude": 0, "planet_names": [ "SUN" ] } ``` ### Planet placement readings POST https://api.occultapi.com/api/astro/planet_insights/ Docs: https://occultapi.com/docs/astro/planet_insights Prewritten interpretations for a single planet in a single position. Give it a planet and where that planet sits — a zodiac sign, a house, or a nakshatra — and it returns the classical reading for that combination. It is a lookup into a text corpus, not a calculation: no date, time or place is involved, and the same request always returns the same text. Request body: - house (integer, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - nakshatra (string, required, one of ashwini | bharani | krittika | rohini | mrigasira | aardra | punarvasu | pushyami | aasresha | makha | poorva phalguni | uttara phalguni … (27 total)) - planet (string, required, one of sun | moon | mars | mercury | jupiter | venus | saturn | rahu | ketu) - sign (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces) Calculations available via `keys` (3, all one credit): get_planet_house_insight, get_planet_nakshatra_insight, get_planet_sign_insight Example request: ```json { "keys": [ "get_planet_sign_insight" ], "planet": "Jupiter", "sign": "aries", "house": 0, "nakshatra": "rohini" } ``` ### What a planet aspects POST https://api.occultapi.com/api/astro/planet-aspects/ Docs: https://occultapi.com/docs/astro/planet-aspects Everything one planet aspects, and everything that aspects it back. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu, default "Sun"): Which planet the aspects are computed for. - raasi (integer, 1..12, default 1) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true", "planet": "Mars" } ``` ### Planet equatorial coordinates POST https://api.occultapi.com/api/astro/planet-equatorial/ Docs: https://occultapi.com/docs/astro/planet-equatorial Right ascension and declination — the coordinates star catalogues use. Request body: - date_time (string, 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. - altitude (number, default 0): OBSERVER elevation in metres, not a body's altitude. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - planet_names (array, default ["SUN","MOON"]): Bodies to report, e.g. ["SUN", "MOON", "MARS"]. - time_zone (number, -12..14, default 0): UTC offset. Either this or timezone_as_float; they mirror. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-09T12:00:00+00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 0, "planet_names": [ "SUN", "MARS" ] } ``` ### Natural planetary friendships POST https://api.occultapi.com/api/astro/planet-friendships/ Docs: https://occultapi.com/docs/astro/planet-friendships Natural friends, neutrals and enemies for every planet, by name, plus the planets ranked by strength for this chart. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, default "true") - planet (string, default "Sun") - raasi (integer, 1..12, default 1) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "node": "true" } ``` ### Planet horizon coordinates POST https://api.occultapi.com/api/astro/planet-horizon/ Docs: https://occultapi.com/docs/astro/planet-horizon Where a body is in the sky right now: azimuth, altitude, and whether it is up at all. Request body: - date_time (string, 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. - altitude (number, default 0): OBSERVER elevation in metres, not a body's altitude. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - planet_names (array, default ["SUN","MOON"]): Bodies to report, e.g. ["SUN", "MOON", "MARS"]. - time_zone (number, -12..14, default 0): UTC offset. Either this or timezone_as_float; they mirror. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-09T12:00:00+00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 0, "planet_names": [ "SUN", "MOON", "MARS" ] } ``` ### Planet positions POST https://api.occultapi.com/api/astro/planet-positions/ Docs: https://occultapi.com/docs/astro/planet-positions Sidereal positions of the nine grahas for a moment and place: longitude, sign, nakshatra, pada and house for each, plus the ascendant and the ayanamsa actually applied. Request body: - chart_name (string, required) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - latitude (number, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - aberration (boolean, default true) - apply_correction (boolean, default false) - ascendant_pos (string, one of cusp | start | end, default "cusp") - ayanamsa (string, default "LAHIRI") - background_color (string): Hex color for the SVG background. - chart_style (string, one of north | south, default "north"): Diagram style when render='svg'. 'north' is the diamond layout with fixed houses and rotating signs; 'south' is the fixed-sign grid with rotating houses. - correction_deg (integer, default 0) - correction_direction (string, one of add | subtract, default "add") - correction_min (integer, 0..59, default 0) - correction_sec (integer, 0..59, default 0) - extended_bodies (array): Body groups to include: 'asteroids', 'planetary_moons', 'fictitious_bodies'. - label_style (string, one of english | sanskrit | symbol, default "english"): How planets are labelled: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) or 'symbol' (☉, ☽, ...). - line_color (string): Hex color for the chart's grid lines. - notation (string, one of astrological | degree, default "degree") - nutation (boolean, default true) - planet_color (string): Hex color for planet labels, e.g. '#111827'. Defaults to the theme's own colour. - rahu (string, one of true | mean | both, default "true"): Node type to include. 'true' returns true nodes only, 'mean' returns mean nodes only, 'both' returns both. - refraction (boolean, default false) - render (string, one of none | svg, default "none"): Set to 'svg' to also return a rendered chart diagram (see chart_style) and the geometry behind it. Omit this entirely and the response is unchanged. - show_degrees (boolean, default false): Print each body's degree within its sign next to its label. - sign_color (string): Hex color for sign numbers/abbreviations. - svg_size (integer, 100..2000, default 400): Width and height of the square SVG viewBox, in pixels. - theme (string, one of light | dark, default "light") - true_mean (string, one of True | Mean, default "Mean") - use_28_nakshatras (boolean, default false) Example request: ```json { "datetime": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "ayanamsa": "LAHIRI" } ``` ### Fixed stars POST https://api.occultapi.com/api/astro/star/ Docs: https://occultapi.com/docs/astro/star Positional data for a named fixed star, taken from the standard fixed-star catalogue. Both Vedic and Western astrology use a handful of bright stars as markers — Aldebaran, Regulus, Spica, Antares — and the nakshatras are themselves named after their yogataras, the junction stars that define them. This endpoint gives a star's ecliptic and equatorial coordinates, its rate of change, and its brightness. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - name (string, required, one of Aldebaran | Rohini | Algol | Antares | Regulus | Sirius | Spica | Trappist-1 | Galactic Center | Gal. Center | Great Attractor | Virgo Cluster … (30 total)) - timezone_as_float (number, required, -12..14): 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. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. Calculations available via `keys` (10, all one credit): declination, distance, ecliptic_speeds, equatorial_speeds, latitude, longitude, magnitude, retrograde, right_ascension, set_default_positions Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "name": "Aldebaran", "keys": [ "set_default_positions", "magnitude" ] } ``` ### Upagrahas POST https://api.occultapi.com/api/astro/upagraha/ Docs: https://occultapi.com/docs/astro/upagraha The shadow points, in the two families they come from. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - dhuma_vyatipata_relation (string, one of 360_minus_dhuma | dhuma_plus_53_20, default "360_minus_dhuma") - eccentric_anomaly (number) - eccentricity (number) - gulika_portion (string, one of saturn | eighth, default "saturn") - gulika_rises_at (string, one of beginning | middle | end, default "beginning") - kala_mrityu_rise_at (string, one of beginning | middle | end, default "middle") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - mandi_portion (string, one of saturn | eighth, default "saturn") - mandi_rises_at (string, one of beginning | middle | end, default "middle") - mean_anomaly (number) - mode (string) - nakshatras (string) - samvata_type (string) - tolerance (number) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Planetary details POST https://api.occultapi.com/api/planetary_details/ Docs: https://occultapi.com/docs/planetary_details A single call that runs nine separate ephemeris scans over a date range and returns them together. It is the endpoint to reach for when you want everything that happens to the planets between two dates rather than a snapshot: sign and nakshatra changes, retrograde spells, declination alignments and out-of-bounds excursions. Request body: - end_date (string, required) - longitude (number, required, -180..180): 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. - planet_name (string, required, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | truenode | meannode) - sign (string, required, one of Aries | Taurus | Gemini | Cancer | Leo | Virgo | Libra | Scorpio | Sagittarius | Capricorn | Aquarius | Pisces) - start_date (string, required) - geo_latitude (number, -90..90): Observer geographic latitude (-90 to 90). Required for ascendant entry data. - geo_longitude (number, -180..180): Observer geographic longitude (-180 to 180). Required for ascendant entry data. Example request: ```json { "start_date": "2024-11-21T08:33:35.539Z", "end_date": "2024-11-22T08:33:35.539Z", "longitude": 76.125, "planet_name": "mercury", "sign": "Taurus" } ``` ## Strength (bala) ### Ishta phala POST https://api.occultapi.com/api/astro/ishta-kashta-phala/ Docs: https://occultapi.com/docs/astro/ishta-kashta-phala Ishta phala: how much good each planet is placed to give, out of sixty virupas. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - asc_house (integer, 1..12, default 1): Ascendant house number. Defaults to 1. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone (number, -12..14, default 0): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 1 } ``` ### Kaala bala components POST https://api.occultapi.com/api/astro/kaala-bala-components/ Docs: https://occultapi.com/docs/astro/kaala-bala-components The nine sub-balas that Kaala Bala — strength from time — is the sum of. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - asc_house (integer, 1..12, default 1): Ascendant house number. Defaults to 1. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone (number, -12..14, default 0): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 1 } ``` ### Shadbala POST https://api.occultapi.com/api/astro/shadbala/ Docs: https://occultapi.com/docs/astro/shadbala Shadbala: the six-fold strength of each of the seven planets, with the six components the total is built from. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone (number, required, -12..14): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - asc_house (integer, default 0) - include_houses (boolean) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - planet_index (integer) - use_epoch_table (boolean) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Planetary strength POST https://api.occultapi.com/api/astro/strength/ Docs: https://occultapi.com/docs/astro/strength Shadbala, "six strengths", is the classical way of putting a number on how much a planet can actually deliver. Six sources are scored separately — position, time, direction, motion, natural rank and aspects received — and added together. The total is expressed in virupas, sixty of which make one rupa; each planet has a threshold in rupas it is expected to clear, and the ratio of what it scored to what it needed is the usable answer. This endpoint exposes that total, every component and sub-component of it, and several related strength schemes. Request body: - asc_house (integer, required) - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone (number, required, -12..14): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - include_houses (boolean) - planet_index (integer) - use_epoch_table (boolean) Calculations available via `keys` (50, all one credit): abda_bala, abdadhipathi, apoklimas, ayana_bala, bhava_adhipathi_bala, bhava_bala, bhava_dig_bala, bhava_drik_bala, bhava_madhya, cheshta_bala, cheshta_bala_new, cheshta_rashmi, dig_bala, drekkana_bala, drekkana_bala_simple, dreshkon_bala, drik_bala, dwadhasa_vargeeya_bala, get_planet_mean_longitude, get_planet_mean_longitude_using_epoch_table, hadda_bala, hadda_bala_simple, harsha_bala, hora_bala, ishta_phala, kaala_bala, kendra_bala, kendras, kshetra_bala, masa_bala, masadhipathi, naisargika_bala, nathonnath_bala, navamsa_bala, navamsa_bala_simple, ojayugama_bala, paksha_bala, panapharas, pancha_vargeeya_bala, planet_aspect_relationship_table, sapthavargaja_bala, shad_bala, sthana_bala, subha_rashmi, tribhaga_bala, uccha_rashmi, uchcha_bala, vaara_bala, vaaradhipathi, yuddha_bala Example request: ```json { "keys": [ "harsha_bala" ], "date_time": "2025-03-27T11:11:24.366Z", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 2 } ``` ### Varga and positional strength POST https://api.occultapi.com/api/astro/varga-bala/ Docs: https://occultapi.com/docs/astro/varga-bala Strength across the divisional charts, plus the positional strengths Shadbala does not break out. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - asc_house (integer, 1..12, default 1): Ascendant house number. Defaults to 1. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone (number, -12..14, default 0): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 1 } ``` ## Ashtakavarga ### Ashtakavarga POST https://api.occultapi.com/api/astro/ashtakvarga/ Docs: https://occultapi.com/docs/astro/ashtakvarga Ashtakavarga scores every sign of a chart out of eight. Seven planets and an eighth contributor each vote on all twelve signs; a sign that collects many points supports the matters it governs, and one that collects few does not. It is the standard Vedic way to rank which houses and which transits are worth acting on, without interpreting the chart yourself. Request body: - chart_name (string, required, one of BhavaChart | RashiChart | HoraChart | JagannathHoraChart | ParivrittidwayaHoraChart | ParivrittitrayaDrekkanaChart | DrekkanaChart | SomnathDrekkanaChart | JagannathDrekkanaChart | ChaturthamsaChart | PanchamsaChart | ShashthamsaChart … (32 total)) - date_time (string, 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. - keys (array, required, one of binna_ashtaka_varga | samudhaya_ashtaka_varga | prastara_ashtaka_varga | trikona_sodhana_rashi | trikona_sodhana_house | ekadhipatya_sodhana_rashia_ashtaka_varga | ekadhipatya_sodhana_house | pindas): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone_as_float (number, required, -12..14): 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. - apply_ekadhipatya_reductions (boolean, default true) - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - use_eight_ashtakavargas_in_sav (boolean, default false) Calculations available via `keys` (8, all one credit): binna_ashtaka_varga, ekadhipatya_sodhana_house, ekadhipatya_sodhana_rashia_ashtaka_varga, pindas, prastara_ashtaka_varga, samudhaya_ashtaka_varga, trikona_sodhana_house, trikona_sodhana_rashi Example request: ```json { "keys": [ "samudhaya_ashtaka_varga" ], "latitude": 26.1046, "longitude": 74.319, "timezone_as_float": 5.5, "chart_name": "RashiChart", "date_time": "2026-09-01T06:00:00+05:30" } ``` ### Prastara ashtakavarga POST https://api.occultapi.com/api/astro/ashtakvarga/prastara/ Docs: https://occultapi.com/docs/astro/ashtakvarga/prastara The full ashtakavarga grid the other tables are summed from. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - apply_ekadhipatya_reductions (boolean, default true) - chart_name (string, default "RashiChart") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - use_eight_ashtakavargas_in_sav (boolean, default false) Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "chart_name": "RashiChart" } ``` ### Ashtakavarga sodhana and pindas POST https://api.occultapi.com/api/astro/ashtakvarga/sodhana/ Docs: https://occultapi.com/docs/astro/ashtakvarga/sodhana The two sodhana reductions, and the pindas they feed. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - apply_ekadhipatya_reductions (boolean, default true) - chart_name (string, default "RashiChart") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - use_eight_ashtakavargas_in_sav (boolean, default false) Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "chart_name": "RashiChart" } ``` ### Bhinnashtakavarga POST https://api.occultapi.com/api/astro/bhinnashtakavarga/ Docs: https://occultapi.com/docs/astro/bhinnashtakavarga Bhinnashtakavarga: one row per contributor, twelve numbers each, scored 0 to 8. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - apply_ekadhipatya_reductions (boolean, default true) - chart_name (string, default "RashiChart") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - use_eight_ashtakavargas_in_sav (boolean, default false) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Sarvashtakavarga POST https://api.occultapi.com/api/astro/sarvashtakavarga/ Docs: https://occultapi.com/docs/astro/sarvashtakavarga Sarvashtakavarga: the totals, one number per sign, keyed `Raasi 1` to `Raasi 12` for Aries to Pisces. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - apply_ekadhipatya_reductions (boolean, default true) - chart_name (string, default "RashiChart") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - use_eight_ashtakavargas_in_sav (boolean, default false) Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ## Dashas — nakshatra (planet) ### Ashtottari dasha POST https://api.occultapi.com/api/astro/dasha/ashtottari/ Docs: https://occultapi.com/docs/astro/dasha/ashtottari The 108-year cycle, across eight planets. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Budhi Gati dasha POST https://api.occultapi.com/api/astro/dasha/budhi-gati/ Docs: https://occultapi.com/docs/astro/dasha/budhi-gati The 112-year conditional cycle. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Chaturaseeti Sama dasha POST https://api.occultapi.com/api/astro/dasha/chaturaseeti-sama/ Docs: https://occultapi.com/docs/astro/dasha/chaturaseeti-sama The 84-year conditional cycle, with equal periods. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Dwadashottari dasha POST https://api.occultapi.com/api/astro/dasha/dwadashottari/ Docs: https://occultapi.com/docs/astro/dasha/dwadashottari The 112-year conditional cycle, run over eight planets. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Dwisaptati Sama dasha POST https://api.occultapi.com/api/astro/dasha/dwisaptati/ Docs: https://occultapi.com/docs/astro/dasha/dwisaptati The 72-year conditional cycle, with equal periods. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Nakshatra dasha (any system) POST https://api.occultapi.com/api/astro/dasha/nakshatra/ Docs: https://occultapi.com/docs/astro/dasha/nakshatra Any of the eleven nakshatra dashas, by name. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - system (string, required): Dasha system. See /api/astro/dasha/systems/ for the list; both the display name and the engine id are accepted. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2, "system": "Dwisaptati" } ``` ### Panchottari dasha POST https://api.occultapi.com/api/astro/dasha/panchottari/ Docs: https://occultapi.com/docs/astro/dasha/panchottari The 105-year conditional cycle. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Sataabdika dasha POST https://api.occultapi.com/api/astro/dasha/sataabdika/ Docs: https://occultapi.com/docs/astro/dasha/sataabdika The 100-year conditional cycle. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Shattrimsa Sama dasha POST https://api.occultapi.com/api/astro/dasha/shattrimsa-sama/ Docs: https://occultapi.com/docs/astro/dasha/shattrimsa-sama The 36-year conditional cycle, with equal periods. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Shodashottari dasha POST https://api.occultapi.com/api/astro/dasha/shodashottari/ Docs: https://occultapi.com/docs/astro/dasha/shodashottari The 116-year conditional nakshatra cycle. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Vimshottari dasha POST https://api.occultapi.com/api/astro/dasha/vimshottari/ Docs: https://occultapi.com/docs/astro/dasha/vimshottari The 120-year cycle that almost every Vedic reading is built on. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 3 } ``` ### Yogini dasha POST https://api.occultapi.com/api/astro/dasha/yogini/ Docs: https://occultapi.com/docs/astro/dasha/yogini The 36-year cycle of the eight yoginis. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ## Dashas — rashi (Jaimini) ### Brahma dasha POST https://api.occultapi.com/api/astro/dasha/brahma/ Docs: https://occultapi.com/docs/astro/dasha/brahma The Jaimini sign dasha seeded from the Brahma karaka. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Chakra dasha POST https://api.occultapi.com/api/astro/dasha/chakra/ Docs: https://occultapi.com/docs/astro/dasha/chakra The Jaimini sign dasha that runs the wheel from its seed. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Chara dasha POST https://api.occultapi.com/api/astro/dasha/chara/ Docs: https://occultapi.com/docs/astro/dasha/chara The principal Jaimini rashi dasha. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Drig dasha POST https://api.occultapi.com/api/astro/dasha/drig/ Docs: https://occultapi.com/docs/astro/dasha/drig The Jaimini sign dasha built on aspect (drishti). Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Kalachakra dasha POST https://api.occultapi.com/api/astro/dasha/kalachakra/ Docs: https://occultapi.com/docs/astro/dasha/kalachakra The "wheel of time" dasha, seeded from the birth pada. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Kendradhi dasha POST https://api.occultapi.com/api/astro/dasha/kendradhi/ Docs: https://occultapi.com/docs/astro/dasha/kendradhi The Jaimini sign dasha ordered by kendra. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Lagnamsaka dasha POST https://api.occultapi.com/api/astro/dasha/lagnamsaka/ Docs: https://occultapi.com/docs/astro/dasha/lagnamsaka The Jaimini sign dasha seeded from the lagna amsa. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Mandooka dasha POST https://api.occultapi.com/api/astro/dasha/mandooka/ Docs: https://occultapi.com/docs/astro/dasha/mandooka The "frog" dasha, which leaps between signs. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Narayana dasha POST https://api.occultapi.com/api/astro/dasha/narayana/ Docs: https://occultapi.com/docs/astro/dasha/narayana The Jaimini rashi dasha read from the lagna. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Navamsa dasha POST https://api.occultapi.com/api/astro/dasha/navamsa/ Docs: https://occultapi.com/docs/astro/dasha/navamsa The Jaimini sign dasha read from the D9. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Nirayana Shoola dasha POST https://api.occultapi.com/api/astro/dasha/nirayana-shoola/ Docs: https://occultapi.com/docs/astro/dasha/nirayana-shoola The sidereal reckoning of the Shoola dasha. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Paryaaya dasha POST https://api.occultapi.com/api/astro/dasha/paryaaya/ Docs: https://occultapi.com/docs/astro/dasha/paryaaya The Jaimini sign dasha of alternating order. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Rashi dasha (any system) POST https://api.occultapi.com/api/astro/dasha/rashi/ Docs: https://occultapi.com/docs/astro/dasha/rashi Any of the nineteen rashi dashas, by name. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - system (string, required): Dasha system. See /api/astro/dasha/systems/ for the list; both the display name and the engine id are accepted. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2, "system": "Drig" } ``` ### Sandhya dasha POST https://api.occultapi.com/api/astro/dasha/sandhya/ Docs: https://occultapi.com/docs/astro/dasha/sandhya The Jaimini sign dasha of the junctures. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Shoola dasha POST https://api.occultapi.com/api/astro/dasha/shoola/ Docs: https://occultapi.com/docs/astro/dasha/shoola The Jaimini sign dasha read for hazard and longevity. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Sthira dasha POST https://api.occultapi.com/api/astro/dasha/sthira/ Docs: https://occultapi.com/docs/astro/dasha/sthira The fixed-period Jaimini sign dasha. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Sudasa dasha POST https://api.occultapi.com/api/astro/dasha/sudasa/ Docs: https://occultapi.com/docs/astro/dasha/sudasa The Jaimini rashi dasha counted from Sri Lagna. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 2 } ``` ### Tara Lagna dasha POST https://api.occultapi.com/api/astro/dasha/tara-lagna/ Docs: https://occultapi.com/docs/astro/dasha/tara-lagna The Jaimini sign dasha seeded from the tara lagna. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Trikona dasha POST https://api.occultapi.com/api/astro/dasha/trikona/ Docs: https://occultapi.com/docs/astro/dasha/trikona The Jaimini sign dasha grouped by trines. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Yogardha dasha POST https://api.occultapi.com/api/astro/dasha/yogardha/ Docs: https://occultapi.com/docs/astro/dasha/yogardha The Jaimini sign dasha that averages two reckonings. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ## Dasha tools ### Dasha applicability POST https://api.occultapi.com/api/astro/dasha_applicability/ Docs: https://occultapi.com/docs/astro/dasha_applicability Vedic astrology has many planetary period systems, and most of the nakshatra-based ones beyond Vimshottari are conditional: the classical texts say to use Ashtottari only when a particular condition holds in the chart, Dwadashottari only when another does, and so on. Choosing wrongly means running the wrong timeline for someone's whole life. Request body: - date_time (string, 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. - direction_option (string, required, one of forward | backward) - keys (array, required, one of applicability_check): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - start_option (string, required, one of current | next | previous) - timezone_as_float (number, required, -12..14): 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. - year_option (number, required, 360..365.256364, one of 365.256364 | 365.24219 | 365.25 | 365 | 360) Calculations available via `keys` (1, all one credit): applicability_check Example request: ```json { "keys": [ "applicability_check" ], "date_time": "2025-03-27T09:52:50.441Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year_option": 365.256364, "start_option": "current", "direction_option": "forward" } ``` ### Current dasha POST https://api.occultapi.com/api/astro/dasha/current/ Docs: https://occultapi.com/docs/astro/dasha/current Which dasha period is running right now, at every level. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - as_of (string): The moment to report on. Defaults to now (UTC). - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 3): How deep to nest: 1 mahadasha only, 2 adds antardasha, 3 adds pratyantardasha. Capped at 4 because the response grows roughly tenfold per level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - system (string, default "VimshottariDasha"): Which system to read. Defaults to Vimshottari. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "levels": 3, "system": "Vimshottari" } ``` ### Dasha drill-down POST https://api.occultapi.com/api/astro/dasha/drill/ Docs: https://occultapi.com/docs/astro/dasha/drill One branch of a dasha tree, instead of the whole thing. Request body: - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - dasha_direction (string, one of forward | backward, default "forward") - dasha_start (string, one of current | next | previous, default "current"): Which cycle the timeline opens on. - date_time (string): 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. - datetime (string): 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, 360..365.256364, default 365.25): Year length the periods are measured in. 360 for the classical savana year, 365.25 for the Julian year. - levels (integer, 1..4, default 1): How many levels BELOW the located period to return. 1 gives its immediate children. - lords (array): The chain of period lords to follow from the top, outermost first — e.g. ["moon", "mars"] means "inside the Moon mahadasha, inside its Mars antardasha". A planet name for nakshatra dashas, a sign name for rashi dashas. Empty returns the top level. - node (string, one of true | mean, default "true"): Lunar node model. Required by the rashi parent, which does not default it; defaulted here. - system (string, default "VimshottariDasha"): Dasha system. See /api/astro/dasha/systems/. Defaults to Vimshottari. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "dasha_direction": "forward", "dasha_start": "current", "date_time": "2026-09-01 06:00:00", "node": "true", "timezone_as_float": 5.5 } ``` ### Dasha systems index POST https://api.occultapi.com/api/astro/dasha/systems/ Docs: https://occultapi.com/docs/astro/dasha/systems Every dasha system we compute, with its cycle length and the endpoint that serves it. Request body: - family (string, one of both | nakshatra | rashi, default "both"): Narrow the list to one family. Nakshatra dashas run on planets; rashi dashas run on signs. Example request: ```json { "family": "both" } ``` ### Nakshatra dashas POST https://api.occultapi.com/api/nakshatra_dasha/ Docs: https://occultapi.com/docs/nakshatra_dasha A dasha is a timeline that divides a life into periods, each ruled by a planet. The nakshatra dashas start from the lunar mansion the Moon occupied at birth: that fixes which planet's period was running at birth and how much of it remained, and the rest of the cycle follows in a fixed order. Vimshottari, the 120-year scheme, is the one in general use; the others suit charts where their own applicability conditions are met. Request body: - dasha_direction (string, required, one of forward | backward) - dasha_period (string, required, one of mahadasha | antardasha | pratyantardasha | sookshmasha | pranadasha | dehdasha | all) - dasha_start (string, required, one of current | next | previous) - dasha_type (string, required, one of VimshottariDasha | AshtottariDasha | ChaturaseetiSamaDasha | DwadashottariDasha | DwisaptatiDasha | PanchottariDasha | SataabdikaDasha | ShodashottariDasha | YoginiDasha | ShattrimsaSamaDasha | BudhiGatiDasha) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, required, 360..365.256364) - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - compressed_output (boolean, default true) - compression_type (string, one of gzip | bzip2 | lzma | none, default "gzip") - max_levels (integer, 1..6, default 6) - output_dir (string, default "dasha_output") - save_to_file (boolean, default false) - use_cache (boolean, default true) - use_nested (boolean, default true) Example request: ```json { "dasha_type": "VimshottariDasha", "dasha_period": "all", "datetime": "2024-11-21T09:21:43.577Z", "latitude": 26.1046, "longitude": 74.319, "timezone_as_float": 5.5, "days_in_year": 365.256364, "dasha_start": "current", "dasha_direction": "forward", "compressed_output": true, "max_levels": 1, "use_cache": true, "use_nested": true, "save_to_file": true, "compression_type": "gzip", "output_dir": "dasha_output", "ultra_fast": true } ``` ### Rashi dashas POST https://api.occultapi.com/api/raasi_dasha/ Docs: https://occultapi.com/docs/raasi_dasha Rashi dashas divide a life into periods ruled by signs rather than by planets. Where the nakshatra dashas start from the Moon's birth star and cycle through the planets, these start from a seed sign — usually the ascendant, sometimes the stronger of the first and seventh, sometimes the ninth — and cycle through the twelve signs, with each sign's length derived from where its lord sits. They belong mostly to the Jaimini stream and are used for concrete outward events, whereas Vimshottari is generally read for inner experience. Request body: - dasha_direction (string, required, one of forward | backward) - dasha_period (string, required, one of mahadasha | antardasha | pratyantardasha | sookshmasha | pranadasha | dehdasha | all) - dasha_start (string, required, one of current | next | previous) - dasha_type (string, required, one of BrahmaRaasi | ChakraRaasi | CharaRaasi | DrigRaasi | KalachakraRaasi | KendradhiRaasi | LagnamsakaRaasi | MandookaRaasi | NarayanaRaasi | NavmasaRaasi | NirayanaRaasi | ParyaayaRaasi … (20 total)) - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - days_in_year (number, required, 360..365.256364) - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - node (string, required, one of true | mean) - timezone_as_float (number, required, -12..14): 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. - compressed_output (boolean, default true) - compression_type (string, one of gzip | bzip2 | lzma | none, default "gzip") - max_levels (integer, 1..6, default 6) - output_dir (string, default "dasha_output") - save_to_file (boolean, default false) - use_cache (boolean, default true) - use_nested (boolean, default true) Example request: ```json { "node": "true", "dasha_type": "BrahmaRaasi", "dasha_period": "mahadasha", "datetime": "2025-05-27T05:12:46.849Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "days_in_year": 365.256364, "dasha_start": "current", "dasha_direction": "forward" } ``` ## Yogas & doshas ### Combination yogas POST https://api.occultapi.com/api/astro/combination_yoga/ Docs: https://occultapi.com/docs/astro/combination_yoga The exact windows during a year when one of twenty-three auspicious or inauspicious day-combinations is in force. These yogas are formed by coincidence rather than by planetary position: a particular weekday falling together with a particular tithi, and for some of them a particular nakshatra as well. Tripushkara and Dwipushkara treble and double the result of whatever is begun in them; Sarvartha Siddhi and Amrit Siddhi are broadly auspicious; Vish, Hutashan, Mrityu and Dagdha are the opposite. Request body: - latitude (number, 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. - longitude (number, 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. - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - yoga (string, required, one of tripushkara | dwipushkara | sarvartha_siddhi | amrit_siddhi | siddha | naasha | sudha | halaahal | vt_siddha | ratnakur | vt_amrit | vt_mrityu … (23 total)) Example request: ```json { "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026, "yoga": "tripushkara" } ``` ### Doshas POST https://api.occultapi.com/api/astro/dosha/ Docs: https://occultapi.com/docs/astro/dosha A dosha is a specific affliction in a birth chart — a named planetary configuration that classical texts treat as a liability, most often for marriage, health or the ancestral line. This endpoint tests for eight of them from the birth moment and place, and can return either the bare results or ready-to-display written explanations. Request body: - apply_exceptions (boolean, required) - date_time (string, 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. - include_2nd_house (boolean, required) - include_lagna_house (boolean, required) - keys (array, required, one of get_dosha_resources | kala_sarpa | manglik | pitru_dosha | guru_chandala_dosha | kalathra | ganda_moola | ghata | shrapit | get_dosha_details): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - manglik_reference_planet (integer, required) - moon_star (string, required) - timezone (number, required): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. Calculations available via `keys` (10, all one credit): ganda_moola, get_dosha_details, get_dosha_resources, ghata, guru_chandala_dosha, kala_sarpa, kalathra, manglik, pitru_dosha, shrapit Example request: ```json { "keys": [ "get_dosha_resources" ], "date_time": "2025-07-11T04:37:08.718Z", "latitude": 26.9124, "longitude": 75.7873, "timezone": 0, "manglik_reference_planet": 0, "include_lagna_house": true, "include_2nd_house": true, "apply_exceptions": true, "moon_star": "leo" } ``` ### Kala Sarpa yoga POST https://api.occultapi.com/api/astro/kalsarp/ Docs: https://occultapi.com/docs/astro/kalsarp 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. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Raja yogas POST https://api.occultapi.com/api/astro/raja_yoga/ Docs: https://occultapi.com/docs/astro/raja_yoga A raja yoga is a combination in a birth chart said to confer status and success. The core case is an association between the lord of an angular house (1, 4, 7, 10) and the lord of a trine (1, 5, 9) — the two conjoined, aspecting each other, or exchanging signs. This endpoint checks the three named variants the engine implements: Vipareeta raja yoga (the lords of the difficult sixth, eighth and twelfth houses falling among themselves), Neecha Bhanga raja yoga (a debilitated planet whose debilitation is cancelled) and Dharma-Karmadhipati raja yoga (the ninth and tenth lords in association). Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone (number, required): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. Calculations available via `keys` (1, all one credit): get_raja_yoga_details_for_all_charts Example request: ```json { "keys": [ "get_raja_yoga_details_for_all_charts" ], "date_time": "2025-07-14T11:00:37.673Z", "latitude": 13, "longitude": 77.5946, "timezone": 5.5 } ``` ## Lal Kitab ### Lal Kitab chart POST https://api.occultapi.com/api/astro/lal-kitab/chart/ Docs: https://occultapi.com/docs/astro/lal-kitab/chart The Lal Kitab kundli: the nine grahas placed in the fixed houses, with each one's pakka ghar. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI"): Ayanamsa for the underlying sidereal positions. Lal Kitab itself is house-based and does not prescribe one; this is passed through to the position engine. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Lal Kitab chart layout POST https://api.occultapi.com/api/astro/lal-kitab/horoscope/ Docs: https://occultapi.com/docs/astro/lal-kitab/horoscope The Lal Kitab chart as twelve sign-slots, ready to draw. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI"): Ayanamsa for the underlying sidereal positions. Lal Kitab itself is house-based and does not prescribe one; this is passed through to the position engine. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Lal Kitab houses POST https://api.occultapi.com/api/astro/lal-kitab/houses/ Docs: https://occultapi.com/docs/astro/lal-kitab/houses The twelve Lal Kitab houses: each one's lord (maalik), the grahas whose pakka ghar it is, the grahas exalted and debilitated in it, and who is actually sitting there. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI"): Ayanamsa for the underlying sidereal positions. Lal Kitab itself is house-based and does not prescribe one; this is passed through to the position engine. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Lal Kitab planets POST https://api.occultapi.com/api/astro/lal-kitab/planets/ Docs: https://occultapi.com/docs/astro/lal-kitab/planets Each graha's sign, Lal Kitab house, degree, dignity and nature. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI"): Ayanamsa for the underlying sidereal positions. Lal Kitab itself is house-based and does not prescribe one; this is passed through to the position engine. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Lal Kitab varshphal POST https://api.occultapi.com/api/astro/lal-kitab/varshphal/ Docs: https://occultapi.com/docs/astro/lal-kitab/varshphal The Lal Kitab annual chart for a given year. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - year (integer, required, 1900..2200): Year of birth as a number, e.g. 1990. Four digits. - ayanamsa (string, default "LAHIRI"): Ayanamsa for the underlying sidereal positions. Lal Kitab itself is house-based and does not prescribe one; this is passed through to the position engine. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2027 } ``` ## Matching & compatibility ### Ashtakoota matching POST https://api.occultapi.com/api/astro/ashtakoota/ Docs: https://occultapi.com/docs/astro/ashtakoota Ashtakoota is the eight-part North Indian scheme for matching a bride and groom from their birth stars alone. Eight qualities are each scored — Varna out of 1, Vasya out of 2, Tara out of 3, Yoni out of 4, Graha Maitri out of 5, Gana out of 6, Bhakoot out of 7 and Nadi out of 8 — for a maximum of 36 points. South Indian practice ('porutham') asks much the same questions but answers most of them yes or no, and adds four further tests: Mahendra, Vedha, Rajju and Sthree Dheerga. Request body: - boy_nakshatra_number (integer, required) - boy_paadham_number (integer, required) - girl_nakshatra_number (integer, required) - girl_paadham_number (integer, required) - keys (array, required, one of raasi_from_nakshatra_pada | varna_porutham | vasiya_porutham | vasiya_porutham_south | dina_porutham | dina_porutham_south | gana_porutham | gana_porutham_south | yoni_porutham | yoni_porutham_south | raasi_adhipathi_porutham | raasi_adhipathi_porutham_south … (25 total)): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - method (string, required, one of North | South) - nakshatra_number (integer, required) - paadha_number (integer, required) - use_astroyogi_method (boolean, required) Calculations available via `keys` (25, all one credit): compatibility_score, dina_porutham, dina_porutham_south, gana_porutham, gana_porutham_south, mahendra_porutham, mahendra_porutham_south, naadi_porutham, naadi_porutham_south, raasi_adhipathi_porutham, raasi_adhipathi_porutham_south, raasi_from_nakshatra_pada, raasi_porutham, raasi_porutham_south, rajju_porutham, rajju_porutham_south, sthree_dheerga_porutham, sthree_dheerga_porutham_south, varna_porutham, vasiya_porutham, vasiya_porutham_south, vedha_porutham, vedha_porutham_south, yoni_porutham, yoni_porutham_south Example request: ```json { "keys": [ "raasi_from_nakshatra_pada" ], "boy_nakshatra_number": 5, "boy_paadham_number": 3, "girl_nakshatra_number": 12, "girl_paadham_number": 2, "method": "North", "nakshatra_number": 0, "paadha_number": 0, "use_astroyogi_method": true } ``` ### Partner star search POST https://api.occultapi.com/api/astro/compatibility_match/ Docs: https://occultapi.com/docs/astro/compatibility_match A reverse lookup over a precomputed table of all 11,664 bride-and-groom star-and-pada combinations. Rather than scoring one couple, it answers the other question: given one person's birth star and pada, which stars and padas make a good match? Fix the groom's star to get the brides who suit him, or the bride's to get the grooms. Request body: - boy_nakshatra (integer, required) - boy_paadham (integer, required) - girl_nakshatra (integer, required) - girl_paadham (integer, required) - method (string, required, one of North | South) - minimum_score (integer, required) - advanced_checks (object, one of mahendra | vedha | rajju | shree, default {"mahendra":true,"vedha":false}) Example request: ```json { "boy_nakshatra": 1, "boy_paadham": 1, "girl_nakshatra": 5, "girl_paadham": 2, "method": "South", "minimum_score": 0, "advanced_checks": { "mahendra": true, "vedha": true, "rajju": true, "shree": true } } ``` ### Gun milan POST https://api.occultapi.com/api/astro/gun-milan/ Docs: https://occultapi.com/docs/astro/gun-milan Gun milan: the Ashtakoota compatibility score out of 36. Request body: - boy_nakshatra_number (integer, required) - boy_paadham_number (integer, required) - girl_nakshatra_number (integer, required) - girl_paadham_number (integer, required) - nakshatra_number (integer, required) - paadha_number (integer, required) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - method (string, default "north") - use_astroyogi_method (boolean, default false) Example request: ```json { "boy_nakshatra_number": 5, "boy_paadham_number": 2, "girl_nakshatra_number": 12, "girl_paadham_number": 3, "nakshatra_number": 5, "paadha_number": 2 } ``` ### Marriage matching POST https://api.occultapi.com/api/astro/horoscope-match/ Docs: https://occultapi.com/docs/astro/horoscope-match Full Ashtakoota marriage matching from two birth records rather than two star numbers. Give the date, time and place of each partner and the endpoint derives the moon sign, nakshatra and pada itself, scores the eight kootas out of 36, checks for the two blocking doshas and returns a verdict. Request body: - boy (object, required) - girl (object, required) - ayanamsa (string, default "LAHIRI") Example request: ```json { "boy": { "date_time": "2026-09-01T06:00:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 }, "girl": { "date_time": "2026-09-01T06:00:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } } ``` ### Naadi marriage yogas POST https://api.occultapi.com/api/astro/naadi_marriage_prediction/ Docs: https://occultapi.com/docs/astro/naadi_marriage_prediction A short set of marriage indications from the Naadi tradition, following Satyanarayana Naik's presentation of Rao's system. Rather than weighing the seventh house, it looks only at which planets aspect the marriage significator — Venus for one gender, Mars for the other — reading Jupiter or Saturn as promising the marriage, Jupiter alone as early and Saturn alone as late, and Ketu or Rahu as obstruction or delay. Request body: - date_time (string, 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. - gender (integer, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone (number, required): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. Calculations available via `keys` (1, all one credit): check_marriage_yogas Example request: ```json { "keys": [ "check_marriage_yogas" ], "date_time": "2025-07-09T10:28:22.014Z", "latitude": 26.9124, "longitude": 75.7873, "timezone": 0, "gender": 0 } ``` ### Porutham (South Indian matching) POST https://api.occultapi.com/api/astro/porutham/ Docs: https://occultapi.com/docs/astro/porutham South Indian marriage compatibility: all twelve poruthams from one call. Request body: - boy_nakshatra_number (integer, required, 1..27) - boy_paadham_number (integer, required, 1..4) - girl_nakshatra_number (integer, required, 1..27) - girl_paadham_number (integer, required, 1..4) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - method (string, default "South") - nakshatra_number (integer, default 0) - paadha_number (integer, default 0) - use_astroyogi_method (boolean, default true) Example request: ```json { "boy_nakshatra_number": 5, "boy_paadham_number": 3, "girl_nakshatra_number": 12, "girl_paadham_number": 2 } ``` ## Transits & annual charts ### Transit over natal planet POST https://api.occultapi.com/api/astro/planet_transit_natal_planets/ Docs: https://occultapi.com/docs/astro/planet_transit_natal_planets Prewritten readings for one planet passing over another planet's birth position — transiting Saturn over the natal Moon, transiting Jupiter over the natal Sun, and so on. This is the pairwise transit table most transit reports are built from. Request body: - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - natal_planet (string, required, one of sun | moon | mars | mercury | jupiter | venus | saturn | rahu | ketu) - planet (string, required, one of sun | moon | mars | mercury | jupiter | saturn | rahu | ketu) Calculations available via `keys` (1, all one credit): get_planet_transit_natal_planets Example request: ```json { "keys": [ "get_planet_transit_natal_planets" ], "planet": "Sun", "natal_planet": "sun" } ``` ### Transit over house POST https://api.occultapi.com/api/astro/planet_transit_over_house/ Docs: https://occultapi.com/docs/astro/planet_transit_over_house Prewritten readings for a planet transiting a given house of the birth chart: what the Sun's passage through the third house is said to bring, what Saturn's through the seventh is said to bring, and so on, for nine planets across twelve houses. Request body: - house (integer, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - planet (string, required, one of sun | moon | mars | mercury | jupiter | venus | saturn | rahu | ketu) Calculations available via `keys` (1, all one credit): get_planet_transit_over_house Example request: ```json { "keys": [ "get_planet_transit_over_house" ], "planet": "Sun", "house": 3 } ``` ### Saturn transit phases POST https://api.occultapi.com/api/astro/shani_analysis/ Docs: https://occultapi.com/docs/astro/shani_analysis Saturn's slow circuit of the zodiac produces four named phases that Indian astrology watches closely, all measured from the birth Moon or birth ascendant: Sade Sati, the seven-and-a-half years around Saturn's passage over that point; Ashtama Shani, Saturn in the eighth from it; Kantaka Shani, Saturn in the fourth, seventh or tenth; and Dhaiya, also called Ardhashtama, Saturn in the fourth or eighth. This endpoint says whether each is running at a given moment, when it ends, and when the next one begins. Request body: - chart_name_natal (string, required) - chart_name_transit (string, required) - date_time_natal (string, required) - date_time_transit (string, required) - latitude_natal (number, required, -180..180) - latitude_transit (number, required, -180..180) - longitude_natal (number, required, -180..180) - longitude_transit (number, required, -180..180) - mode (integer, required) - ref_celestial (string, required, one of ascendant | moon) Example request: ```json { "date_time_natal": "2025-11-21T05:41:58.124Z", "date_time_transit": "2024-11-21T05:41:58.124Z", "longitude_natal": 77.5946, "latitude_natal": 12.9716, "longitude_transit": 26.1046, "latitude_transit": 26.9124, "chart_name_natal": "RashiChart", "chart_name_transit": "RashiChart", "ref_celestial": "ascendant", "mode": 0 } ``` ### Transit crossings POST https://api.occultapi.com/api/astro/transit/ Docs: https://occultapi.com/docs/astro/transit This endpoint searches for moments rather than describing a chart at a fixed time. It answers questions of the form: when does the Sun next reach 0 degrees of Aries, when does Mars next cross a given degree between two dates, when do Saturn and the Sun next share an ecliptic longitude, and where exactly does a body stand at an instant. Request body: - date_time (string, 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. - datetime_end (string, required) - datetime_start (string, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - planet (string, required, one of SUN | MOON | MERCURY | VENUS | MARS | JUPITER | SATURN | URANUS | NEPTUNE | PLUTO | MEAN_NODE | TRUE_NODE … (36 total)) - tz (number, required, -12..14) - celestial (string, one of SUN | MOON | MERCURY | VENUS | MARS | JUPITER | SATURN | URANUS | NEPTUNE | PLUTO | MEAN_NODE | TRUE_NODE … (36 total)) - celestial1 (string, one of SUN | MOON | MERCURY | VENUS | MARS | JUPITER | SATURN | URANUS | NEPTUNE | PLUTO | MEAN_NODE | TRUE_NODE … (36 total)) - celestial2 (string, one of SUN | MOON | MERCURY | VENUS | MARS | JUPITER | SATURN | URANUS | NEPTUNE | PLUTO | MEAN_NODE | TRUE_NODE … (36 total)) - degr (number) - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - nakshatras (string, one of special) - when (string, one of after | before) - x2cross (number) Calculations available via `keys` (8, all one credit): celestial_conjunction, find_moon_crossing, moon_node_crossing, planet_transit, set_default_transit, set_sidereal_transit, solar_crossing, transit_details Example request: ```json { "date_time": "2024-11-20T06:52:42.466Z", "keys": [ "set_sidereal_transit", "planet_transit", "solar_crossing", "celestial_conjunction", "transit_details" ], "latitude": 26.1046, "longitude": 75.7873, "tz": 5.5, "planet": "MARS", "datetime_start": "2024-11-20T06:52:42.466Z", "datetime_end": "2040-11-20T06:52:42.466Z", "degr": 0, "x2cross": 0, "celestial1": "SATURN", "celestial2": "SUN", "celestial": "MARS", "when": "after" } ``` ### Transit snapshot POST https://api.occultapi.com/api/astro/transit/details/ Docs: https://occultapi.com/docs/astro/transit/details Where a body is right now: sign, degree, nakshatra, pada and nakshatra lord. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after", "celestial": "mars" } ``` ### Moon crossing POST https://api.occultapi.com/api/astro/transit/moon-crossing/ Docs: https://occultapi.com/docs/astro/transit/moon-crossing When the Moon next reaches a given ecliptic longitude. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after", "x2cross": 90 } ``` ### Lunar node crossing POST https://api.occultapi.com/api/astro/transit/node-crossing/ Docs: https://occultapi.com/docs/astro/transit/node-crossing When the Moon next crosses its own node — the moments eclipses cluster around. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after" } ``` ### Planet at a degree POST https://api.occultapi.com/api/astro/transit/planet-at-degree/ Docs: https://occultapi.com/docs/astro/transit/planet-at-degree When a planet reaches a given degree, within a date window. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after", "planet": "mars", "degr": 135 } ``` ### Solar ingress POST https://api.occultapi.com/api/astro/transit/solar-ingress/ Docs: https://occultapi.com/docs/astro/transit/solar-ingress When the Sun next reaches a given ecliptic longitude. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after", "x2cross": 0 } ``` ## Tajika & varshaphala ### Harsha bala (Tajika) POST https://api.occultapi.com/api/astro/harsha-bala/ Docs: https://occultapi.com/docs/astro/harsha-bala Harsha bala: the Tajika five-fold strength, out of twenty. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - asc_house (integer, 1..12, default 1): Ascendant house number. Defaults to 1. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone (number, -12..14, default 0): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 1 } ``` ### Muddha dasha POST https://api.occultapi.com/api/astro/muddha_dasha/ Docs: https://occultapi.com/docs/astro/muddha_dasha Muddha dasha, also called Varsha Vimshottari, is the annual-chart counterpart of the ordinary Vimshottari dasha: the same nine planetary periods in the same sequence, compressed from 120 years into the single solar-return year you are examining. It is one of the standard timing tools of Tajika (Varshaphala) practice, used to say which stretch of a particular year belongs to which planet. Request body: - date_time (string, 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. - include_antardhasa (boolean, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - years (integer, required) Calculations available via `keys` (1, all one credit): mudda_dhasa_bhukthi Example request: ```json { "keys": [ "mudda_dhasa_bhukthi" ], "years": 0, "date_time": "2025-02-13T05:10:10.565Z", "include_antardhasa": true, "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Pancha vargeeya bala POST https://api.occultapi.com/api/astro/pancha-vargeeya-bala/ Docs: https://occultapi.com/docs/astro/pancha-vargeeya-bala Pancha vargeeya bala: the five-fold strength, with the components that run. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - asc_house (integer, 1..12, default 1): Ascendant house number. Defaults to 1. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - timezone (number, -12..14, default 0): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone": 5.5, "asc_house": 1 } ``` ### Patyayini dasha POST https://api.occultapi.com/api/astro/patyayini_dasha/ Docs: https://occultapi.com/docs/astro/patyayini_dasha Patyayini is one of the timing systems used with the Tajaka annual chart, the chart cast for the moment the Sun returns to its natal longitude each year. Where Vimshottari divides time by nakshatra, Patyayini divides the year by the gaps between the planets: the seven classical planets are sorted by longitude, the arc from each to the next fixes that planet's share, and the shares are scaled to fill exactly one year. The result says which planet governs which stretch of the coming twelve months, and which planet runs each sub-period inside that stretch. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. Calculations available via `keys` (1, all one credit): get_dasha_periods Example request: ```json { "keys": [ "get_dasha_periods" ], "date_time": "2025-02-13T05:07:54.585Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Sahams POST https://api.occultapi.com/api/astro/saham/ Docs: https://occultapi.com/docs/astro/saham A saham is a sensitive point worked out by arithmetic on three positions in a chart: take the arc from one planet to another and lay it off from a third point, usually the ascendant. The technique reached Indian astrology from Perso-Arabic sources and is the same idea as the Arabic lot or the Hellenistic part — Punya Saham is the Lot of Fortune under another name. Each saham stands for one department of life, such as marriage, children, wealth, illness or litigation, and its position and the strength of its lord are read for what that department will bring, chiefly in the Tajaka annual chart. Request body: - chart (string, required, one of BhavaChart | RashiChart | HoraChart | JagannathHoraChart | ParivrittidwayaHoraChart | DrekkanaChart | ParivrittitrayaDrekkanaChart | SomnathDrekkanaChart | JagannathDrekkanaChart | ChaturthamsaChart | PanchamsaChart | ShashthamsaChart … (32 total)) - compensation (boolean, required) - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - night_time_birth (boolean, required) - notation (string, required, one of degree | astrological) - timezone_as_float (number, required, -12..14): 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. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. Calculations available via `keys` (39, all one credit): all_sahams, anya_karma_saham, artha_saham, asha_saham, bandhana_saham, bandhu_saham, bhratri_saham, deshantara_saham, gaurava_saham, jadya_saham, jalpatha_saham, jeeva_saham, kali_saham, karma_saham, karya_sidhi_saham, labha_saham, mahatmya_saham, manmatha_saham, matri_saham, mitra_saham, mrityu_saham, paneeya_paata_saham, paradara_saham, pitri_saham, prasava_saham, preeti_saham, punya_saham, putra_saham, roga_saham, samarthya_saham, santaapa_saham, shastra_saham, shatru_saham, shraddha_saham, vanika_saham, vidya_saham, vivaha_saham, vyapara_saham, yasha_saham Example request: ```json { "keys": [ "vidya_saham" ], "latitude": 26.1046, "longitude": 74.319, "timezone_as_float": 5.5, "chart": "RashiChart", "night_time_birth": true, "compensation": true, "notation": "degree", "date_time": "2026-09-01T06:00:00+05:30" } ``` ### Sahams (Arabic Parts) POST https://api.occultapi.com/api/astro/sahams/ Docs: https://occultapi.com/docs/astro/sahams All thirty-eight sahams — the Vedic Arabic Parts — each with the English name it is usually known by. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - chart (string, default "RashiChart") - compensation (boolean, default true) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - night_time_birth (boolean, default false): Several lots reverse their formula for a night birth. - notation (string, default "degree") Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "chart": "RashiChart", "notation": "degree" } ``` ### Tajika aspects POST https://api.occultapi.com/api/astro/tajaka/ Docs: https://occultapi.com/docs/astro/tajaka Tajika is the branch of Indian astrology that absorbed Perso-Arabic technique, and it uses a different aspect scheme from ordinary Vedic drishti. Signs and planets relate to one another by trine, sextile, square, opposition, conjunction and semi-sextile, much as in Western astrology, and each of those is classed benefic, malefic or neutral: trine and sextile are benefic, square, opposition and conjunction malefic, semi-sextile neutral. This endpoint answers aspect questions about a single chart cast for the date, time and place you send. Request body: - date_time (string, 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. - house (integer, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - node (string, required, one of true | mean) - planet (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - planet1 (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - planet2 (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - raasi (integer, required) - timezone_as_float (number, required, -12..14): 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. Calculations available via `keys` (28, all one credit): aspects_of_the_planet, aspects_of_the_raasi, benefic_aspects_of_the_planet, benefic_aspects_of_the_raasi, both_planets_approaching, both_planets_within_their_deeptamsa, conjunction_aspects_of_the_planet, conjunction_aspects_of_the_raasi, malefic_aspects_of_the_planet, malefic_aspects_of_the_raasi, neutral_aspects_of_the_planet, neutral_aspects_of_the_raasi, opposition_aspects_of_the_planet, opposition_aspects_of_the_raasi, planet_aspects_from_chart, planet_has_benefic_aspect_on_house, planet_has_malefic_aspect_on_house, planets_have_aspects, planets_have_benefic_aspects, planets_have_malefic_aspects, planets_have_neutral_aspects, semi_sextile_aspects_of_the_raasi, sextile_aspects_of_the_planet, sextile_aspects_of_the_raasi, square_aspects_of_the_planet, square_aspects_of_the_raasi, trinal_aspects_of_the_planet, trinal_aspects_of_the_raasi Example request: ```json { "keys": [ "trinal_aspects_of_the_raasi" ], "raasi": 0, "planet": "Moon", "planet1": "Mercury", "planet2": "Saturn", "node": "true", "date_time": "2025-02-12T08:55:55.430Z", "house": 0, "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Tajika yogas POST https://api.occultapi.com/api/astro/tajaka_yoga/ Docs: https://occultapi.com/docs/astro/tajaka_yoga The Tajika yogas are the named planetary relationships used to judge whether a matter will actually come off, and they are the working tools of the annual solar-return chart (Varshaphala) and of horary work. The central pair is ithasala, where two planets are inside each other's orb and the faster one is still applying to the slower, taken as a promise that will be kept, and eesarpha, where the same two are separating, taken as an opportunity already gone. The rest qualify those: nakta and yamaya describe a third planet carrying the connection between two that do not aspect each other, kamboola brings the Moon into an ithasala, manahoo has Mars or Saturn spoiling one, and ishkavala and induvara are whole-chart patterns based on where the planets fall relative to the angles. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - node (string, required, one of true | mean) - planet (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - planet1 (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - planet2 (string, required, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - timezone_as_float (number, required, -12..14): 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. Calculations available via `keys` (13, all one credit): check_yamaya_yoga, eesarpha_yoga, get_eesarpha_yoga_planet_pairs, get_gairi_kamboola_yoga_planet_pairs, get_ithasala_yoga_planet_pairs, get_kamboola_yoga_planet_pairs, get_khallasara_yoga_planet_pairs, get_manahoo_yoga_planet_pairs, get_nakta_yoga_planet_triples, get_yamaya_yoga_planet_triples, induvara_yoga, ishkavala_yoga, ithasala_yoga Example request: ```json { "keys": [ "check_yamaya_yoga" ], "planet": "Pluto", "planet1": "Mars", "planet2": "Saturn", "node": "mean", "date_time": "2025-02-12T09:13:52.017Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Tajika annual charts POST https://api.occultapi.com/api/astro/tajika/ Docs: https://occultapi.com/docs/astro/tajika Tajika timing works by re-casting the birth chart for the moment the Sun comes back to a chosen longitude. The annual chart, varshapravesh, is cast for the instant the Sun returns to its exact natal longitude, which is the birthday to the minute rather than to the day; the monthly chart, maasapravesh, advances that longitude by 30 degrees at a time. This endpoint returns those two plus four progressively shorter subdivisions of the same idea, down to charts that change every couple of minutes. Request body: - date_time (string, 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. - date_time_target (string, required) - degree_increment (number, required) - latitude (number, required, -180..180): 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. - longitude (number, required, -180..180): 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. - name (string, required) - notation (string, required, one of astrological | degree) - solarmonths (number, required) - solaryears (number, required) - tajika_25min (boolean, required) - tajika_2min (boolean, required) Example request: ```json { "date_time": "2024-11-14T13:38:12.924Z", "longitude": 74.319, "latitude": 26.1046, "name": "RashiChart", "solarmonths": 1, "solaryears": 2, "degree_increment": 1.5, "date_time_target": "2024-12-14T13:38:12.924Z", "tajika_25min": true, "tajika_2min": false, "notation": "astrological" } ``` ### Tajika aspects POST https://api.occultapi.com/api/astro/tajika/aspects/ Docs: https://occultapi.com/docs/astro/tajika/aspects Every Tajika aspect to one sign and one planet, in a single call. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - house (integer, 0..11, default 0): House to test for benefic/malefic aspect, zero-based. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, one of true | mean, default "true") - planet (string, default "Moon"): The planet whose aspects are read. - planet1 (string, default "Mercury") - planet2 (string, default "Saturn"): planet1 and planet2 are the PAIR tested for deeptamsa and approach; they do not affect the aspect lists. - raasi (integer, 0..11, default 0): Sign to read aspects to, ZERO-BASED: 0 is Aries, 11 Pisces. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "raasi": 0, "planet": "Moon", "planet1": "Mercury", "planet2": "Saturn" } ``` ### Tajika yogas POST https://api.occultapi.com/api/astro/tajika/yogas/ Docs: https://occultapi.com/docs/astro/tajika/yogas The thirteen Tajika yogas, as named results rather than thirteen keys. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - node (string, one of true | mean, default "true") - planet (string, default "Moon") - planet1 (string, default "Mars") - planet2 (string, default "Saturn") - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "planet": "Moon", "planet1": "Mars", "planet2": "Saturn" } ``` ## Scans & transitions ### Combustion periods POST https://api.occultapi.com/api/astro/combustion/ Docs: https://occultapi.com/docs/astro/combustion When a planet is too close to the Sun to be seen it is said to be combust — asta, 'set' — and classical texts treat it as burnt up and unable to deliver its results. This endpoint returns every combustion period touching a given calendar year for one planet. Request body: - planet (string, required, one of mars | mercury | venus | jupiter | saturn) - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "planet": "mars", "year": 2026, "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Karana scan POST https://api.occultapi.com/api/astro/karana_scan/ Docs: https://occultapi.com/docs/astro/karana_scan A karana is half a tithi — six degrees of the Moon's separation from the Sun, roughly eleven to thirteen hours. There are eleven names: seven movable ones that each repeat eight times through a lunar month, and four fixed ones that occur once each. Vishti, usually called Bhadra, is the one that is avoided. Request body: - karana_name (string, required, one of Kimstughna | Bava | Balava | Kaulava | Taitula | Garaja | Vanija | Vishti | Shakuni | Chatushpada | Naga) - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "karana_name": "Kimstughna", "timezone_as_float": 5.5, "year": 2026 } ``` ### Lunar month scan POST https://api.occultapi.com/api/astro/lunar_month_scan/ Docs: https://occultapi.com/docs/astro/lunar_month_scan Finds the exact start and end instants of one named Hindu lunar month within a calendar year — Chaitra, Vaisakha, Jyeshtha and so on. Useful for scheduling anything anchored to a lunar month rather than a Gregorian one. Request body: - month_name (string, required, one of Vaisakha | Jyeshtha | Ashadha | Shravana | Bhadrapada | Ashwin | Kartika | Margashirsha | Pausha | Magha | Phalguna | Chaitra) - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - reckoning (string, one of amanta | poornima, default "amanta") Example request: ```json { "month_name": "Vaisakha", "timezone_as_float": 5.5, "year": 2026, "reckoning": "amanta" } ``` ### Nakshatra transitions POST https://api.occultapi.com/api/astro/nakshatra_transitions/ Docs: https://occultapi.com/docs/astro/nakshatra_transitions Every planet's movement from one nakshatra to the next across a calendar year, with each crossing resolved to about a second. This is the 'planet nakshatra gochar' table: when Saturn leaves Purva Bhadrapada, when Jupiter enters Pushya, when the Moon changes star — the events transit predictions are timed from. Request body: - granularity (string, required, one of nakshatra | pada) - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - timezone_as_float (number, default 5.5): 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. - use_28_nakshatras (boolean, default false) Example request: ```json { "granularity": "nakshatra", "year": 2026, "timezone_as_float": 5.5 } ``` ### Retrograde periods POST https://api.occultapi.com/api/astro/retrograde/ Docs: https://occultapi.com/docs/astro/retrograde Every retrograde period for a year, in one small response. Retrograde, or vakri, motion is the apparent backwards drift of a planet against the stars, and astrological practice treats those spans as a distinct phase in the planet's behaviour. Request body: - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "year": 2026 } ``` ### Sign transitions POST https://api.occultapi.com/api/astro/sign_transitions/ Docs: https://occultapi.com/docs/astro/sign_transitions Every moment a planet crosses from one sidereal sign into the next, for a whole year — the event Indian astrology calls gochar, or sankranti in the Sun's case. The Sun's twelve crossings mark the solar months, Jupiter's and Saturn's are what long-range predictions hang on, and the Moon's come round every two and a half days. Request body: - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - timezone_as_float (number, default 5.5): 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. Example request: ```json { "year": 2026, "timezone_as_float": 5.5 } ``` ### Tithi year scan POST https://api.occultapi.com/api/astro/tithi_scan/ Docs: https://occultapi.com/docs/astro/tithi_scan A tithi is one thirtieth of the lunar month — the stretch of time during which the Moon gains a further 12 degrees of elongation on the Sun. Tithis are the unit almost every Hindu observance is defined on, and they do not line up with civil days: one can be as short as about nineteen hours or as long as about twenty-six, so a single occurrence often spans two dates. This endpoint takes one named tithi and returns every occurrence of it in a calendar year, with the true instant it begins and ends. Request body: - timezone_as_float (number, required): 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. - tithi_number (integer, required, 1..30) - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "timezone_as_float": 5.5, "tithi_number": 1, "year": 2026 } ``` ### Nitya Yoga year scan POST https://api.occultapi.com/api/astro/yoga_scan/ Docs: https://occultapi.com/docs/astro/yoga_scan The Nitya Yoga is the twenty-seventh division of the circle formed by adding the Sun's and the Moon's sidereal longitudes together. Each of the twenty-seven — Vishkambha through Vaidhriti — lasts a little under a day, and they matter for electional work: Vyatipata, Vaidhriti, Parigha, Vyaghata, Shoola, Ganda and Atiganda are traditionally avoided, while Siddhi, Siddha, Shubha, Amrita-class and Sukarma yogas are sought. This endpoint takes one yoga by name and returns every occurrence of it in a calendar year. Request body: - timezone_as_float (number, required): 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. - year (integer, required, 1800..2400): Year of birth as a number, e.g. 1990. Four digits. - yoga_name (string, required, one of Vishkambha | Preeti | Ayushman | Saubhagya | Shobhana | Atiganda | Sukarma | Dhriti | Shoola | Ganda | Vriddhi | Dhruva … (27 total)) Example request: ```json { "timezone_as_float": 5.5, "year": 2026, "yoga_name": "Vishkambha" } ``` ## Predictions & readings ### General predictions POST https://api.occultapi.com/api/astro/general_prediction/ Docs: https://occultapi.com/docs/astro/general_prediction A written character-and-life reading assembled from a birth chart: the temperament of the moon sign, what each of the nine planets means in the house it occupies, and what each of the twelve house lords means in the house it has gone to. It is the narrative counterpart to /api/astro/chart_analysis/, which returns much the same structure as data. Request body: - date_time (string, 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. - keys (array, required, one of get_prediction_details): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone (number, required): UTC offset of the place, in hours, as a decimal. Example: 5.5 for India (UTC+05:30). Identical in meaning to timezone_as_float, which other endpoints call the same thing by a different name. Calculations available via `keys` (1, all one credit): get_prediction_details Example request: ```json { "keys": [ "get_prediction_details" ], "date_time": "2025-07-09T10:26:45.109Z", "latitude": 26.9124, "longitude": 75.7873, "timezone": 0 } ``` ### Sign in house readings POST https://api.occultapi.com/api/astro/rashi_in_house_insights/ Docs: https://occultapi.com/docs/astro/rashi_in_house_insights Prewritten readings for a zodiac sign occupying a particular house of the chart — Aries on the second house, Cancer on the seventh, and so on, for all 144 combinations. Each describes what the house's affairs look like when coloured by that sign. Request body: - house (string, required, one of lagna | dhana | sahaja | sukha | putra | satru | yuvati | randhra | bhagya | karma | labha | vyaya) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces) Calculations available via `keys` (1, all one credit): get_rashi_in_house Example request: ```json { "keys": [ "get_rashi_in_house" ], "house": "dhana", "rashi": "aries" } ``` ### Rashifal forecasts POST https://api.occultapi.com/api/astro/rashifal/ Docs: https://occultapi.com/docs/astro/rashifal Rashifal is the sign-based horoscope column: a forecast written for everyone born under one of the twelve Moon signs, with no birth chart involved. This endpoint produces four of them — daily, weekly, monthly and yearly — each in English and Hindi in the same response. Request body: - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - date (string) - rashi (string, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces) Calculations available via `keys` (4, all one credit): get_daily_rashifal, get_monthly_rashifal, get_weekly_rashifal, get_yearly_rashifal Example request: ```json { "date": "2026-09-01", "rashi": "aries", "keys": [ "get_daily_rashifal", "get_weekly_rashifal", "get_monthly_rashifal" ] } ``` ### Rashifal today POST https://api.occultapi.com/api/astro/rashifal/daily/ Docs: https://occultapi.com/docs/astro/rashifal/daily Today's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ### Rashifal this month POST https://api.occultapi.com/api/astro/rashifal/monthly/ Docs: https://occultapi.com/docs/astro/rashifal/monthly This month's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ### Rashifal tomorrow POST https://api.occultapi.com/api/astro/rashifal/tomorrow/ Docs: https://occultapi.com/docs/astro/rashifal/tomorrow Tomorrow's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ### Rashifal this week POST https://api.occultapi.com/api/astro/rashifal/weekly/ Docs: https://occultapi.com/docs/astro/rashifal/weekly This week's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ### Rashifal this year POST https://api.occultapi.com/api/astro/rashifal/yearly/ Docs: https://occultapi.com/docs/astro/rashifal/yearly This year's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ### Rashifal yesterday POST https://api.occultapi.com/api/astro/rashifal/yesterday/ Docs: https://occultapi.com/docs/astro/rashifal/yesterday Yesterday's reading for one rashi, with every life aspect. Request body: - rashi (string, required, one of aries | taurus | gemini | cancer | leo | virgo | libra | scorpio | sagittarius | capricorn | aquarius | pisces): Western sign name. Case-insensitive: Aries, aries and ARIES are all accepted. - aspect (string): Return only this aspect, in any case. Omit for all ten. - date (string): The day to read from. Defaults to today. For `tomorrow` and `yesterday` the offset is applied to this date, so sending 2026-09-16 to /tomorrow/ reads 2026-09-17. Example request: ```json { "rashi": "aries", "date": "2026-09-01" } ``` ## Prashna ### Panchashalaka chakra GET https://api.occultapi.com/api/astro/panchashalaka_chakra/ Docs: https://occultapi.com/docs/astro/panchashalaka_chakra The Panchashalaka chakra is a muhurta diagram: the 28 nakshatras (the usual 27 plus Abhijit) are laid out seven to a side around a square, and lines drawn across it pair each nakshatra with the one it faces. That facing relationship is called vedha, "piercing". If a malefic planet sits in the nakshatra opposite the one you meant to use, the moment counts as pierced and is dropped, which is why the chakra is consulted when fixing wedding dates. Example request: ```json {} ``` ### Panchashalaka vedha lookup GET https://api.occultapi.com/api/astro/panchashalaka_vedha/ Docs: https://occultapi.com/docs/astro/panchashalaka_vedha A single-nakshatra lookup into the Panchashalaka chakra. Given a nakshatra it returns the one nakshatra that faces it across the diagram — the pairing muhurta practice treats as an obstruction, so that a malefic occupying the partner afflicts any moment falling in your nakshatra. Query parameters: - nakshatra (string, required) Example request: ```json { "nakshatra": "Abhijit" } ``` ### Prashna sensitive points POST https://api.occultapi.com/api/astro/prashna/ Docs: https://occultapi.com/docs/astro/prashna Prashna is horary astrology: a chart cast for the moment a question is asked rather than for a birth. This endpoint computes the sensitive points that Prashna and longevity work rely on — arithmetic combinations of longitudes that are not planets themselves but are read as though they were. Gulika, also called Mandi, the shadowy point associated with Saturn, is the ingredient most of them are built from. Request body: - add_yogi_longitude (boolean, required) - date_time (string, 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, required, -180..180): 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. - longitude (number, required, -180..180): 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. - name (string, required) - node_type (string, required, one of true | mean) Example request: ```json { "date_time": "2024-11-14T11:59:23.365Z", "longitude": 74.319, "latitude": 26.1046, "name": "RashiChart", "node_type": "true", "add_yogi_longitude": true } ``` ### Saptashalaka chakra GET https://api.occultapi.com/api/astro/saptashalaka_chakra/ Docs: https://occultapi.com/docs/astro/saptashalaka_chakra The Saptashalaka chakra is a muhurta diagram of seven rods: the 28 nakshatras (27 plus Abhijit) are arranged seven to a side around a square, and lines drawn across it link each nakshatra to three others — the one directly opposite and the two reached diagonally. A planet sitting in any of the three is said to pierce (vedha) the nakshatra in question, and a moment falling in a pierced nakshatra is dropped when fixing a date, particularly for a marriage. Example request: ```json {} ``` ### Saptashalaka vedha lookup GET https://api.occultapi.com/api/astro/saptashalaka_vedha/ Docs: https://occultapi.com/docs/astro/saptashalaka_vedha A single-nakshatra lookup into the Saptashalaka chakra. Given a nakshatra it returns the three others that pierce it: `front`, the one directly opposite on the diagram, and `diagonal_right` and `diagonal_left`, the two reached across the corners. In muhurta practice a malefic in any of the three afflicts a moment falling in your nakshatra. Query parameters: - nakshatra (string, required) - type (string) Example request: ```json { "nakshatra": "Abhijit" } ``` ## Avatar chakra ### Prashnavali POST https://api.occultapi.com/api/astro/chakra/ Docs: https://occultapi.com/docs/astro/chakra Four traditional question-and-answer prashnavali, returned as data so you can build the drawing mechanism yourself. There is no astronomy here — nothing is calculated from a date or a place. These are fixed devotional texts. Request body: - keys (array, required, one of ram_shalaka | hanuman_prashnavali | sai_prashnavali | mavji_maharaj): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - number (integer): Entry number to fetch. Required when 'sai_prashnavali' is in keys. Ignored for other chakras. Example request: ```json { "keys": [ "ram_shalaka" ] } ``` ## Tarot ### Tarot deck reference POST https://api.occultapi.com/api/astro/tarot/deck/ Docs: https://occultapi.com/docs/astro/tarot/deck The whole deck, and every spread, as reference data. Request body: - arcana (string, one of both | major | minor, default "both"): Narrow the listing. The twenty-two major arcana are often wanted on their own — some readers work with them alone. - suit (string, one of all | Wands | Cups | Swords | Pentacles, default "all"): Return only one suit. Ignored when arcana is 'major'. Example request: ```json { "arcana": "both", "suit": "all" } ``` ### Tarot draw POST https://api.occultapi.com/api/astro/tarot/draw/ Docs: https://occultapi.com/docs/astro/tarot/draw Draw cards from a shuffled seventy-eight card Rider-Waite-Smith deck. Request body: - allow_reversed (boolean, default true): Whether cards can come up reversed. Some readers work upright-only. - count (integer, 1..21, default 3): How many cards to draw, at most 21. Cards are drawn without replacement, so none can repeat. - question (string): Optional. Echoed back, and folded into a generated seed. - reversal_chance (number, 0..1, default 0.5): Probability of a reversal, when reversals are allowed. - seed (string): Send a seed to reproduce a draw exactly. Omit it and one is generated and returned, so any draw can be repeated afterwards. Example request: ```json { "question": "What should I focus on this month?", "count": 3, "seed": "sample-draw" } ``` ### Tarot spread POST https://api.occultapi.com/api/astro/tarot/spread/ Docs: https://occultapi.com/docs/astro/tarot/spread A named spread with every position labelled. Request body: - allow_reversed (boolean, default true): Whether cards can come up reversed. Some readers work upright-only. - question (string): Optional. Echoed back, and folded into a generated seed. - reversal_chance (number, 0..1, default 0.5): Probability of a reversal, when reversals are allowed. - seed (string): Send a seed to reproduce a draw exactly. Omit it and one is generated and returned, so any draw can be repeated afterwards. - spread (string, one of celtic_cross | horseshoe | one_card | relationship | situation | three_card, default "three_card"): Which named spread to lay out. Example request: ```json { "question": "How is this relationship placed?", "spread": "three_card", "seed": "sample-spread" } ``` ### Tarot yes or no POST https://api.occultapi.com/api/astro/tarot/yes-no/ Docs: https://occultapi.com/docs/astro/tarot/yes-no One card drawn against a question, read as yes, no or maybe. Request body: - allow_reversed (boolean, default true): Whether cards can come up reversed. Some readers work upright-only. - question (string): Optional. Echoed back, and folded into a generated seed. - reversal_chance (number, 0..1, default 0.5): Probability of a reversal, when reversals are allowed. - seed (string): Send a seed to reproduce a draw exactly. Omit it and one is generated and returned, so any draw can be repeated afterwards. Example request: ```json { "question": "Should I take the offer?", "seed": "sample-yesno" } ``` ## Pancha Pakshi ### Pancha Pakshi (bird activity by hora) POST https://api.occultapi.com/api/astro/pancha_pakshi_hora/ Docs: https://occultapi.com/docs/astro/pancha_pakshi_hora Pancha Pakshi Shastra is a Tamil system that assigns each person one of five birds — vulture, owl, crow, cock or peacock — from their birth nakshatra and fortnight, and then times the day by what that bird is doing. Every bird cycles through five activities, ruling, eating, walking, sleeping and dying, in descending order of favourability, and each part of the day is good or bad according to how your bird's activity relates to the one currently in force. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - nakshatras (string, one of special) Calculations available via `keys` (4, all one credit): get_birth_bird_from_nakshathra, get_birth_nakshathra, get_matching_pancha_pakshi_data_from_db, get_paksha Example request: ```json { "date_time": "2026-09-01 06:00:00", "keys": [ "get_birth_bird_from_nakshathra", "get_birth_nakshathra", "get_matching_pancha_pakshi_data_from_db" ], "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "nakshatras": "special" } ``` ### Pancha Pakshi (day in ten yamas) POST https://api.occultapi.com/api/panchpakshi/ Docs: https://occultapi.com/docs/panchpakshi Pancha Pakshi is a South Indian timing system that assigns every person one of five birds — vulture, owl, crow, cock or peacock — and divides the day into ten periods called yamas, five between sunrise and sunset and five between sunset and the next sunrise. In the full tradition each bird passes through five states of activity (ruling, eating, walking, sleeping and dying) across those periods, and work is timed to the periods when your own bird is strong. This endpoint returns the two inputs that scheme is built on: the yama boundaries for a given day and place, and the birth bird for a given moment. Request body: - datetime (string, 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. Same meaning as date_time, which other endpoints call the same thing by a different name. - fixed (boolean, required) - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - nakshatras (string, one of special) Example request: ```json { "fixed": true, "datetime": "2024-11-21T09:39:20.910Z", "latitude": 26.1046, "longitude": 74.319, "timezone_as_float": 5.5 } ``` ## Returns ### Lunar return POST https://api.occultapi.com/api/astro/return/lunar/ Docs: https://occultapi.com/docs/astro/return/lunar The Moon back on its natal degree, roughly every 27.3 days — the monthly chart. Request body: - date_time (string, 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. - count (integer, 1..24, default 1): How many consecutive returns to report, at most 24. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - search_from (string): Start looking here instead of at the birth moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "search_from": "2026-01-01T00:00:00+00:00", "count": 3 } ``` ### Planetary return POST https://api.occultapi.com/api/astro/return/planet/ Docs: https://occultapi.com/docs/astro/return/planet A return of any body, chosen at request time with `body`. Request body: - date_time (string, 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. - body (string, one of jupiter | mars | mercury | moon | neptune | pluto | saturn | sun | uranus | venus, default "sun") - count (integer, 1..24, default 1): How many consecutive returns to report, at most 24. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - search_from (string): Start looking here instead of at the birth moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "body": "jupiter", "search_from": "2026-01-01T00:00:00+00:00", "count": 2 } ``` ### Saturn return POST https://api.occultapi.com/api/astro/return/saturn/ Docs: https://occultapi.com/docs/astro/return/saturn Saturn back on its natal degree — around ages 29, 58 and 88. Request body: - date_time (string, 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. - count (integer, 1..24, default 1): How many consecutive returns to report, at most 24. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - search_from (string): Start looking here instead of at the birth moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "search_from": "2015-01-01T00:00:00+00:00", "count": 2 } ``` ### Solar return POST https://api.occultapi.com/api/astro/return/solar/ Docs: https://occultapi.com/docs/astro/return/solar The exact instant the Sun regains the ecliptic longitude it held at birth — the astrological birthday, and the chart read for the year ahead. Request body: - date_time (string, 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. - count (integer, 1..24, default 1): How many consecutive returns to report, at most 24. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - search_from (string): Start looking here instead of at the birth moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "search_from": "2026-01-01T00:00:00+00:00", "count": 3 } ``` ### Return to a degree POST https://api.occultapi.com/api/astro/return/to-degree/ Docs: https://occultapi.com/docs/astro/return/to-degree When a body reaches an arbitrary ecliptic degree rather than its natal one. Request body: - date_time (string, 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. - target_longitude (number, required, 0..360): Ecliptic longitude to return to, 0-360 from 0 Aries. - body (string, one of jupiter | mars | mercury | moon | neptune | pluto | saturn | sun | uranus | venus, default "sun") - count (integer, 1..24, default 1): How many consecutive returns to report, at most 24. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - search_from (string): Start looking here instead of at the birth moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "body": "sun", "target_longitude": 229.667, "search_from": "2026-01-01T00:00:00+00:00", "count": 1 } ``` ## Eclipses ### Eclipse POST https://api.occultapi.com/api/astro/eclipse/ Docs: https://occultapi.com/docs/astro/eclipse Serializer for Eclipse and its related calculations. Request body: - date_time (string, 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. - elevation (number, required) - keys (array, required, one of solar_eclipse_global | solar_eclipse_local | solar_eclipse_attributes | solar_eclipse_where | lunar_eclipse_global | lunar_eclipse_local | lunar_eclipse_attributes | lunar_eclipse_when): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - tz (number, required, -12..14) - attr (string, one of central | non-central) - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - type (string, one of total | annular | partial | hybrid | any) - when (string, one of after | before) Calculations available via `keys` (8, all one credit): lunar_eclipse_attributes, lunar_eclipse_global, lunar_eclipse_local, lunar_eclipse_when, solar_eclipse_attributes, solar_eclipse_global, solar_eclipse_local, solar_eclipse_where Example request: ```json { "keys": [ "solar_eclipse_global" ], "date_time": "2026-01-01T00:00:00+00:00", "latitude": 26.9124, "longitude": 75.7873, "tz": 5.5, "elevation": 0, "type": "total", "attr": "central", "when": "after" } ``` ### Eclipse attributes at a moment POST https://api.occultapi.com/api/astro/eclipse/attributes/ Docs: https://occultapi.com/docs/astro/eclipse/attributes How deep an eclipse is at one instant, seen from one place. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - kind (string, one of solar | lunar, default "solar"): Which body's eclipse to measure at this moment. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-08-12T17:46:00+00:00", "timezone_as_float": 0, "latitude": 64.1466, "longitude": -21.9426, "kind": "solar" } ``` ### Local eclipse visibility POST https://api.occultapi.com/api/astro/eclipse/local/ Docs: https://occultapi.com/docs/astro/eclipse/local The next eclipse VISIBLE from one place, with its local circumstances. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - kind (string, one of both | solar | lunar, default "both") - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-08-01T00:00:00+00:00", "timezone_as_float": 0, "latitude": 40.4168, "longitude": -3.7038, "kind": "solar", "direction": "after" } ``` ### Next lunar eclipse POST https://api.occultapi.com/api/astro/eclipse/next-lunar/ Docs: https://occultapi.com/docs/astro/eclipse/next-lunar The next lunar eclipse, with the penumbral, partial and total phases named. Request body: - date_time (string, 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. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "timezone_as_float": 0, "direction": "after" } ``` ### Next solar eclipse POST https://api.occultapi.com/api/astro/eclipse/next-solar/ Docs: https://occultapi.com/docs/astro/eclipse/next-solar The next solar eclipse anywhere on Earth, with every contact time named. Request body: - date_time (string, 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. - centrality (string, one of any | central | non-central, default "any"): Central means the Moon's shadow axis actually touches the Earth. Only meaningful when eclipse_type is not 'any'. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - eclipse_type (string, one of any | total | annular | partial | hybrid, default "any"): Restrict the search to one kind of solar eclipse. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "timezone_as_float": 0, "eclipse_type": "total", "centrality": "any", "direction": "after" } ``` ### Eclipses in a date range POST https://api.occultapi.com/api/astro/eclipse/range/ Docs: https://occultapi.com/docs/astro/eclipse/range Every eclipse between two dates, with no gaps. Request body: - date_time (string, 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. - end_date_time (string, required) - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - kind (string, one of both | solar | lunar, default "both") - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "end_date_time": "2027-12-31T23:59:59+00:00", "timezone_as_float": 0, "kind": "both" } ``` ### Upcoming eclipses POST https://api.occultapi.com/api/astro/eclipse/upcoming/ Docs: https://occultapi.com/docs/astro/eclipse/upcoming The next several eclipses, solar and lunar merged into one chronological list. Request body: - date_time (string, 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. - count (integer, 1..24, default 6): How many eclipses to return, at most 24. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - kind (string, one of both | solar | lunar, default "both") - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "timezone_as_float": 0, "count": 6, "kind": "both", "direction": "after" } ``` ### Eclipse visibility path POST https://api.occultapi.com/api/astro/eclipse/visibility-path/ Docs: https://occultapi.com/docs/astro/eclipse/visibility-path Where a solar eclipse is total, as a line of coordinates you can draw on a map. Request body: - date_time (string, 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. - centrality (string, one of any | central | non-central, default "any"): Central means the Moon's shadow axis actually touches the Earth. Only meaningful when eclipse_type is not 'any'. - direction (string, one of after | before, default "after"): Search forward from date_time, or backward. - eclipse_type (string, one of any | total | annular | partial | hybrid, default "any"): Restrict the search to one kind of solar eclipse. - elevation (number, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - samples (integer, 2..120, default 24): How many points to trace along the path. More is smoother; at most 120. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "timezone_as_float": 0, "eclipse_type": "total", "direction": "after", "samples": 24 } ``` ## Mundane astrology ### Mundane astrology POST https://api.occultapi.com/api/astro/mundane/ Docs: https://occultapi.com/docs/astro/mundane Mundane astrology reads the year for a country rather than for a person. Its central device is the samvatsara cabinet: ten 'officers' of the year, each a planet, each fixed by the weekday on which a particular solar event falls — the king from the lunar new year, the minister from the Sun's entry into Aries, the lord of clouds from its entry into Ardra, and so on down to the lords of grain, treasury and fruits. A year with Saturn as king is read very differently from one with Jupiter. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, required, -90..90): 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. - longitude (number, required, -180..180): 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. - nakshatra (string, required, one of Krittika | Visaakha | Anooraadha | Bharani | Rohini | Swaati | Jyeshtha | Ashwini | Mrigasira | Chitra | Moola | Revati … (26 total)) - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. Calculations available via `keys` (24, all one credit): ardra_entry, ardra_pravesh_chart, chaitra_shukla_pratipada, das_adhikari, dhaanyesha_of_year, dhanesha_of_year, durgesha_of_year, equinoxes, greeshmasasya_chart, indian_ritus, jagat_lagna_chart, king_of_year, mantri_of_year, meghesha_of_year, nakshatra_lord_effects, neersesha_of_year, phalesha_of_year, rasesha_of_year, samvatsara_purusha_chakra, sapta_nadi_chakra, sashyesha_of_year, sharatsasya_chart, solstices, vaahan_of_samvat Example request: ```json { "keys": [ "nakshatra_lord_effects" ], "year": 2025, "date_time": "2025-02-13T05:00:37.682Z", "nakshatra": "Krittika", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Mundane ingress charts POST https://api.occultapi.com/api/astro/mundane-charts/ Docs: https://occultapi.com/docs/astro/mundane-charts The ingress charts a Vedic year is judged from. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - nakshatra (string, default "Ashwini"): Only read by /nakshatra-chakras/; ignored elsewhere. Example request: ```json { "year": 2025, "date_time": "2025-02-13T05:00:37Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Planetary conjunctions POST https://api.occultapi.com/api/astro/mundane/conjunctions/ Docs: https://occultapi.com/docs/astro/mundane/conjunctions When two bodies next share the same ecliptic longitude. Request body: - date_time (string, 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. - celestial (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - celestial1 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "jupiter") - celestial2 (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "saturn") - datetime_end (string) - datetime_start (string) - degr (number, 0..360, default 0) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -90..90, default 0): 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. - longitude (number, -180..180, default 0): 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. - planet (string, one of sun | moon | mercury | venus | mars | jupiter | saturn | uranus | neptune | pluto | mean_node | true_node … (13 total), default "sun") - timezone_as_float (number, -12..14, default 0): 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. - tz (number, -12..14, default 0): UTC offset the returned times are expressed in. - when (string, one of after, default "after"): Forward only; see the module docstring on `before`. - x2cross (number, 0..360, default 0): Ecliptic longitude to cross, 0-360 from 0 Aries. Example request: ```json { "date_time": "2025-01-01T00:00:00+00:00", "tz": 0, "when": "after", "celestial1": "jupiter", "celestial2": "saturn" } ``` ### Sky events timeline POST https://api.occultapi.com/api/astro/mundane/events/ Docs: https://occultapi.com/docs/astro/mundane/events Every sky event in a window, as one ordered timeline. Request body: - date_time (string, 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. - end_date_time (string, required): End of the window. - bodies (array): Defaults to all eleven. Narrow it to keep responses small. - include (array): Which event families to merge. Defaults to all four. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - phases (array): Defaults to all four. Ask for new_moon and full_moon only if you do not need the quarters. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "end_date_time": "2026-06-30T23:59:59+00:00", "timezone_as_float": 0, "bodies": [ "mars", "mercury" ], "phases": [ "new_moon", "full_moon" ] } ``` ### Sign ingresses POST https://api.occultapi.com/api/astro/mundane/ingresses/ Docs: https://occultapi.com/docs/astro/mundane/ingresses Every sign change, for every body, across a window of dates. Request body: - date_time (string, 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. - end_date_time (string, required): End of the window. - bodies (array): Defaults to all eleven. Narrow it to keep responses small. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "end_date_time": "2026-12-31T23:59:59+00:00", "timezone_as_float": 0, "bodies": [ "mars", "jupiter", "saturn" ] } ``` ### New and full moons POST https://api.occultapi.com/api/astro/mundane/lunations/ Docs: https://occultapi.com/docs/astro/mundane/lunations New moons, full moons and both quarters across a window of dates. Request body: - date_time (string, 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. - end_date_time (string, required): End of the window. - bodies (array): Defaults to all eleven. Narrow it to keep responses small. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - phases (array): Defaults to all four. Ask for new_moon and full_moon only if you do not need the quarters. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "end_date_time": "2026-06-30T23:59:59+00:00", "timezone_as_float": 0, "phases": [ "new_moon", "full_moon" ] } ``` ### Retrograde stations POST https://api.occultapi.com/api/astro/mundane/stations/ Docs: https://occultapi.com/docs/astro/mundane/stations When each planet turns retrograde, and when it turns direct again. Request body: - date_time (string, 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. - end_date_time (string, required): End of the window. - bodies (array): Defaults to all eleven. Narrow it to keep responses small. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "end_date_time": "2026-12-31T23:59:59+00:00", "timezone_as_float": 0, "bodies": [ "mercury", "mars" ] } ``` ### Mundane nakshatra chakras POST https://api.occultapi.com/api/astro/nakshatra-chakras/ Docs: https://occultapi.com/docs/astro/nakshatra-chakras The samvatsara purusha and sapta nadi chakras, and the effects of a nakshatra's lord. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - nakshatra (string, default "Ashwini"): Only read by /nakshatra-chakras/; ignored elsewhere. Example request: ```json { "year": 2025, "date_time": "2025-02-13T05:00:37Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "nakshatra": "Krittika" } ``` ### Rulers of the Hindu year POST https://api.occultapi.com/api/astro/samvatsara/ Docs: https://occultapi.com/docs/astro/samvatsara The King, the Minister and eight more lords of the Hindu year. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - nakshatra (string, default "Ashwini"): Only read by /nakshatra-chakras/; ignored elsewhere. Example request: ```json { "year": 2025, "date_time": "2025-02-13T05:00:37Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Equinoxes, solstices and ritus POST https://api.occultapi.com/api/astro/seasons/ Docs: https://occultapi.com/docs/astro/seasons The two equinoxes, the two solstices and the six Indian ritus for a year. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - year (integer, required): Year of birth as a number, e.g. 1990. Four digits. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - nakshatra (string, default "Ashwini"): Only read by /nakshatra-chakras/; ignored elsewhere. Example request: ```json { "year": 2025, "date_time": "2025-02-13T05:00:37Z", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ## Fixed stars ### Fixed star catalogue POST https://api.occultapi.com/api/astro/fixed-star/catalog/ Docs: https://occultapi.com/docs/astro/fixed-star/catalog Search the fixed star catalogue by name, designation or brightness. Request body: - limit (integer, 1..500, default 100) - max_magnitude (number) - preset (string, one of major | behenian | brightest | all, default "all") - search (string): Match a name or Bayer designation. Example request: ```json { "search": "aldebaran", "preset": "all", "limit": 25 } ``` ### Stars on your chart POST https://api.occultapi.com/api/astro/fixed-star/conjunctions/ Docs: https://occultapi.com/docs/astro/fixed-star/conjunctions Which fixed stars sit on this chart's planets. Request body: - date_time (string, 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. - bodies (array) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - max_magnitude (number): Keep stars at least this bright. Lower numbers are brighter. - orb_degrees (number, 0.05..5, default 1): How close counts as conjunct. A degree is already generous. - preset (string, one of major | behenian | brightest | all, default "major"): major (default), behenian, brightest, or all. - stars (array): Star names. Overrides `preset` when given. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "preset": "major", "orb_degrees": 1.5 } ``` ### Star and planet parans POST https://api.occultapi.com/api/astro/fixed-star/parans/ Docs: https://occultapi.com/docs/astro/fixed-star/parans Latitudes where a fixed star and a planet are on angles at the same moment. Request body: - date_time (string, 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. - bodies (array) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - max_magnitude (number): Keep stars at least this bright. Lower numbers are brighter. - preset (string, one of major | behenian | brightest | all, default "major"): major (default), behenian, brightest, or all. - stars (array): Star names. Overrides `preset` when given. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "stars": [ "Regulus", "Sirius", "Aldebaran" ], "bodies": [ "sun", "moon", "mars" ] } ``` ### Fixed star positions POST https://api.occultapi.com/api/astro/fixed-star/positions/ Docs: https://occultapi.com/docs/astro/fixed-star/positions Where named fixed stars sit at a given moment: tropical longitude with sign and degree, ecliptic latitude, and equatorial coordinates. Request body: - date_time (string, 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - max_magnitude (number): Keep stars at least this bright. Lower numbers are brighter. - preset (string, one of major | behenian | brightest | all, default "major"): major (default), behenian, brightest, or all. - stars (array): Star names. Overrides `preset` when given. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "2026-01-01T00:00:00+00:00", "timezone_as_float": 0, "preset": "behenian" } ``` ## Traditional & Hellenistic ### Cazimi, combustion and under the beams POST https://api.occultapi.com/api/astro/cazimi/ Docs: https://occultapi.com/docs/astro/cazimi The three solar conditions for every planet, at one moment. Request body: - date_time (string, 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. - altitude (number, default 0): OBSERVER elevation in metres, not a body's altitude. - cazimi_orb (number, 0..5, default 0.2833333333333333): Degrees. Default 0.2833, i.e. 17 arcminutes. - combust_orb (number, 0..30, default 8.5): Degrees. Default 8.5. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - planet_names (array, default ["MOON","MERCURY","VENUS","MARS","JUPITER","SATURN"]): Bodies to test. The Sun and the nodes are ignored if sent. - time_zone (number, -12..14, default 0): UTC offset. Either this or timezone_as_float; they mirror. - timezone_as_float (number, -12..14, default 0): 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. - under_beams_orb (number, 0..45, default 15): Degrees. Default 15.0. Example request: ```json { "date_time": "2026-09-09T12:00:00+00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 0 } ``` ### Almuten POST https://api.occultapi.com/api/astro/traditional/almuten/ Docs: https://occultapi.com/docs/astro/traditional/almuten Which planet has most dignity over the chart, and over each of its key points. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Essential dignities POST https://api.occultapi.com/api/astro/traditional/dignities/ Docs: https://occultapi.com/docs/astro/traditional/dignities Domicile, exaltation, triplicity, term and face for every planet, with Lilly's score. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Profections POST https://api.occultapi.com/api/astro/traditional/profections/ Docs: https://occultapi.com/docs/astro/traditional/profections Annual, monthly and daily profections, with the lord of each period. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - as_of (string): The date to profect to. Defaults to now (UTC). - house_system (string, one of campanus | equal | koch | placidus | porphyry | regiomontanus | topocentric | whole_sign, default "whole_sign"): Profections are traditionally whole-sign; the option is here because the ascendant SIGN is all that is used. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "as_of": "2026-09-09T12:00:00+00:00" } ``` ### Sect POST https://api.occultapi.com/api/astro/traditional/sect/ Docs: https://occultapi.com/docs/astro/traditional/sect Whether a chart is diurnal or nocturnal, and everything that follows from it. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ## Western astrology ### Antiscia and contra-antiscia POST https://api.occultapi.com/api/astro/western/antiscia/ Docs: https://occultapi.com/docs/astro/western/antiscia The hidden points of a chart: reflections across the solstice axis. Request body: - date_time (string, 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Composite chart POST https://api.occultapi.com/api/astro/western/composite/ Docs: https://occultapi.com/docs/astro/western/composite The midpoint chart of a relationship, read as its own entity. Request body: - date_time (string, 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. - partner_date_time (string, required) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - partner_timezone_as_float (number, -12..14, default 0) - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "partner_date_time": "1988-11-23T07:15:00+05:30", "partner_timezone_as_float": 5.5, "orb_factor": 1 } ``` ### Davison relationship chart POST https://api.occultapi.com/api/astro/western/davison/ Docs: https://occultapi.com/docs/astro/western/davison A real chart cast for the midpoint of two births. Request body: - date_time (string, 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. - partner_date_time (string, required) - partner_latitude (number, required, -90..90) - partner_longitude (number, required, -180..180) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - partner_timezone_as_float (number, -12..14, default 0) - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "partner_date_time": "1992-03-20T06:15:00+05:30", "partner_latitude": 19.076, "partner_longitude": 72.8777 } ``` ### Draconic chart POST https://api.occultapi.com/api/astro/western/draconic/ Docs: https://occultapi.com/docs/astro/western/draconic The natal chart measured from the lunar node instead of from 0 Aries. Request body: - date_time (string, 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Harmonic chart POST https://api.occultapi.com/api/astro/western/harmonic/ Docs: https://occultapi.com/docs/astro/western/harmonic The Nth harmonic: every longitude multiplied by N and re-wrapped. Request body: - date_time (string, 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. - harmonic (integer, 2..180, default 5): Which harmonic. 5 is the quintile harmonic, 7 the septile, 9 the novile. The 4th and 8th are the ones most often read. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "harmonic": 5 } ``` ### Heliocentric chart POST https://api.occultapi.com/api/astro/western/heliocentric/ Docs: https://occultapi.com/docs/astro/western/heliocentric The solar system seen from the Sun rather than from the Earth. Request body: - date_time (string, 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Western house cusps POST https://api.occultapi.com/api/astro/western/house-cusps/ Docs: https://occultapi.com/docs/astro/western/house-cusps Tropical house cusps, with the ascendant, midheaven and vertex. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - house_system (string, one of campanus | equal | koch | placidus | porphyry | regiomontanus | topocentric | whole_sign, default "placidus") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "latitude": 19.2056, "longitude": 25.2056, "house_system": "placidus" } ``` ### Western natal chart POST https://api.occultapi.com/api/astro/western/natal-chart/ Docs: https://occultapi.com/docs/astro/western/natal-chart A tropical natal chart: the same twelve bodies, plus every aspect between them. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Western planets (tropical) POST https://api.occultapi.com/api/astro/western/planets/ Docs: https://occultapi.com/docs/astro/western/planets Tropical positions of the ten planets, the north node and Chiron. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Secondary progressions POST https://api.occultapi.com/api/astro/western/progressions/ Docs: https://occultapi.com/docs/astro/western/progressions Secondary progressions: a day of ephemeris for a year of life. Request body: - date_time (string, 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. - progressed_to (string, required): The date to progress the chart to. One day of ephemeris time is read for each year between birth and this date. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "progressed_to": "2026-05-10T00:00:00+00:00", "orb_factor": 1 } ``` ### Synastry POST https://api.occultapi.com/api/astro/western/synastry/ Docs: https://occultapi.com/docs/astro/western/synastry Every aspect between two people's charts. Request body: - date_time (string, 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. - partner_date_time (string, required) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - partner_timezone_as_float (number, -12..14, default 0) - timezone_as_float (number, -12..14, default 0): 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. Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "partner_date_time": "1988-11-23T07:15:00+05:30", "partner_timezone_as_float": 5.5, "orb_factor": 1 } ``` ### Transits to natal POST https://api.occultapi.com/api/astro/western/transits/ Docs: https://occultapi.com/docs/astro/western/transits Today's sky against a birth chart. Request body: - date_time (string, 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. - datetime_end (string, required) - datetime_start (string, required) - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - planet (string, required) - tz (number, required, -12..14) - celestial (string) - celestial1 (string) - celestial2 (string) - degr (number) - latitude (number, -89.9..89.9): 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. - longitude (number, -180..180): 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. - nakshatras (string) - when (string) - x2cross (number) Example request: ```json { "date_time": "1990-05-10T19:55:00+05:30", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873, "transit_date_time": "2026-09-08T00:00:00+00:00", "orb_factor": 1 } ``` ## Numerology ### Numerology POST https://api.occultapi.com/api/astro/numerology/ Docs: https://occultapi.com/docs/astro/numerology Numerology reduces a name and a birth date to single digits and reads them. This endpoint implements four systems, chosen with system, and each has its own letter table and its own set of available keys. Request body: - date_time (string, 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. - keys (array, required): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - name (string, required) - day (integer): Day of the month as a number, 1-31. - house_number (string): House or Apartment Number. Required only if 'house_number' is included in 'keys'. - month (integer): Month of birth as a number, 1-12. January is 1. - phone_number (string): Full Phone Number. Required only if 'phone_number' is included in 'keys'. - system (string, one of chaldean | pythagorean | chinese | vedic, default "chaldean"): The numerological system to use. Note: Chaldean, Pythagorean, Chinese, and Vedic systems are supported. - year (integer): Year of birth as a number, e.g. 1990. Four digits. Calculations available via `keys` (34, all one credit): balance_number, bhagyank, birthday_number, bridge_number, challenge_number, chinese_name_number, compound_meaning, compound_number, expression_number, five_element_balance, growth_number, hidden_passion_number, house_number, karmic_debt_numbers, life_path_number, loshu_grid_arrows, lucky_numbers, maturity_number, moolank, namank, name_number, personal_life_path_number, personal_year_number, personality_number, phone_number, pinnacle_cycles, psychic_number, rational_thought, soul_urge_number, unlucky_numbers, vedic_grid, vedic_personal_day, vedic_personal_month, vedic_personal_year Example request: ```json { "date_time": "2026-09-01T06:00:00+05:30", "name": "Ramesh Kumar", "day": 1, "month": 9, "year": 2026, "system": "chaldean", "keys": [ "birthday_number", "expression_number", "life_path_number" ] } ``` ### Abjad numerals POST https://api.occultapi.com/api/astro/numerology/abjad/ Docs: https://occultapi.com/docs/astro/numerology/abjad Arabic text scored by abjad hawwaz, the eastern (mashriqi) order, 1-1000 across the 28 letters. Request body: - text (string, required) Example request: ```json { "text": "string" } ``` ### Angel numbers POST https://api.occultapi.com/api/astro/numerology/angel/ Docs: https://occultapi.com/docs/astro/numerology/angel The meaning of a repeating or sequential number, and the angel number of a birth date. Request body: - date_time (string): 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. - sequence (string): The number seen, e.g. "1111". Non-digits are ignored. Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Aura numerology POST https://api.occultapi.com/api/astro/numerology/aura/ Docs: https://occultapi.com/docs/astro/numerology/aura The aura colour of the life path number, with the name number giving a secondary hue, each with its chakra. Request body: - date_time (string): 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. - name (string) Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Chaldean numerology POST https://api.occultapi.com/api/astro/numerology/chaldean/ Docs: https://occultapi.com/docs/astro/numerology/chaldean Chaldean numerology: the older Western system, and the one most Indian practitioners use for names. Request body: - date_time (string, 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. - name (string, required) - day (integer): Day of the month as a number, 1-31. - house_number (string): House or Apartment Number. Required only if 'house_number' is included in 'keys'. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - month (integer): Month of birth as a number, 1-12. January is 1. - phone_number (string): Full Phone Number. Required only if 'phone_number' is included in 'keys'. - system (string, default "chaldean") - year (integer): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "name": "Ajeet Kumar", "day": 15, "month": 8, "year": 1990 } ``` ### Cheiro numerology POST https://api.occultapi.com/api/astro/numerology/cheiro/ Docs: https://occultapi.com/docs/astro/numerology/cheiro The Chaldean letter table read to a compound number, alongside the single digit and its planetary ruler. Request body: - date_time (string): 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. - name (string) Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Chinese numerology POST https://api.occultapi.com/api/astro/numerology/chinese/ Docs: https://occultapi.com/docs/astro/numerology/chinese Chinese numerology: the Lo Shu grid and the five elements. Request body: - date_time (string, 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. - name (string, required) - day (integer): Day of the month as a number, 1-31. - house_number (string, default "0") - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - month (integer): Month of birth as a number, 1-12. January is 1. - phone_number (string, default "0") - system (string, default "chinese") - year (integer): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "name": "Ajeet Kumar", "day": 15, "month": 8, "year": 1990 } ``` ### Hebrew gematria POST https://api.occultapi.com/api/astro/numerology/gematria/ Docs: https://occultapi.com/docs/astro/numerology/gematria Hebrew text scored under one of five ciphers. Request body: - text (string, required) - cipher (string, one of standard | gadol | ordinal | katan | atbash, default "standard"): standard = mispar hechrachi; gadol = finals at 500-900; ordinal = mispar siduri (1-22); katan = each letter reduced to a single digit; atbash = each letter mirrored before valuing. Example request: ```json { "text": "string", "cipher": "standard" } ``` ### I Ching numerology POST https://api.occultapi.com/api/astro/numerology/iching/ Docs: https://occultapi.com/docs/astro/numerology/iching A birth hexagram from the date and a name hexagram from the name, mapped onto the King Wen sequence of 64. Request body: - date_time (string): 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. - name (string) Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Greek isopsephy POST https://api.occultapi.com/api/astro/numerology/isopsephy/ Docs: https://occultapi.com/docs/astro/numerology/isopsephy Greek text scored by the Milesian numerals, 1-900. Request body: - text (string, required) Example request: ```json { "text": "string" } ``` ### Kabbalah numerology POST https://api.occultapi.com/api/astro/numerology/kabbalah/ Docs: https://occultapi.com/docs/astro/numerology/kabbalah A name's value reduced onto the 22 paths of the Tree of Life, each with its Hebrew letter, tarot trump and Hermetic attribution. Request body: - name (string, required) Example request: ```json { "name": "string" } ``` ### Pythagorean numerology POST https://api.occultapi.com/api/astro/numerology/pythagorean/ Docs: https://occultapi.com/docs/astro/numerology/pythagorean Pythagorean numerology: the modern Western system, and the widest set here at nineteen calculations. Request body: - date_time (string, 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. - name (string, required) - day (integer): Day of the month as a number, 1-31. - house_number (string): House or Apartment Number. Required only if 'house_number' is included in 'keys'. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - month (integer): Month of birth as a number, 1-12. January is 1. - phone_number (string): Full Phone Number. Required only if 'phone_number' is included in 'keys'. - system (string, default "pythagorean") - year (integer): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "name": "Ajeet Kumar", "day": 15, "month": 8, "year": 1990 } ``` ### Sepharial numerology POST https://api.occultapi.com/api/astro/numerology/sepharial/ Docs: https://occultapi.com/docs/astro/numerology/sepharial Sepharial's own Hebraic letter table from The Kabala of Numbers (1920), with the planetary ruler of each digit. Request body: - date_time (string): 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. - name (string) Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Tarot numerology POST https://api.occultapi.com/api/astro/numerology/tarot/ Docs: https://occultapi.com/docs/astro/numerology/tarot The birth card, its partner card, and the name card, across the 22 major arcana. Request body: - date_time (string): 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. - name (string) Example request: ```json { "date_time": "2026-09-01 06:00:00" } ``` ### Vedic numerology POST https://api.occultapi.com/api/astro/numerology/vedic/ Docs: https://occultapi.com/docs/astro/numerology/vedic Vedic numerology: the seven calculations of the Indian system. Request body: - date_time (string, 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. - name (string, required) - day (integer): Day of the month as a number, 1-31. - house_number (string): House or Apartment Number. Required only if 'house_number' is included in 'keys'. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - month (integer): Month of birth as a number, 1-12. January is 1. - phone_number (string): Full Phone Number. Required only if 'phone_number' is included in 'keys'. - system (string, default "vedic") - year (integer): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "1990-08-15T10:30:00+05:30", "name": "Ajeet Kumar", "day": 15, "month": 8, "year": 1990 } ``` ## Chinese astrology ### BaZi chart with ten gods POST https://api.occultapi.com/api/astro/chinese/bazi/ Docs: https://occultapi.com/docs/astro/chinese/bazi The full BaZi reading: hidden stems, ten gods and the element balance. Request body: - date_time (string, 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. - day_boundary (string, one of zi_hour | midnight, default "zi_hour"): When the day pillar changes. 'zi_hour' is 23:00, the traditional rule; 'midnight' is what most software uses. They disagree for births between 23:00 and 24:00. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. - true_solar_time (boolean, default false): Correct the hour by the longitude's offset from the timezone meridian. Traditional practice uses true local solar time and it can move the hour pillar by one place. Example request: ```json { "date_time": "1984-06-15T14:30:00+08:00", "latitude": 39.9042, "longitude": 116.4074, "timezone_as_float": 8 } ``` ### Chinese Four Pillars (BaZi) POST https://api.occultapi.com/api/astro/chinese/four-pillars/ Docs: https://occultapi.com/docs/astro/chinese/four-pillars The four pillars of a birth: year, month, day and hour. Request body: - date_time (string, 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. - day_boundary (string, one of zi_hour | midnight, default "zi_hour"): When the day pillar changes. 'zi_hour' is 23:00, the traditional rule; 'midnight' is what most software uses. They disagree for births between 23:00 and 24:00. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. - true_solar_time (boolean, default false): Correct the hour by the longitude's offset from the timezone meridian. Traditional practice uses true local solar time and it can move the hour pillar by one place. Example request: ```json { "date_time": "1984-06-15T14:30:00+08:00", "latitude": 39.9042, "longitude": 116.4074, "timezone_as_float": 8 } ``` ### Chinese luck pillars (da yun) POST https://api.occultapi.com/api/astro/chinese/luck-pillars/ Docs: https://occultapi.com/docs/astro/chinese/luck-pillars The ten-year luck cycles, BaZi's timing technique. Request body: - date_time (string, 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. - gender (string, required, one of male | female): Required: the direction of the luck cycles depends on it, together with the polarity of the year stem. - count (integer, 1..12, default 8): How many ten-year pillars to return. - day_boundary (string, one of zi_hour | midnight, default "zi_hour"): When the day pillar changes. 'zi_hour' is 23:00, the traditional rule; 'midnight' is what most software uses. They disagree for births between 23:00 and 24:00. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. - true_solar_time (boolean, default false): Correct the hour by the longitude's offset from the timezone meridian. Traditional practice uses true local solar time and it can move the hour pillar by one place. Example request: ```json { "date_time": "1984-06-15T14:30:00+08:00", "latitude": 39.9042, "longitude": 116.4074, "timezone_as_float": 8, "gender": "male", "count": 8 } ``` ### Chinese zodiac sign POST https://api.occultapi.com/api/astro/chinese/zodiac/ Docs: https://occultapi.com/docs/astro/chinese/zodiac The animal, its element, and who it gets on with. Request body: - date_time (string, 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. - day_boundary (string, one of zi_hour | midnight, default "zi_hour"): When the day pillar changes. 'zi_hour' is 23:00, the traditional rule; 'midnight' is what most software uses. They disagree for births between 23:00 and 24:00. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number, default 0): 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. - longitude (number, default 0): 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. - orb_factor (number, 0.1..2, default 1): Scale every aspect orb. 0.5 halves them, 2 doubles them. - timezone_as_float (number, -12..14, default 0): 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. - true_solar_time (boolean, default false): Correct the hour by the longitude's offset from the timezone meridian. Traditional practice uses true local solar time and it can move the hour pillar by one place. Example request: ```json { "date_time": "1984-06-15T14:30:00+08:00", "latitude": 39.9042, "longitude": 116.4074, "timezone_as_float": 8 } ``` ## Astrocartography ### Astrocartography lines POST https://api.occultapi.com/api/astro/astrocartography/lines/ Docs: https://occultapi.com/docs/astro/astrocartography/lines Every astrocartography line for a birth moment, as coordinates ready to plot on a map. Request body: - date_time (string, 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. - timezone_as_float (number, required, -12..14): 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. - bodies (array): Defaults to all twelve. Narrow it to keep responses small. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - latitude_step (number, 1..15, default 5): Degrees of latitude between points on the AC/DC curves. - longitude (number): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Local space lines POST https://api.occultapi.com/api/astro/astrocartography/local-space/ Docs: https://occultapi.com/docs/astro/astrocartography/local-space The compass bearing from the birthplace to each planet, extended across the map. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - bodies (array) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ### Paran crossings POST https://api.occultapi.com/api/astro/astrocartography/parans/ Docs: https://occultapi.com/docs/astro/astrocartography/parans Latitudes where two planetary lines cross. Request body: - date_time (string, 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. - timezone_as_float (number, required, -12..14): 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. - bodies (array): Defaults to the ten classical planets. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Lines near a place POST https://api.occultapi.com/api/astro/astrocartography/relocate/ Docs: https://occultapi.com/docs/astro/astrocartography/relocate Which planetary lines run near one particular place, and how close each one is. Request body: - date_time (string, 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, required, -89.9..89.9): 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. - longitude (number, required, -180..180): 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. - timezone_as_float (number, required, -12..14): 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. - bodies (array) - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - orb_degrees (number, 0.1..30, default 5): How far from a line still counts as being on it. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5 } ``` ## Human Design ### Human Design bodygraph POST https://api.occultapi.com/api/astro/human-design/chart/ Docs: https://occultapi.com/docs/astro/human-design/chart The complete Human Design bodygraph, computed from the ephemeris. Request body: - date_time (string, 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Connection chart POST https://api.occultapi.com/api/astro/human-design/connection/ Docs: https://occultapi.com/docs/astro/human-design/connection How two bodygraphs wire together. Request body: - date_time (string, 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. - partner_date_time (string, required) - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. - partner_timezone_as_float (number, -12..14, default 0) Example request: ```json { "date_time": "2026-09-01 06:00:00", "partner_date_time": "2026-09-01 06:00:00", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ### Type, strategy and authority POST https://api.occultapi.com/api/astro/human-design/properties/ Docs: https://occultapi.com/docs/astro/human-design/properties The summary line of a bodygraph: type, strategy, inner authority, profile, definition, signature, not-self theme and incarnation cross, plus which centres and channels are defined. Request body: - date_time (string, 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. - timezone_as_float (number, required, -12..14): 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. - keys (array): Which calculations to return, as a list of names. See the key table for this endpoint; an unrecognised name rejects the whole request. One call costs one credit however many keys you ask for, so request everything you need at once rather than making several calls. - latitude (number): 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. - longitude (number): 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. Example request: ```json { "date_time": "2026-09-01 06:00:00", "timezone_as_float": 5.5, "latitude": 26.9124, "longitude": 75.7873 } ``` ## Celebrity data ### Celebrity chart search POST https://api.occultapi.com/api/astrodatabank/celebrities/ Docs: https://occultapi.com/docs/astrodatabank/celebrities A searchable database of birth charts for public figures and dated historical events, with each record already reduced to divisional charts, house positions, aspects and arudhas so you can query by chart feature rather than by date. It is the tool for research questions such as which charts have Saturn in the tenth house, or which astrologers were born with Mars and Mercury conjunct. Request body: - bhava_arudhas (array) - birth_date_from (string) - birth_date_to (string) - birth_month_day (string): MM-DD e.g. 06-08 - categories (array) - chart (string, one of RashiChart | HoraChart | DrekkanaChart | ChaturthamsaChart | NavamsaChart | DasamsaChart, default "RashiChart") - combust_planets (array, one of Mars | Mercury | Venus | Jupiter | Saturn) - conjunct (array) - countries (array) - data_source (array) - gender (string, one of male | female | n/a) - graha_aspects (array) - name_search (string): Full or partial name search. Works with 'First Last' or 'Last First' order. - name_starts_with (array) - nodes (string, one of true | mean, default "true") - order_by (string, one of name_asc | name_desc | birth_date_asc | birth_date_desc, default "birth_date_asc"): name_asc = A→Z, name_desc = Z→A, birth_date_asc/desc = oldest/newest first - page (integer, default 1) - page_size (integer, 1..100, default 20) - planets_in_houses (array) - planets_in_nakshatras (array) - planets_in_signs (array) - rashi_aspects (array) - retrograde_planets (array, one of Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu | Ketu) - rodden_rating (array) Example request: ```json { "chart": "RashiChart", "combust_planets": [], "gender": "male", "nodes": "true", "order_by": "name_asc", "retrograde_planets": [] } ``` ### Celebrity detail GET https://api.occultapi.com/api/astrodatabank/celebrities// Docs: https://occultapi.com/docs/astrodatabank/celebrities/by-pk Returns everything stored for one record in the celebrity database, addressed by the numeric `id` you get back from the search endpoint. Use it after a search when you want the actual charts rather than the summary line. Example request: ```json { "id": 1 } ``` ## Natural hazards ### Earthquake events GET https://api.occultapi.com/api/hazard/earthquake/ Docs: https://occultapi.com/docs/hazard/earthquake A pass-through proxy for the United States Geological Survey FDSN earthquake event service. This is a historical and near-real-time seismology dataset, not an astrological calculation; it is here so that mundane and event-correlation work can pull the events and the chart data through one API. Query parameters: - alertlevel (string) - catalog (string) - contributor (string) - endtime (string) - eventid (string) - eventtype (string) - includeallmagnitudes (boolean) - includeallorigins (boolean) - includearrivals (boolean) - includedeleted (string) - includesuperseded (boolean) - latitude (number) - limit (integer) - longitude (number) - maxalertlevel (string) - maxcdi (number) - maxdepth (number) - maxgap (number) - maxlatitude (number) - maxlongitude (number) - maxmagnitude (number) - maxmmi (number) - maxradius (number) - maxradiuskm (number) - maxsig (integer) - minalertlevel (string) - mincdi (number) - mindepth (number) - minfelt (integer) - mingap (number) - minlatitude (number) - minlongitude (number) - minmagnitude (number) - minsig (integer) - nodata (integer) - offset (integer) - orderby (string) - productcode (string) - producttype (string) - reviewstatus (string) - starttime (string) - updatedafter (string) Example request: ```json {} ``` ### Forest fires GET https://api.occultapi.com/api/hazard/forest-fires/ Docs: https://occultapi.com/docs/hazard/forest-fires A stored dataset of large forest fire detections, organised by the Indian forest administrative hierarchy. It is a historical event log, not an astrological calculation, and is provided for mundane and correlation work alongside the chart endpoints. Query parameters: - circle (string) - district (string) - division (string) - end_date (string) - fire_name (string) - itemsPerPage (integer) - page (integer) - sort (string) - start_date (string) - state (string) Example request: ```json {} ``` ### Plane crashes GET https://api.occultapi.com/api/hazard/plane-crashes/ Docs: https://occultapi.com/docs/hazard/plane-crashes A stored dataset of aviation accidents with a written account of each, going back to the 1920s. It is a historical event record rather than an astrological calculation, and sits alongside the chart endpoints so that a crash's time and place can be fed straight into a chart. Query parameters: - aircraft (string) - country (string) - crash_cause (string) - end_date (string) - flight_phase (string) - flight_type (string) - itemsPerPage (integer) - min_fatalities (integer) - operator (string) - page (integer) - region (string) - sort (string) - start_date (string) Example request: ```json {} ``` ### Suicide attacks GET https://api.occultapi.com/api/hazard/suicide-attacks/ Docs: https://occultapi.com/docs/hazard/suicide-attacks A stored dataset of suicide bombing incidents with location and casualty figures. It is a historical event record rather than an astrological calculation; it is here so that mundane analysis can draw event data and chart data from the same API. Query parameters: - city (string) - end_date (string) - itemsPerPage (integer) - max_killed (integer) - min_injured (integer) - min_killed (integer) - no_of_suicide_blasts (integer) - page (integer) - province (string) - sort (string) - start_date (string) Example request: ```json {} ``` ### Tsunami events GET https://api.occultapi.com/api/hazard/tsunami/events/ Docs: https://occultapi.com/docs/hazard/tsunami/events A pass-through proxy for the NOAA National Centers for Environmental Information Global Historical Tsunami Database. This is a historical geophysical catalogue, not an astrological calculation, and it reaches back to the second millennium BC — years before the common era appear as negative numbers. Query parameters: - area (string) - assocDeposits (string) - causeCode (string) - commentsEnd (string) - commentsInclude (string) - commentsMatch (string) - commentsNot (string) - commentsStart (string) - country (string) - day (integer) - id (integer) - itemsPerPage (integer) - locEnd (string) - locInclude (string) - locMatch (string) - locNot (string) - locStart (string) - maxCauseCode (integer) - maxDamageAmountOrder (integer) - maxDamageAmountOrderTotal (integer) - maxDamageMillionsDollars (number) - maxDamageMillionsDollarsTotal (number) - maxDeaths (integer) - maxDeathsAmountOrder (integer) - maxDeathsAmountOrderTotal (integer) - maxDeathsTotal (integer) - maxEqMagnitude (number) - maxEventValidity (integer) - maxHousesDestroyed (integer) - maxHousesDestroyedAmountOrder (integer) - maxId (integer) - maxInjuries (integer) - maxInjuriesAmountOrder (integer) - maxLatitude (number) - maxLongitude (number) - maxMaxWaterHeight (number) - maxNumRunups (integer) - maxRunupHoriz (number) - maxYear (integer) - minCauseCode (integer) - minDamageAmountOrder (integer) - minDamageAmountOrderTotal (integer) - minDamageMillionsDollars (number) - minDamageMillionsDollarsTotal (number) - minDeaths (integer) - minDeathsAmountOrder (integer) - minDeathsAmountOrderTotal (integer) - minDeathsTotal (integer) - minEqMagnitude (number) - minEventValidity (integer) - minHousesDestroyed (integer) - minHousesDestroyedAmountOrder (integer) - minId (integer) - minInjuries (integer) - minInjuriesAmountOrder (integer) - minLatitude (number) - minLongitude (number) - minMaxWaterHeight (number) - minNumRunups (integer) - minRunupHoriz (number) - minYear (integer) - month (integer) - oceanicTsunami (boolean) - op (string) - order (string) - page (integer) - regionCode (string) - runupArea (string) - runupCountry (string) - runupDoubtful (string) - runupLocEnd (string) - runupLocInclude (string) - runupLocMatch (string) - runupLocNot (string) - runupLocStart (string) - runupMaxDamageAmountOrder (integer) - runupMaxDamageMillionsDollars (number) - runupMaxDeaths (integer) - runupMaxDeathsAmountOrder (integer) - runupMaxDistance (integer) - runupMaxHeight (number) - runupMaxHousesDestroyed (integer) - runupMaxHousesDestroyedAmountOrder (integer) - runupMaxInjuries (integer) - runupMaxInjuriesAmountOrder (integer) - runupMaxTravelTime (integer) - runupMaxTroughHt (number) - runupMeasureType (integer) - runupMinDamageAmountOrder (integer) - runupMinDamageMillionsDollars (number) - runupMinDeaths (integer) - runupMinDeathsAmountOrder (integer) - runupMinDistance (integer) - runupMinHeight (number) - runupMinHousesDestroyed (integer) - runupMinHousesDestroyedAmountOrder (integer) - runupMinInjuries (integer) - runupMinInjuriesAmountOrder (integer) - runupMinTravelTime (integer) - runupMinTroughHt (number) - runupRegion (string) - tsuAssoc (string) - year (integer) Example request: ```json {} ``` ## Utilities ### Time zone resolver POST https://api.occultapi.com/api/astro/date_time/ Docs: https://occultapi.com/docs/astro/date_time Turns a wall-clock birth time and a pair of coordinates into an unambiguous instant. Every other endpoint here wants either a timezone-aware timestamp or a numeric UTC offset, and getting that wrong is the commonest cause of a chart that is quietly an hour or a day out, so this is usually the first call you make. Request body: - date (string, required) - latitude (number, required, -180..180): 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. - longitude (number, required, -180..180): 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. - time (string, required) - use_LMT (boolean, one of true | false, default false) Example request: ```json { "date": "1980-09-05", "time": "04:42:05.037Z", "longitude": 80, "latitude": 23, "use_LMT": true } ``` ### Place lookup GET https://api.occultapi.com/api/astro/geocode/ Docs: https://occultapi.com/docs/astro/geocode Turns a place name into the coordinates and UTC offset the other endpoints need. Send a GET with an `address` query parameter such as 'Jaipur, India' and you get back `latitude`, `longitude`, the IANA `timezone_name`, the `timezone_offset` in hours as a decimal, the geocoder's own `address` string and the `source` that answered. Query parameters: - address (string, required) Example request: ```json { "address": "Jaipur" } ``` ### Text translation POST https://api.occultapi.com/api/astro/translate/ Docs: https://occultapi.com/docs/astro/translate A thin wrapper over Google Cloud Translation, offered so that chart text produced elsewhere in this API can be shown in another language without you holding a separate Google key. It performs no astrological calculation of its own. Request body: - text (string, required) - source_language (string, default "en") - target_language (string, default "hi") Example request: ```json { "text": "Sun in Aries" } ``` ## Astrology ### Mudda dasha (varsha vimshottari) POST https://api.occultapi.com/api/astro/mudda-dasha/ Docs: https://occultapi.com/docs/astro/mudda-dasha The Vimshottari cycle compressed into a single varshaphal year: each lord holds the same SHARE of the year that it holds of the 120-year cycle, so the Sun receives eighteen days where it receives six years. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - timezone_as_float (number, -12..14, default 0): 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. - year (integer, 1900..2200): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ### Muntha (varshaphal) POST https://api.occultapi.com/api/astro/muntha/ Docs: https://occultapi.com/docs/astro/muntha The Muntha for a varshaphal year: its sign, and the house it falls in within that year's annual chart. Request body: - date_time (string, 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, required, -90..90): 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. - longitude (number, required, -180..180): 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. - ayanamsa (string, default "LAHIRI") - timezone_as_float (number, -12..14, default 0): 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. - year (integer, 1900..2200): Year of birth as a number, e.g. 1990. Four digits. Example request: ```json { "date_time": "2026-09-01 06:00:00", "latitude": 26.9124, "longitude": 75.7873, "timezone_as_float": 5.5, "year": 2026 } ``` ## prashnavali ### Hanuman Prashnavali POST https://api.occultapi.com/api/astro/prashnavali/hanuman/ Docs: https://occultapi.com/docs/astro/prashnavali/hanuman The Hanuman Prashnavali: 49 numbered answers. The querent settles on a number between 1 and 49 and reads the entry it lands on. Request body: - number (integer, 1..49): Entry to fetch, 1 to 49. Omit for all 49. Example request: ```json {} ``` ### Mavji Maharaj Prashnavali POST https://api.occultapi.com/api/astro/prashnavali/mavji/ Docs: https://occultapi.com/docs/astro/prashnavali/mavji Mavji Maharaj: 64 readings, one for every three-digit draw from '111' to '444'. Request body: - number (string): Three-digit draw, each digit 1-4, e.g. '324'. Omit for all 64. Example request: ```json {} ``` ### Ram Shalaka Prashnavali POST https://api.occultapi.com/api/astro/prashnavali/ram-shalaka/ Docs: https://occultapi.com/docs/astro/prashnavali/ram-shalaka The Ram Shalaka Prashnavali: 225 chaupais from the Ramcharitmanas, arranged in a nine-by-nine grid the querent points at after holding a question in mind. Request body: - index (integer, 1..225): 1-based position in the traditional grid. Omit for all 225 entries. - letter (string): Devanagari letter to look up, e.g. 'सु'. Omit for all 225 entries. Example request: ```json {} ``` ### Sai Prashnavali POST https://api.occultapi.com/api/astro/prashnavali/sai/ Docs: https://occultapi.com/docs/astro/prashnavali/sai The Sai Prashnavali: 720 numbered answers. Request body: - number (integer, 1..720): Entry to fetch, 1 to 720. Omit for all 720 - unlike the parent endpoint, this is optional here. Example request: ```json {} ```