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}'O endpoint principal de mapas: posições planetárias, divisões das casas e o ascendente para um momento e um local. Para um mapa natal comum, peça o mapa rashi (D-1); os cerca de trinta mapas divisionais — Navamsa, Dasamsa, Dwadasamsa, Shashtyamsa e os demais — também são pedidos pelo nome. Passe um array de nomes para receber vários em uma única chamada, indexados pelo nome do mapa. Cada mapa retorna três blocos. `celestial` é indexado pelo nome do corpo (sun, moon, … northtruenode) e traz, para cada um, longitude, latitude, nakshatra e pada, kakshya, nome do signo e número da casa. `houses` tem chaves de 1 a 12, com `start`, `cusp` e `end` de cada casa. `ascendant` traz o grau ascendente e o signo. `notation` define as unidades de toda a resposta: 'degree' para graus decimais, 'astrological' para signo mais graus, minutos e segundos. É nos campos opcionais que está a precisão. `ayanamsa` escolhe a definição sideral, e `apply_correction`, com `correction_deg`, `correction_min`, `correction_sec` e `correction_direction`, a ajusta manualmente. `rahu` escolhe nodos verdadeiros, nodos médios ou ambos. `extended_bodies` adiciona asteroides, corpos fictícios uranianos ou luas planetárias e descarta silenciosamente os corpos cujos arquivos de efemérides não estão disponíveis. `ascendant_pos` define se o ascendente é lido na cúspide, no início ou no fim da casa — atenção: qualquer valor diferente de 'start' ou 'end', inclusive um erro de digitação, cai na cúspide sem nenhum aviso. Neste endpoint, o campo de data se chama `datetime`, e não `date_time`. RENDERIZAÇÃO SVG OPCIONAL. Defina render como 'svg' e a resposta ganha mais dois campos, que se somam aos quatro acima, sem substituí-los: `layout` é a geometria — os pontos do polígono de cada célula de casa ou de signo, a posição do rótulo e os corpos que a ocupam — para você desenhar o próprio diagrama em React, Canvas, Flutter ou SwiftUI. `svg` é a marcação pronta para inserir, gerada a partir dessa mesma geometria. chart_style escolhe o estilo norte-indiano (losango, casas fixas, signos que giram) ou sul-indiano (grade fixa de signos, casas que giram); svg_size, theme, label_style, show_degrees e os quatro campos *_color controlam a renderização. Todos esses campos vêm desativados por padrão, então uma requisição que não menciona render não muda em nada — a resposta é exatamente a mesma de sempre.
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
| ascendant_pos | string | obrigatório | cuspstartend'start' usa o início da casa e 'end', o fim da casa; QUALQUER outro valor - incluindo o próprio 'cusp' e qualquer erro de digitação - cai no ramo else e usa a cúspide da casa. Assim, 'cusp' é o padrão efetivo, e erros de grafia falham silenciosamente em vez de gerar erro. Diferencia maiúsculas de minúsculas. |
| ayanamsa | string | obrigatório | FAGAN_BRADLEYLAHIRIDELUCERAMANUSHASHASHIKRISHNAMURTIDJWHAL_KHULYUKTESHWARJN_BHASINBABYL_KUGLER1BABYL_KUGLER2BABYL_KUGLER3NÃO diferencia maiúsculas de minúsculas - name.upper é usado na consulta. Ao contrário de /api/astro/ayanamsa_value/, aqui 'USER' NÃO é rejeitado. Um valor desconhecido retorna 400 "Undefined ayanamsa: <name>". Observe que apply_correction=true se sobrepõe à escolha e muda o modo interno para USER. |
| chart_name | string | obrigatório | BhavaChartRashiChartHoraChartJagannathHoraChartParivrittidwayaHoraChartParivrittitrayaDrekkanaChartDrekkanaChartSomnathDrekkanaChartJagannathDrekkanaChartChaturthamsaChartPanchamsaChartShashthamsaChartDiferencia maiúsculas de minúsculas e deve ser escrito exatamente como listado. Passe um único nome, ou um array para obter vários mapas em uma única chamada - a resposta é então indexada pelo nome do mapa. Um nome desconhecido retorna 400. |
| datetime | string (date-time) | obrigatório | O momento a calcular, em ISO 8601. SEMPRE inclua um deslocamento ou um Z no final - um valor sem fuso horário é lido como Asia/Kolkata (UTC+05:30), não como UTC. Equivale a date_time, nome que outros endpoints usam para o mesmo valor. Restrição de FORMATO, não um enum. DRF DateTimeField: apenas ISO-8601 (formatos de entrada padrão do DRF), por exemplo "2026-09-01T06:00:00+05:30", "2026-09-01T06:00:00Z" ou "2026-09-01 06:00:00" (sem fuso horário = assume-se UTC). Observe que este endpoint chama o campo de `datetime`, não `date_time`. |
| latitude | number (double) | obrigatório | Latitude do local, em graus decimais. Positivo é norte, negativo é sul. Exemplo: 26.9124 para Jaipur, 40.7128 para Nova York. Minutos e segundos não são aceitos - converta antes. min -180 · max 180 |
| longitude | number (double) | obrigatório | Longitude do local, em graus decimais. Positivo é leste, negativo é oeste. Exemplo: 75.7873 para Jaipur, -74.0060 para Nova York. Atenção ao sinal: sem o sinal de menos, Nova York vai parar na China. min -180 · max 180 |
| notation | string | obrigatório | astrologicaldegreeDiferencia maiúsculas de minúsculas; em minúsculas. 'astrological' retorna os componentes signo/grau/minuto/segundo; 'degree' retorna graus decimais brutos. Qualquer outro valor retorna 400 "Invalid notation: <x>". |
| aberration | boolean | opcional | |
| apply_correction | boolean | opcional | |
| background_color | string | opcional | Cor hexadecimal do fundo do SVG. |
| chart_style | string | opcional | Estilo do diagrama quando render='svg'. 'north' é o layout em losango, com casas fixas e signos que giram; 'south' é a grade de signos fixos, com casas que giram. northsouth |
| correction_deg | integer | opcional | min 0 |
| correction_direction | string | opcional | addsubtractPadrão: 'add'. Só faz sentido quando apply_correction=true e pelo menos um entre correction_deg/min/sec é diferente de zero. |
| correction_min | integer | opcional | min 0 · max 59 |
| correction_sec | integer | opcional | min 0 · max 59 |
| extended_bodies | array | opcional | Grupos de corpos a incluir: 'asteroids', 'planetary_moons', 'fictitious_bodies'. asteroidsplanetary_moonsfictitious_bodiesArray de strings, padrão []. 'asteroids' adiciona chiron, pholus, ceres, pallas, juno, vesta; 'fictitious_bodies' adiciona cupido, hades, zeus, kronos, apollon, admetos, vulkanus, poseidon, selena; 'planetary_moons' adiciona phobos, deimos, io, europa, ganymede, callisto, titan, triton, charon. Corpos cujos arquivos de efemérides não estão disponíveis são descartados da resposta sem aviso. |
| label_style | string | opcional | Como os planetas são rotulados: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) ou 'symbol' (☉, ☽, ...). englishsanskritsymbol |
| line_color | string | opcional | Cor hexadecimal das linhas de grade do mapa. |
| nutation | boolean | opcional | |
| planet_color | string | opcional | Cor hexadecimal dos rótulos dos planetas, por exemplo '#111827'. Padrão: a própria cor do tema. |
| rahu | string | opcional | Tipo de nodo a incluir. 'true' retorna apenas os nodos verdadeiros, 'mean' retorna apenas os nodos médios, 'both' retorna ambos. truemeanbothPadrão: 'true'. 'true' retorna apenas os nodos verdadeiros, 'mean' apenas os nodos médios, 'both' retorna todos os quatro. |
| refraction | boolean | opcional | |
| render | string | opcional | Defina como 'svg' para receber também um diagrama renderizado do mapa (veja chart_style) e a geometria usada para desenhá-lo. Sem este campo, a resposta não muda. nonesvg |
| show_degrees | boolean | opcional | Exibe, ao lado do rótulo, o grau de cada corpo dentro do signo. |
| sign_color | string | opcional | Cor hexadecimal dos números/abreviações dos signos. |
| svg_size | integer | opcional | Largura e altura do viewBox quadrado do SVG, em pixels. min 100 · max 2000 |
| theme | string | opcional | lightdark |
| true_mean | string | opcional | TrueMeanDIFERENCIA maiúsculas de minúsculas; com inicial maiúscula. Padrão: 'Mean'. Seleciona posições planetárias verdadeiras ou médias (posições verdadeiras em vez de aparentes). |
| use_28_nakshatras | boolean | opcional |