curl -X POST https://api.occultapi.com/api/astro/chart/ \
-H "X-API-Key: $OCCULT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"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}'El endpoint principal de cartas: posiciones planetarias, divisiones de las casas y el ascendente para un momento y un lugar. Pide la carta Rashi (D-1) si quieres una carta natal normal, o cualquiera de la treintena de cartas divisionales (Navamsa, Dasamsa, Dwadasamsa, Shashtyamsa y el resto) por su nombre; pasa un array de nombres para recibir varias en una sola llamada, indexadas por nombre de carta. Cada carta devuelve tres bloques. `celestial` está indexado por nombre de cuerpo (sun, moon, … northtruenode) e indica para cada uno la longitud, la latitud, el nakshatra y el pada, el kakshya, el nombre del signo y el número de casa. `houses` tiene las claves de 1 a 12, con el `start`, el `cusp` y el `end` de cada casa. `ascendant` da el grado ascendente y su signo. `notation` fija las unidades de toda la respuesta: 'degree' para grados decimales, 'astrological' para signo más grados, minutos y segundos. La precisión está en los campos opcionales. `ayanamsa` elige la definición sideral, y `apply_correction` con `correction_deg`, `correction_min`, `correction_sec` y `correction_direction` la ajusta a mano. `rahu` elige nodos verdaderos, nodos medios o ambos. `extended_bodies` añade asteroides, cuerpos ficticios uranianos o lunas planetarias, y descarta sin aviso los que no tienen archivos de efemérides disponibles. `ascendant_pos` decide si el ascendente se toma en la cúspide, el inicio o el fin de la casa; ten en cuenta que cualquier valor distinto de 'start' o 'end', incluida una errata, usa la cúspide sin avisar. En este endpoint el campo de fecha se escribe `datetime`, no `date_time`. RENDERIZADO SVG OPCIONAL. Pon render en 'svg' y la respuesta incluirá dos campos más, además de los cuatro anteriores (no en su lugar): `layout` es la geometría (los puntos del polígono de cada celda de casa o de signo, la posición de la etiqueta y qué cuerpos contiene) para que dibujes tu propio diagrama en React, Canvas, Flutter o SwiftUI. `svg` es un marcado listo para insertar, generado a partir de esa misma geometría. chart_style elige el estilo del norte de la India (rombo, casas fijas, signos que rotan) o del sur de la India (cuadrícula de signos fija, casas que rotan); svg_size, theme, label_style, show_degrees y los cuatro campos *_color controlan el renderizado. Todos los campos están desactivados por defecto, así que una solicitud que no menciona render no cambia en absoluto: la respuesta es exactamente la de siempre.
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| ascendant_pos | string | obligatorio | cuspstartend'start' usa el inicio de la casa y 'end', el fin; CUALQUIER otro valor (incluido el propio 'cusp' y cualquier errata) cae en la rama else y usa la cúspide de la casa. En la práctica, 'cusp' es el valor por defecto, y las erratas fallan sin aviso en lugar de dar error. Distingue mayúsculas y minúsculas. |
| ayanamsa | string | obligatorio | FAGAN_BRADLEYLAHIRIDELUCERAMANUSHASHASHIKRISHNAMURTIDJWHAL_KHULYUKTESHWARJN_BHASINBABYL_KUGLER1BABYL_KUGLER2BABYL_KUGLER3NO distingue mayúsculas y minúsculas: se usa name.upper para la consulta. A diferencia de /api/astro/ayanamsa_value/, aquí 'USER' NO se rechaza. Un valor desconocido devuelve 400 "Undefined ayanamsa: <name>". Ten en cuenta que apply_correction=true anula la elección y cambia el modo interno a USER. |
| chart_name | string | obligatorio | BhavaChartRashiChartHoraChartJagannathHoraChartParivrittidwayaHoraChartParivrittitrayaDrekkanaChartDrekkanaChartSomnathDrekkanaChartJagannathDrekkanaChartChaturthamsaChartPanchamsaChartShashthamsaChartDistingue mayúsculas y minúsculas y debe escribirse exactamente como en la lista. Pasa un solo nombre, o un array para recibir varias cartas en una sola llamada; en ese caso, la respuesta se indexa por nombre de carta. Un nombre desconocido devuelve 400. |
| datetime | string (date-time) | obligatorio | El momento del cálculo, en ISO 8601. Incluye SIEMPRE la diferencia con UTC o una Z final: un valor sin zona horaria se interpreta como Asia/Kolkata (UTC+05:30), no como UTC. Significa lo mismo que date_time; otros endpoints simplemente le dan ese otro nombre. Restricción de FORMATO, no un enum. DRF DateTimeField: solo ISO-8601 (formatos de entrada por defecto de DRF), p. ej., "2026-09-01T06:00:00+05:30", "2026-09-01T06:00:00Z" o "2026-09-01 06:00:00" (sin zona horaria = se toma como UTC). Ten en cuenta que este endpoint llama al campo `datetime`, no `date_time`. |
| latitude | number (double) | obligatorio | 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. min -180 · max 180 |
| longitude | number (double) | obligatorio | 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. min -180 · max 180 |
| notation | string | obligatorio | astrologicaldegreeEn minúsculas; distingue mayúsculas y minúsculas. 'astrological' devuelve componentes de signo/grado/minuto/segundo; 'degree' devuelve grados decimales sin procesar. Cualquier otro valor devuelve 400 "Invalid notation: <x>". |
| aberration | boolean | opcional | |
| apply_correction | boolean | opcional | |
| background_color | string | opcional | Color hexadecimal del fondo del SVG. |
| chart_style | string | opcional | Estilo del diagrama cuando render='svg'. 'north' es el diseño en rombo, con las casas fijas y los signos rotando; 'south' es la cuadrícula de signos fijos, con las casas rotando. northsouth |
| correction_deg | integer | opcional | min 0 |
| correction_direction | string | opcional | addsubtractValor por defecto: 'add'. Solo tiene sentido cuando apply_correction=true y al menos uno de correction_deg/min/sec es distinto de cero. |
| correction_min | integer | opcional | min 0 · max 59 |
| correction_sec | integer | opcional | min 0 · max 59 |
| extended_bodies | array | opcional | Grupos de cuerpos que incluir: 'asteroids', 'planetary_moons', 'fictitious_bodies'. asteroidsplanetary_moonsfictitious_bodiesArray de cadenas, valor por defecto []. 'asteroids' añade chiron, pholus, ceres, pallas, juno, vesta; 'fictitious_bodies' añade cupido, hades, zeus, kronos, apollon, admetos, vulkanus, poseidon, selena; 'planetary_moons' añade phobos, deimos, io, europa, ganymede, callisto, titan, triton, charon. Los cuerpos cuyos archivos de efemérides faltan se descartan de la respuesta sin aviso. |
| label_style | string | opcional | Cómo se rotulan los planetas: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) o 'symbol' (☉, ☽, ...). englishsanskritsymbol |
| line_color | string | opcional | Color hexadecimal de las líneas de la cuadrícula de la carta. |
| nutation | boolean | opcional | |
| planet_color | string | opcional | Color hexadecimal de las etiquetas de los planetas, p. ej., '#111827'. Valor por defecto: el color propio del tema. |
| rahu | string | opcional | Tipo de nodo que se incluye. 'true' devuelve solo los nodos verdaderos; 'mean', solo los nodos medios, y 'both', ambos. truemeanbothValor por defecto: 'true'. 'true' devuelve solo los nodos verdaderos, 'mean' solo los nodos medios y 'both' devuelve los cuatro. |
| refraction | boolean | opcional | |
| render | string | opcional | Ponlo en 'svg' para recibir también un diagrama renderizado de la carta (consulta chart_style) y la geometría en la que se basa. Si no lo envías, la respuesta no cambia. nonesvg |
| show_degrees | boolean | opcional | Muestra el grado de cada cuerpo dentro de su signo junto a su etiqueta. |
| sign_color | string | opcional | Color hexadecimal de los números y abreviaturas de los signos. |
| svg_size | integer | opcional | Ancho y alto del viewBox cuadrado del SVG, en píxeles. min 100 · max 2000 |
| theme | string | opcional | lightdark |
| true_mean | string | opcional | TrueMeanDISTINGUE mayúsculas y minúsculas; con inicial mayúscula. Valor por defecto: 'Mean'. Selecciona posiciones planetarias verdaderas frente a medias (posiciones verdaderas en lugar de aparentes). |
| use_28_nakshatras | boolean | opcional |