/api/astro/chart_analysis/1 creditChart analysis
Fourteen structural readings of a birth chart in a single call, plus one comparison between a natal chart and a transit chart. This is the interpretive layer above /api/astro/chart/: it does not give you positions, it gives you what those positions amount to. The response always carries the same fields. `house_from_reference_chart` counts the house that `target_celestial` in the transit chart falls in when measured from `ref_celestial` in the natal chart. `kendras` groups the natal bodies by angular house. `argala` and `virodhargala` give the intervening and obstructing planets for each body, keyed by the 2nd, 4th, 5th and 11th and by the 12th, 10th, 9th and 3rd respectively. `bhava_arudhas` and `ghara_arudhas` are the projected images of the houses and the planets. `temporary_relationships` and `compound_relationships` are the chart-specific friendships. `karakas` are the chara karakas, `nakshatra_count` the star distance from the reference body, and `exaltation`, `debilitation`, `mooltrikona`, `own_rashi` and `pachakadi_relations` the dignity checks. Both charts are always Rashi charts: `chart_name_natal` and `chart_name_transit` are free-form labels and do not select a divisional chart despite their names. `mode` chooses eight chara karakas or seven, and `rahu` picks true or mean nodes for the karaka block only. Setting `ref_celestial` to 'ascendant' is allowed and returns null for the two relationship fields, which are planet-to-planet by definition.
https://yogataraapi.prahlad.app/api/astro/chart_analysis/Authentication
Send your key in the X-API-Key header. Keys are server-side credentials — never put one in browser JavaScript or a mobile app.
X-API-Key: yt_live_a1b2c3d4_…
Content-Type: application/jsonRequest fields
| Field | Type | Required | Notes |
|---|---|---|---|
| chart_name_natal | string | required | FREE-FORM label, NOT a chart-type selector. Despite the name, this endpoint always builds a RashiChart; the string is stored as a display label and never validated. Any non-empty string works. |
| chart_name_transit | string | required | FREE-FORM label, NOT a chart-type selector. Same as chart_name_natal. |
| date_time_natal | string (date-time) | required | FORMAT constraint. DRF DateTimeField: ISO-8601 only (DRF default input formats), e.g. "2026-09-01T06:00:00+05:30", "2026-09-01T06:00:00Z" or "2026-09-01 06:00:00" (no timezone = UTC assumed). |
| date_time_transit | string (date-time) | required | FORMAT constraint. DRF DateTimeField: ISO-8601 only (DRF default input formats), e.g. "2026-09-01T06:00:00+05:30", "2026-09-01T06:00:00Z" or "2026-09-01 06:00:00" (no timezone = UTC assumed). |
| latitude_natal | number (double) | required | min -180 · max 180 |
| latitude_transit | number (double) | required | min -180 · max 180 |
| longitude_natal | number (double) | required | min -180 · max 180 |
| longitude_transit | number (double) | required | min -180 · max 180 |
| mode | integer | required | 78Integer, not a string, but constrained: 8 = eight chara karakas (includes Pitri Karaka and Rahu), 7 = seven karakas (Rahu excluded). Only 7 and 8 are meaningful. |
| rahu | string | required | truemeanCase-sensitive lowercase. Only 'true' is tested explicitly; any other value (including 'mean' takes the else branch and behaves as 'mean'. Affects the `karakas` block only. |
| ref_celestial | string | required | sunmoonmercuryvenusmarsjupitersaturnuranusneptuneplutonorthtruenodenorthmeannodeCase-sensitive, all lowercase. 'ascendant' works for the house_from_reference_chart and nakshatra_count parts; when ref_celestial='ascendant' the temporary_relationships and compound_relationships fields come back null by design. An unrecognised name returns 400 (KeyError). |
| target_celestial | string | required | sunmoonmercuryvenusmarsjupitersaturnuranusneptuneplutonorthtruenodenorthmeannodeSame value set as ref_celestial. |
| bhava_arudha_exceptions | boolean | optional | |
| graha_arudha_exceptions | boolean | optional | |
| nakshatras | string | optional |
Example request
curl -X POST https://yogataraapi.prahlad.app/api/astro/chart_analysis/ \
-H "X-API-Key: $OCCULT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date_time_natal":"2025-11-21T05:45:23.715Z","date_time_transit":"2024-11-21T05:45:23.715Z","longitude_natal":77.5946,"latitude_natal":12.9716,"longitude_transit":26.1046,"latitude_transit":26.9124,"chart_name_natal":"RashiChart","chart_name_transit":"RashiChart","ref_celestial":"mercury","target_celestial":"mars","rahu":"true","mode":0}'Response
{
"_truncated": true,
"_note": "Response shortened for the catalogue.",
"preview": "{\"data\": {\"house_from_reference_chart\": {\"house_from_ref\": 9, \"zodiac_sign_in_ref\": \"Cn\"}, \"kendras\": [[\"venus\", \"jupiter\", \"pluto\"], [\"sun\", \"moon\", \"mercury\", \"mars\", \"uranus\", \"northtruenode\", \"northmeannode\", \"southtruenode\", \"southmeannode\"], [\"saturn\", \"neptune\"]], \"argala\": {\"sun\": {\"2\": null, \"4\": [\"northtruenode\", \"northmeannode\"], \"5\": [\"saturn\", \"neptune\"], \"11\": null}, \"moon\": {\"2\": null, \"4\": [\"northtruenode\", \"northmeannode\"], \"5\": [\"saturn\", \"neptune\"], \"11\": null}, \"mercury\": {\"2\": null, \"4\": [\"northtruenode\", \"northmeannode\"], \"5\": [\"saturn\", \"neptune\"], \"11\": null}, \"venus\": {\"2\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"4\": [\"pluto\"], \"5\": [\"northtruenode\", \"northmeannode\"], \"11\": [\"southtruenode\", \"southmeannode\"]}, \"mars\": {\"2\": null, \"4\": [\"northtruenode\", \"northmeannode\"], \"5\": [\"saturn\", \"neptune\"], \"11\": null}, \"jupiter\": {\"2\": [\"southtruenode\", \"southmeannode\"], \"4\": [\"venus\"], \"5\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"11\": [\"uranus\"]}, \"saturn\": {\"2\": null, \"4\": null, \"5\": [\"jupiter\"], \"11\": [\"pluto\"]}, \"uranus\": {\"2\": null, \"4\": [\"southtruenode\", \"southmeannode\"], \"5\": null, \"11\": [\"saturn\", \"neptune\"]}, \"neptune\": {\"2\": null, \"4\": null, \"5\": [\"jupiter\"], \"11\": [\"pluto\"]}, \"pluto\": {\"2\": [\"northtruenode\", \"northmeannode\"], \"4\": null, \"5\": [\"uranus\"], \"11\": [\"sun\", \"moon\", \"mercury\", \"mars\"]}, \"northtruenode\": {\"2\": [\"saturn\", \"neptune\"], \"4\": [\"uranus\"], \"5\": null, \"11\": null}, \"northmeannode\": {\"2\": [\"saturn\", \"neptune\"], \"4\": [\"uranus\"], \"5\": null, \"11\": null}, \"southtruenode\": {\"2\": null, \"4\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"5\": null, \"11\": null}, \"southmeannode\": {\"2\": null, \"4\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"5\": null, \"11\": null}}, \"virodhargala\": {\"sun\": {\"3\": [\"pluto\"], \"9\": [\"jupiter\"], \"10\": [\"southtruenode\", \"southmeannode\"], \"12\": [\"venus\"]}, \"moon\": {\"3\": [\"pluto\"], \"9\": [\"jupiter\"], \"10\": [\"southtruenode\", \"southmeannode\"], \"12\": [\"venus\"]}, \"mercury\": {\"3\": [\"pluto\"], \"9\": [\"jupiter\"], \"10\": [\"southtruenode\", \"southmeannode\"], \"12\": [\"venus\"]}, \"venus\": {\"3\": null, \"9\": null, \"10\": [\"jupiter\"], \"12\": null}, \"mars\": {\"3\": [\"pluto\"], \"9\": [\"jupiter\"], \"10\": [\"southtruenode\", \"southmeannode\"], \"12\": [\"venus\"]}, \"jupiter\": {\"3\": null, \"9\": [\"saturn\", \"neptune\"], \"10\": null, \"12\": null}, \"saturn\": {\"3\": [\"uranus\"], \"9\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"10\": null, \"12\": [\"northtruenode\", \"northmeannode\"]}, \"uranus\": {\"3\": [\"jupiter\"], \"9\": [\"pluto\"], \"10\": [\"northtruenode\", \"northmeannode\"], \"12\": null}, \"neptune\": {\"3\": [\"uranus\"], \"9\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"10\": null, \"12\": [\"northtruenode\", \"northmeannode\"]}, \"pluto\": {\"3\": [\"saturn\", \"neptune\"], \"9\": null, \"10\": [\"venus\"], \"12\": null}, \"northtruenode\": {\"3\": null, \"9\": [\"venus\"], \"10\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"12\": [\"pluto\"]}, \"northmeannode\": {\"3\": null, \"9\": [\"venus\"], \"10\": [\"sun\", \"moon\", \"mercury\", \"mars\"], \"12\": [\"pluto\"]}, \"southtruenode\": {\"3\": [\"venus\"], \"9\": null, \"10\": [\"uranus\"], \"12\": [\"jupiter\"]}, \"southmeannode\": {\"3\": [\"venus\"], \"9\": null, \"10\": [\"uranus\"], \"12\": [\"jupiter\"]}}, \"bhava_arudhas\": {\"A1\": \"Taurus\", \"A2\": \"Aries\", \"A3\": \"Scorpio\", \"A4\": \"Gemini\", \"A5\": \"Pisces\", \"A6\": \"Aries\", \"A7\": \"Pisces\", \"A8\": \"Scorpio\", \"A9\": \"Capricorn\", \"A10\": \"Cancer\", \"A11\": \"Leo\", \"A12\": \"Aquarius\"}, \"ghara_arudhas\": {\"A1\": \"Leo\", \"A2\": \"Leo\", \"A3\": \"Leo\", \"A4\": \"Cancer\", \"A5\": \"Leo\", \"A6\": \"Pisces\", \"A7\": \"Scorpio\", \"A8\": \"Pisces\", \"A9\": \"Scorpio\", \"A10\": \"Taurus\", \"A11\": \"Aries\", \"A12\": \"Aries\"}, \"temporary_relationships\": {\"friends\": [\"venus\", \"pluto\", \"northtruenode\", \"northmeannode\", \"southtruenode\", \"southmeannode\"], \"enemies\": [\"sun\", \"moon\", \"mars\", \"jupiter\", \"saturn\", \"uranus\", \"neptune\"]}, \"compound_relationships\": \"Satru\", \"karakas\": {\"ak\": {\"venus\": {\"degree\": 23, \"sign\": \"Li\", \"minutes\": 42, \"seconds\": 43}}, \"amk\": {\"mars\": {\"degree\": 17, \"sign\": \"Sc\", \"minutes\": 52, \"seconds\": 44}}, \"bk\": {\"moon\": {\"degree\": 15, \"sign\": \"Sc\", \"minutes\": 20, \"seconds\": 27}}, \"mk\": {\"northtruenode\""
}Captured from a real call using the exact request above. Results sit under data.
Errors
Metering errors return { "error": "…", "message": "<code>", "is_error": true }. Show error to people and branch on message. See the error reference.