/api/astro/chart/1 CreditGeburtshoroskop
Der zentrale Horoskop-Endpoint: Planetenpositionen, Häuserteilung und Aszendent für einen Zeitpunkt und einen Ort. Für ein normales Geburtshoroskop forderst du das Rashi-Horoskop (D-1) an, oder du wählst über den Namen eines von gut dreißig Teilhoroskopen – Navamsa, Dasamsa, Dwadasamsa, Shashtyamsa und die übrigen. Übergibst du ein Array von Namen, erhältst du mehrere in einem Aufruf, mit den Horoskopnamen als Schlüsseln. Jedes Horoskop besteht aus drei Blöcken. `celestial` hat die Namen der Himmelskörper als Schlüssel (sun, moon, … northtruenode) und liefert für jeden Länge, Breite, Nakshatra und Pada, Kakshya, Zeichenname und Hausnummer. `houses` hat die Schlüssel 1 bis 12 mit `start`, `cusp` und `end` jedes Hauses. `ascendant` liefert den aufsteigenden Grad und sein Zeichen. `notation` legt die Einheiten für die gesamte Antwort fest: 'degree' für Dezimalgrad, 'astrological' für Zeichen plus Grad, Minuten und Sekunden. In den optionalen Feldern steckt die Präzision. `ayanamsa` wählt die siderische Definition, und `apply_correction` mit `correction_deg`, `correction_min`, `correction_sec` und `correction_direction` verschiebt sie von Hand. `rahu` wählt wahre Mondknoten, mittlere Mondknoten oder beide. `extended_bodies` ergänzt Asteroiden, fiktive uranische Körper oder Planetenmonde und lässt stillschweigend alle weg, deren Ephemeridendateien fehlen. `ascendant_pos` legt fest, ob der Aszendent an der Häuserspitze, am Beginn oder am Ende abgelesen wird – Achtung: Jeder Wert außer 'start' oder 'end', auch ein Tippfehler, fällt ohne Meldung auf die Häuserspitze zurück. Das Datumsfeld heißt bei diesem Endpoint `datetime`, nicht `date_time`. OPTIONALES SVG-RENDERING. Setzt du render auf 'svg', enthält die Antwort zwei weitere Felder – zusätzlich zu den vier oben, nicht an ihrer Stelle. `layout` ist die Geometrie: für jede Haus- oder Zeichenzelle die Polygonpunkte, die Position der Beschriftung und die Himmelskörper darin, damit du dein eigenes Diagramm in React, Canvas, Flutter oder SwiftUI zeichnen kannst. `svg` ist fertiges Markup aus derselben Geometrie zum direkten Einbinden. chart_style wählt nordindisch (Raute, feste Häuser, wandernde Zeichen) oder südindisch (festes Zeichenraster, wandernde Häuser); svg_size, theme, label_style, show_degrees und die vier *_color-Felder steuern die Darstellung. Alle diese Felder sind standardmäßig aus: Eine Anfrage ohne render bleibt völlig unberührt, die Antwort ist genau dieselbe wie bisher.
https://api.occultapi.com/api/astro/chart/
Authentifizierung
Schick deinen Schlüssel im Header X-API-Key mit. API-Schlüssel sind Zugangsdaten für den Server: Sie gehören nie in Browser-JavaScript oder in eine mobile App.
X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/jsonFelder der Anfrage
| Feld | Typ | Pflicht | Hinweise |
|---|---|---|---|
| ascendant_pos | string | Pflicht | cuspstartend'start' verwendet den Hausbeginn, 'end' das Hausende; JEDER andere Wert – auch 'cusp' selbst und jeder Tippfehler – landet im else-Zweig und verwendet die Häuserspitze. 'cusp' ist damit faktisch der Standardwert, und Tippfehler lösen keinen Fehler aus, sondern scheitern stillschweigend. Groß-/Kleinschreibung wird beachtet. |
| ayanamsa | string | Pflicht | FAGAN_BRADLEYLAHIRIDELUCERAMANUSHASHASHIKRISHNAMURTIDJWHAL_KHULYUKTESHWARJN_BHASINBABYL_KUGLER1BABYL_KUGLER2BABYL_KUGLER3Groß-/Kleinschreibung wird NICHT beachtet – nachgeschlagen wird mit name.upper. Anders als bei /api/astro/ayanamsa_value/ wird 'USER' hier NICHT abgelehnt. Ein unbekannter Wert liefert 400 "Undefined ayanamsa: <name>". Beachte: apply_correction=true übersteuert die Auswahl und schaltet intern in den Modus USER. |
| chart_name | string | Pflicht | BhavaChartRashiChartHoraChartJagannathHoraChartParivrittidwayaHoraChartParivrittitrayaDrekkanaChartDrekkanaChartSomnathDrekkanaChartJagannathDrekkanaChartChaturthamsaChartPanchamsaChartShashthamsaChartGroß-/Kleinschreibung wird beachtet; schreibe den Namen genau wie aufgeführt. Übergib einen einzelnen Namen oder ein Array, um mehrere Horoskope in einem Aufruf zu erhalten – die Antwort hat dann die Horoskopnamen als Schlüssel. Ein unbekannter Name liefert 400. |
| datetime | string (date-time) | Pflicht | Der Zeitpunkt, für den gerechnet wird, im Format ISO 8601. Gib IMMER einen Offset oder ein abschließendes Z an – ein Wert ohne Zone wird als Asia/Kolkata (UTC+05:30) gelesen, nicht als UTC. Bedeutet dasselbe wie date_time; andere Endpoints verwenden für dasselbe Feld nur einen anderen Namen. FORMATVORGABE, kein Enum. DRF DateTimeField: nur ISO-8601 (Standard-Eingabeformate von DRF), z. B. "2026-09-01T06:00:00+05:30", "2026-09-01T06:00:00Z" oder "2026-09-01 06:00:00" (ohne Zeitzone wird UTC angenommen). Beachte: Bei diesem Endpoint heißt das Feld `datetime`, nicht `date_time`. |
| latitude | number (double) | Pflicht | Breitengrad des Ortes in Dezimalgrad. Positiv ist Nord, negativ ist Süd. Beispiel: 26.9124 für Jaipur, 40.7128 für New York. Minuten und Sekunden werden nicht akzeptiert – vorher umrechnen. min -180 · max 180 |
| longitude | number (double) | Pflicht | Längengrad des Ortes in Dezimalgrad. Positiv ist Ost, negativ ist West. Beispiel: 75.7873 für Jaipur, -74.0060 für New York. Achte auf das Vorzeichen: Ein fehlendes Minus verlegt New York nach China. min -180 · max 180 |
| notation | string | Pflicht | astrologicaldegreeGroß-/Kleinschreibung wird beachtet; nur Kleinbuchstaben. 'astrological' liefert die Komponenten Zeichen/Grad/Minute/Sekunde; 'degree' liefert rohe Dezimalgrad. Alles andere liefert 400 "Invalid notation: <x>". |
| aberration | boolean | optional | |
| apply_correction | boolean | optional | |
| background_color | string | optional | Hex-Farbe für den SVG-Hintergrund. |
| chart_style | string | optional | Diagrammstil bei render='svg'. 'north' ist das Rautenlayout mit festen Häusern und wandernden Zeichen; 'south' ist das Raster mit festen Zeichen und wandernden Häusern. northsouth |
| correction_deg | integer | optional | min 0 |
| correction_direction | string | optional | addsubtractStandard: 'add'. Wirkt nur, wenn apply_correction=true ist und mindestens einer der Werte correction_deg/min/sec ungleich null ist. |
| correction_min | integer | optional | min 0 · max 59 |
| correction_sec | integer | optional | min 0 · max 59 |
| extended_bodies | array | optional | Welche Gruppen von Himmelskörpern einbezogen werden: 'asteroids', 'planetary_moons', 'fictitious_bodies'. asteroidsplanetary_moonsfictitious_bodiesArray von Strings, Standard []. 'asteroids' ergänzt chiron, pholus, ceres, pallas, juno, vesta; 'fictitious_bodies' ergänzt cupido, hades, zeus, kronos, apollon, admetos, vulkanus, poseidon, selena; 'planetary_moons' ergänzt phobos, deimos, io, europa, ganymede, callisto, titan, triton, charon. Himmelskörper, deren Ephemeridendateien fehlen, fehlen stillschweigend in der Antwort. |
| label_style | string | optional | Wie die Planeten beschriftet werden: 'english' (Su, Mo, ...), 'sanskrit' (Surya, Chandra, ...) oder 'symbol' (☉, ☽, ...). englishsanskritsymbol |
| line_color | string | optional | Hex-Farbe für die Rasterlinien des Horoskops. |
| nutation | boolean | optional | |
| planet_color | string | optional | Hex-Farbe für die Planetenbeschriftungen, z. B. '#111827'. Standardmäßig die Farbe des Themes. |
| rahu | string | optional | Welche Mondknoten einbezogen werden. 'true' liefert nur die wahren, 'mean' nur die mittleren Mondknoten, 'both' liefert beide. truemeanbothStandard: 'true'. 'true' liefert nur die wahren, 'mean' nur die mittleren Mondknoten, 'both' alle vier. |
| refraction | boolean | optional | |
| render | string | optional | Setze den Wert auf 'svg', um zusätzlich ein gerendertes Horoskopdiagramm (siehe chart_style) samt der zugrunde liegenden Geometrie zu erhalten. Lässt du das Feld ganz weg, bleibt die Antwort unverändert. nonesvg |
| show_degrees | boolean | optional | Zeigt neben der Beschriftung jedes Himmelskörpers seinen Grad im Zeichen an. |
| sign_color | string | optional | Hex-Farbe für Zeichennummern/-abkürzungen. |
| svg_size | integer | optional | Breite und Höhe der quadratischen SVG-viewBox in Pixeln. min 100 · max 2000 |
| theme | string | optional | lightdark |
| true_mean | string | optional | TrueMeanGroß-/Kleinschreibung wird BEACHTET; mit großem Anfangsbuchstaben. Standard: 'Mean'. Wählt zwischen wahren und mittleren Planetenpositionen (wahre statt scheinbarer Positionen). |
| use_28_nakshatras | boolean | optional |
Beispielanfrage
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}'Antwort
{
"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
}Aus einem echten Aufruf mit genau dieser Anfrage. Die Ergebnisse stehen unter data.
Fehler
Abrechnungsfehler liefern { "error": "…", "message": "<code>", "is_error": true }. Zeig deinen Nutzern error an und verzweige im Code anhand von message. Details in der Fehlerreferenz.