/api/astro/chart/1 créditoCarta natal
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.
https://api.occultapi.com/api/astro/chart/
Autenticación
Envía tu clave en la cabecera X-API-Key. La clave es una credencial de servidor: nunca la pongas en el JavaScript del navegador ni en una app móvil.
X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/jsonCampos de la solicitud
| 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 |
Ejemplo de solicitud
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}'Respuesta
{
"data": {
"NavamsaChart": {
"celestial": {
"sun": {
"longitude": 318.0675,
"latitude": 0,
"nakshatra": "Satabhishak",
"pada": 4,
"kakshya": "venus",
"zodiac_name": "Aquarius",
"house": 8
},
"moon": {
"longitude": 150.3425,
"latitude": -4.343,
"nakshatra": "Uttara Phalguni",
"pada": 2,
"kakshya": "saturn",
"zodiac_name": "Virgo",
"house": 3
},
"mercury": {
"longitude": 74.3125,
"latitude": -2.291,
"nakshatra": "Aardra",
"pada": 3,
"kakshya": "sun",
"zodiac_name": "Gemini",
"house": 12
},
"venus": {
"longitude": 159.8475,
"latitude": -0.081,
"nakshatra": "Uttara Phalguni",
"pada": 4,
"kakshya": "mars",
"zodiac_name": "Virgo",
"house": 3
},
"mars": {
"longitude": 139.1825,
"latitude": -1.01,
"nakshatra": "Poorva Phalguni",
"pada": 2,
"kakshya": "Mercury",
"zodiac_name": "Leo",
"house": 2
},
"jupiter": {
"longitude": 19.82499999999999,
"latitude": 0.377,
"nakshatra": "Bharani",
"pada": 2,
"kakshya": "Mercury",
"zodiac_name": "Aries",
"house": 10
},
"saturn": {
"longitude": 201.275,
"latitude": -2.136,
"nakshatra": "Visaakha",
"pada": 1,
"kakshya": "Mercury",
"zodiac_name": "Libra",
"house": 4
},
"uranus": {
"longitude": 314.28,
"latitude": -0.169,
"nakshatra": "Satabhishak",
"pada": 3,
"kakshya": "sun",
"zodiac_name": "Aquarius",
"house": 8
},
"neptune": {
"longitude": 164.6175,
"latitude": -1.31,
"nakshatra": "Hasta",
"pada": 2,
"kakshya": "sun",
"zodiac_name": "Virgo",
"house": 3
},
"pluto": {
"longitude": 10.007499999999991,
"latitude": -3.973,
"nakshatra": "Ashwini",
"pada": 4,
"kakshya": "mars",
"zodiac_name": "Aries",
"house": 10
},
"northtruenode": {
"longitude": 304.65,
"latitude": 0,
"nakshatra": "Dhanishtha",
"pada": 4,
"kakshya": "jupiter",
"zodiac_name": "Aquarius",
"house": 8
},
"southtruenode": {
"longitude": 124.65,
"latitude": 0,
"nakshatra": "Makha",
"pada": 2,
"kakshya": "jupiter",
"zodiac_name": "Leo",
"house": 2
}
},
"houses": {
"1": {
"start": 118.24667529991994,
"cusp": 133.24667529991996,
"end": 148.24667529991996
},
"2": {
"start": 148.24667529991996,
"cusp": 163.24667529991996,
"end": 178.24667529991996
},
"3": {
"start": 178.24667529991996,
"cusp": 193.24667529991996,
"end": 208.24667529991996
},
"4": {
"start": 208.24667529991996,
"cusp": 223.24667529991993,
"end": 238.24667529991993
},
"5": {
"start": 238.24667529991993,
"cusp": 253.24667529991993,
"end": 268.2466752999199
},
"6": {
"start": 268.2466752999199,
"cusp": 283.2466752999199,
"end": 298.2466752999199
},
"7": {
"start": 298.2466752999199,
"cusp": 313.2466752999199,
"end": 328.2466752999199
},
"8": {
"start": 328.2466752999199,
"cusp": 343.2466752999199,
"end": 358.2466752999199
},
"9": {
"start": 358.2466752999199,
"cusp": 13.246675299919922,
"end": 28.24667529991992
},
"10": {
"start": 28.24667529991992,
"cusp": 43.24667529991992,
"end": 58.24667529991993
},
"11": {
"start": 58.24667529991993,
"cusp": 73.24667529991993,
"end": 88.24667529991993
},
"12": {
"start": 88.24667529991993,
"cusp": 103.24667529991991,
"end": 118.24667529991994
}
},
"ascendant": {
"longitude": 133.24667529991996,
"zodiac_name": "Cancer",
"nakshatra": "Makha",
"pada": 4
},
"ayanamsa_used": {
"name": "LAHIRI",
"corrected": false,
"value_degrees": 24.224068,
"formatted": "24°13'27\""
}
}
},
"message": "successful",
"is_error": false
}Obtenida de una llamada real con la solicitud de arriba, tal cual. Los resultados van dentro de data.
Errores
Los errores de control de uso devuelven { "error": "…", "message": "<code>", "is_error": true }. Muestra error al usuario y usa message para decidir qué hace tu código. Consulta la referencia de errores.