---
title: "Generate a Vedic (sidereal) natal chart"
method: POST
path: "/vedic/chart"
tags: ["vedic"]
---

# Generate a Vedic (sidereal) natal chart

`POST /vedic/chart`

## Request

- Base URL: `https://api.openephemeris.com`
- URL: `https://api.openephemeris.com/vedic/chart`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-OpenEphemeris-API-Key`
  - API key in header `X-API-Key`
  - API key in header `X-Service-Key`

Calculate planetary positions in the sidereal zodiac with Jyotish overlays. Each planet receives its rashi (sign), nakshatra (lunar mansion) with pada and ruling planet, and navamsa (D-9 divisional chart) sign.

**Ayanamsa**: Defaults to Lahiri, the standard for North Indian Jyotish. Also supports Fagan-Bradley and Krishnamurti.

**Planets**: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Rahu (North Node), and Ketu (South Node).

**Metering**: 1 unit per call.

## Query parameters

- `format` string: Response format: json (full) or llm (compact columnar).

## Headers

- `authorization` string, nullable
- `X-API-Key` string, nullable
- `X-OpenEphemeris-API-Key` string, nullable
- `apikey` string, nullable

## Request body

- VedicChartRequest: Request body for a Vedic natal chart. Exactly one of `datetime_utc` (an instant the caller has already converted) or `datetime_local` (a naive local wall-clock time the SERVER converts, using the required birth coordinates and the historical-correction overlay) is required. Prefer `datetime_local` for a birth time read off a certificate: only the server-side conversion can apply the pre-1970 corrections, so a 1961 Minnesota birth resolves to CST where raw IANA tzdata says CDT.
  - `ayanamsa` string: Ayanamsa system for tropical-to-sidereal conversion. Supported: lahiri (default), fagan_bradley, krishnamurti, raman, yukteshwar.
  - `datetime_local` string: Naive local wall-clock birth datetime (YYYY-MM-DDTHH:MM:SS, no zone suffix), resolved by the server at `latitude`/`longitude`. Mutually exclusive with `datetime_utc` — exactly one of the two is required. The zone comes from the sibling `timezone` field when supplied, otherwise from the coordinates; the historical-correction overlay is consulted for pre-1970 dates. The resolution is echoed back in `metadata` as tz_confidence / tz_rule_source / tz_resolved_offset / resolved_utc.
  - `datetime_utc` string: Birth date-time in ISO 8601 UTC format. Example: '1990-01-15T08:30:00'. The field name pins the zone, so a zone-less value here is read as UTC. Mutually exclusive with `datetime_local`.
  - `include_visual` boolean: When true, renders an inline South Indian Rashi grid SVG alongside the chart.
  - `latitude` number, required: Birth latitude in decimal degrees (north positive).
  - `longitude` number, required: Birth longitude in decimal degrees (east positive).
  - `timezone` TimezoneInput: Timezone input using IANA names or UTC offsets.
    - `fold_preference` 'earlier' | 'later': Which occurrence to use when the naive local datetime falls in a fall-back fold (a repeated hour): 'earlier' (default — first occurrence) or 'later'. Only meaningful for naive datetimes; the response reports datetime_status=ambiguous_fold either way so the ambiguity can be surfaced to the user.
    - `iana_name` string: IANA timezone name
    - `time_standard` 'auto' | 'standard' | 'daylight': How to interpret a naive local datetime when this zone is applied. 'auto' (default): resolve through the historical-correction overlay where one covers the region/era, then IANA tzdata. 'standard': force the zone's standard (non-daylight) offset — for callers who KNOW the recorded time was standard time regardless of what tzdata believes. 'daylight': force standard+1h. Forcing either marks the resolution tz_confidence=client_override. Ignored when the datetime carries its own Z/±HH:MM suffix or when utc_offset is used.
    - `utc_offset` number: UTC offset in hours
  - `visual_config` VisualRenderConfig: Optional rendering preferences for inline chart visuals.
    - `format` 'svg' | 'png': Output encoding: "svg" (default) or "png". PNG requires resvg on the server.
    - `layout` 'graph' | 'mandala': Bodygraph composition: "graph" (default) is the classic layout; "mandala" nests the same diagram inside concentric rings. Ignored for wheel renders. Honored on natal and overlay (transit, connection) bodygraph paths.
    - `size` integer: Canvas pixel dimension. Range [200, 4000]. Default 800.
    - `theme` 'light' | 'dark': Colour palette: "light" (default) or "dark".

## Response `200`

Vedic chart with sidereal positions, nakshatras, and navamsa.

- VedicChartResponse: Full Vedic natal chart response.
  - `metadata` object, required
  - `planets` VedicPlanetPosition[], required
    - `nakshatra` NakshatraDetail, required: Nakshatra (lunar mansion) details for a single planet.
      - `deity` string, required: Presiding deity
      - `name` string, required: Nakshatra name
      - `number` integer, required: Nakshatra number (1–27)
      - `pada` integer, required: Pada / quarter (1–4)
      - `ruler` string, required: Ruling planet (Vedic lords)
    - `navamsa_sign` string, required: Navamsa (D-9) sign placement
    - `planet` string, required
    - `rashi` string, required: Vedic sign name (Sanskrit)
    - `rashi_degree` number, required: Degree within the rashi (0–30)
    - `rashi_element` string, required
    - `rashi_western` string, required: Western sign name equivalent
    - `sidereal_longitude` number, required
    - `tropical_longitude` number, required
  - `success` boolean
  - `visual` VisualResult: Embedded diagram payload returned alongside chart data when include_visual=true.
    - `content_type` string, required: MIME type of the data payload.
    - `credits_charged` integer, required: Additional credits consumed to render the visual: 2, or 0 on a re-render that presented a valid render_token.
    - `data` string, required: Raw SVG string (format=svg) or standard base64-encoded PNG bytes (format=png, no data: URI prefix).
    - `format` string, required: Output format: "svg" or "png".
    - `render_token` string: Short-lived (15 min) token for re-rendering this same chart. Send it back in the X-OE-Render-Token header (or a top-level render_token body field) with a request for the same chart inputs — e.g. the same birth data in a different theme or layout — and that request is not charged again. Bound to your account and to the chart-defining inputs; any other request is charged normally.
    - `type` string, required: Diagram kind: "wheel" or "bodygraph".

## Other responses

- `422`: Validation error (bad datetime, unsupported ayanamsa, etc.)

---

[API](https://skmtc.dev/openephemeris/apis/open-ephemeris-api.md) · [All operations](https://skmtc.dev/openephemeris/apis/open-ephemeris-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openephemeris/apis/open-ephemeris-api/revisions/d195a769cb89?raw)
