curl -X POST https://api.occultapi.com/api/vrat-upavas/ \
-H "X-API-Key: $OCCULT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"year":2026,"month":9,"keys":["ekadashi","amavasya","pradosham"]}'Los vrat y upavas son los días recurrentes de ayuno y observancia del mes hindú, cada uno ligado a un tithi concreto. Este endpoint devuelve todas las ocurrencias de los tipos que pidas a lo largo de un año entero, leídas de una tabla precalculada en lugar de calcularse en cada solicitud, así que un año completo con dieciocho tipos de observancia se obtiene con una sola consulta indexada. Cada tipo se define únicamente por los números de tithi con los que coincide, en el esquema 1-30, donde del 1 al 15 son de Shukla Pratipada a Purnima, del 16 al 29 de Krishna Pratipada a Chaturdashi, y el 30 es Amavasya. Así, `ekadashi` devuelve los dos Ekadashis de cada mes, `pradosham` los dos Trayodashis, `shivarathri` el Krishna Chaturdashi de cada mes (el Masik Shivaratri mensual, no solo el Maha Shivaratri), `sashti`, `durgashtami` y `vinayaka_chathurthi` el sexto, el octavo y el cuarto de Shukla, `kaalashtami` y `sankatahara_chathurthi` sus equivalentes de Krishna, `amavasya` y `pournami` las lunas nuevas y llenas, `sathyanarayana_puja` la luna llena, `chandra_dharshan` y `moondraam_pirai` el primer y el tercer día de la luna creciente, y `srartha_yoga`, `ashtaka`, `manvaadhi` y `yugadhi` sus propios conjuntos reducidos de tithis. Ten en cuenta que `mahalaya_paksha` coincide con todos los tithis del 15 al 30, lo que significa toda la quincena oscura de cada mes lunar y no solo el Pitru Paksha de Bhadrapada. `year` y `keys` son obligatorios. Si además pasas `latitude`, `longitude` y `timezone_as_float`, se añaden a cada evento dos campos calculados al momento: `moonrise`, la salida de la luna al anochecer que cae dentro de la franja del tithi de ese evento en tu ubicación, y, solo en las filas de `vinayaka_chathurthi`, `puja_muhurat` con `start`, `end` y `duration_minutes` para la franja del Madhyahna Ganesha Puja. Ambos se devuelven como null si no se pueden calcular, y ninguno aparece si omites las coordenadas. La respuesta es `{data}`, con una clave por cada tipo solicitado y, en cada una, una lista cronológica de `{date, month, tithi, paksha, start_time, end_time}`, donde las horas son los instantes exactos en que empieza y termina el tithi. Las fechas están precalculadas de 2006 a 2046, ambos incluidos; un año fuera de ese intervalo devuelve listas vacías en lugar de un error.
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| keys | array | obligatorio | Los cálculos que quieres recibir, como lista de nombres. Consulta la tabla de claves de este endpoint; un nombre que no se reconoce invalida toda la solicitud. Cada llamada cuesta un crédito, pidas las claves que pidas, así que pide todo lo que necesites de una vez en lugar de hacer varias llamadas. amavasyaashtakachandra_dharshandurgashtamiekadashikaalashtamimahalaya_pakshamanvaadhimoondraam_piraipournamipradoshamsankatahara_chathurthiObservancias que quieres obtener. Pide varias en una sola llamada: la respuesta tiene una clave por tipo y el coste es el mismo. |
| year | integer | obligatorio | Año de nacimiento como número, p. ej., 1990. Cuatro dígitos. Año de cuatro cifras. Las fechas están precalculadas de 2006 a 2046; fuera de ese intervalo, la respuesta está vacía. |
| latitude | number (double) | opcional | Latitud del lugar, en grados decimales. Los valores positivos indican el norte y los negativos, el sur. Ejemplo: 26.9124 para Jaipur, 40.7128 para Nueva York. No se aceptan minutos ni segundos: conviértelos antes. |
| longitude | number (double) | opcional | Longitud del lugar, en grados decimales. Los valores positivos indican el este y los negativos, el oeste. Ejemplo: 75.7873 para Jaipur, -74.0060 para Nueva York. Cuidado con el signo: si falta el menos, Nueva York acaba en China. |
| timezone_as_float | number (double) | opcional | Diferencia horaria del lugar con UTC, en horas y con decimales. Ejemplo: 5.5 para la India (UTC+05:30), -5 para Nueva York en invierno, 5.75 para Nepal. NO se contrasta con date_time: si los dos no coinciden, recibes una respuesta correcta para un momento equivocado, así que toma ambos valores de la misma fuente. Usa la diferencia vigente en esa fecha, no la de hoy: para un nacimiento en verano en un país con horario de verano, hace falta la diferencia de verano. |