/api/astro/chart/1 créditoMapa natal
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.
https://api.occultapi.com/api/astro/chart/
Autenticação
Envie sua chave no cabeçalho X-API-Key. A chave é uma credencial de servidor — nunca a coloque no JavaScript do navegador nem num app mobile.
X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/jsonCampos da requisição
| 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 |
Exemplo de requisição
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}'Resposta
{
"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
}Capturada de uma chamada real, com exatamente a requisição acima. Os resultados ficam em data.
Erros
Erros de consumo de créditos retornam { "error": "…", "message": "<code>", "is_error": true }. Mostre error para o usuário e use message para decidir o que fazer no código. Consulte a referência de erros.