---
title: "Varshaphal — Solar Return Chart"
method: POST
path: "/v1/astro/varshaphal"
tags: ["Astrology"]
---

# Varshaphal — Solar Return Chart

`POST /v1/astro/varshaphal`

## Request

- Base URL: `https://api.asterwise.com`
- URL: `https://api.asterwise.com/v1/astro/varshaphal`
- Auth: HTTP bearer

Computes the Varshaphal (annual horoscope) for a given year. Finds the exact moment when the Sun returns to its natal longitude (the return nearest the birthday in target_year; in UT it can fall a day either side, or on 31 December for a 1 January birthday), computes all planet positions at that moment, and returns Muntha (natal lagna sign + completed years, target_year minus birth year), the Varsha Pati (Tajika year lord, elected from the five Pancha Adhikaris) and Tajika Ithasala/Musaripha between the seven grahas. year_lord / vara_lord is the weekday lord at the return, not the Varsha Pati. Request JSON follows BirthInput plus `target_year`: `name`, `date` (YYYY-MM-DD), `time` (HH:MM, required), either `location` or `latitude`/`longitude`/`timezone`, `ayanamsa`.

## Request body

- VarshaphalRequest: Varshaphal — extends :class:`TimedBirthInput` with ``target_year``. Birth fields: ``name``, ``date``, ``time``, ``location`` or coordinates, ``ayanamsa``. Required: ``target_year`` (solar return year).
  - `location` string, nullable: City name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required.
  - `name` string: Person name associated with the birth record
  - `date` string, required: Birth date in YYYY-MM-DD format
  - `time` string, required: Birth time in HH:MM 24-hour format. Required: this endpoint has no sunrise fallback.
  - `latitude` number, nullable: Latitude. Required if location not provided.
  - `longitude` number, nullable: Longitude. Required if location not provided.
  - `timezone` string, nullable: IANA timezone. Required if location not provided (unless utc_offset is given). For dates before the zone adopted a standard time, the birthplace's local mean time (longitude / 15 hours) is used.
  - `utc_offset` string, nullable: Optional explicit UTC offset of the birth time, as ±HH:MM or ±HH:MM:SS (e.g. '+04:51:31' for Bombay mean time). Overrides the offset `timezone` would give. Use it when the birth record states the offset, or for historical local times the IANA database cannot represent.
  - `ayanamsa` 'lahiri' | 'raman' | 'kp' | 'tropical': Sidereal ayanamsa mode used in calculations
  - `target_year` integer, required: Varshaphal year, e.g. 2026: the solar return nearest the birthday in this year (in UT it can fall the day before or after the birthday, or on 31 December for a 1 January birthday). Each year gives a different return. Must not be before the birth year.

## Response `200`

Successful Response

- ApiResponseVarshaphalResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` VarshaphalResponse, required
    - `birth_time_provided` boolean: True when a birth time was supplied. False when it was not: house, Ascendant and Moon-dependent results then carry the accuracy limits of an unknown birth time.
    - `target_year` integer, required
    - `ayanamsa` string, required
    - `solar_return_utc` string, required: Solar return instant (UTC, to the minute): the Sun back on its natal longitude, the return nearest the birthday in target_year.
    - `solar_return_jd` number, required
    - `natal_sun_longitude` number, required
    - `natal_lagna` string, required
    - `natal_lagna_index` integer, required
    - `year_lord` string, required: Weekday (vara) lord at the solar-return instant, sunrise to sunrise at the birth place. Historical name: this is NOT the Tajika year lord. The year lord (Varsha Pati / Varsheshwara) is varsha_pati.planet. Same value as vara_lord.
    - `vara_lord` string, nullable: Weekday (vara) lord at the solar-return instant (same value as year_lord).
    - `muntha` VarshaphalMuntha, required
      - `rashi_index` integer, required: Muntha sign 0-11: natal lagna sign + age_years (one sign a year).
      - `rashi` string, required
      - `age_years` integer, required: Completed years for this varsha: target_year minus birth year (Tajika Neelakanthi), not read off the return's UTC date.
      - `muntha_lord` string, nullable
    - `planets` object, required
    - `varshaphal_ascendant_longitude` number, nullable: Sidereal ascendant longitude at solar return (degrees).
    - `varshaphal_ascendant_sign` string, nullable: Sanskrit sign name of the Varshaphal ascendant.
    - `varshaphal_ascendant_sign_index` integer, nullable: Sign index 0-11 of the Varshaphal ascendant.
    - `varsha_pati` VarshaPati, required
      - `planet` string, required
      - `role` string, required
      - `pancha_vargeeya_bala` number, required
      - `kshetra_bala` number, required
      - `uchcha_bala` number, required
      - `election_fallback` string, nullable: When set, Varsha Pati was elected by fallback rather than highest aspecting score. Currently only 'muntha_pati_no_aspect'.
      - `moon_election` string, nullable: Moon election outcome: 'cancer_lagna_exception', 'nocturnal_tri_rasi_exception', 'disqualified', or null.
    - `pancha_adhikaris` object[], required
    - `pancha_vargeeya_bala` object, required
    - `tajika_aspects` object[], required
    - `tajika_planet_pairs` object[], required: Pairs of the seven grahas (no Rahu/Ketu) in Tajika aspect by sign: same sign (conjunction), 3rd/11th (mitra), 4th/10th (vikrama), 5th/9th (labha), 7th (shatru). Keys: planet_a, planet_b, house_a, house_b (whole-sign houses from the Varsha lagna), diff_ab, diff_ba, aspect_ab, aspect_ba, faster_planet (by mean motion: Moon, Mercury, Venus, Sun, Mars, Jupiter, Saturn), orb_degrees (gap between their degrees within sign), orb_limit (mean of the two Deeptamsas), is_ithsala (faster planet behind the slower one within orb_limit), ithsala_type ('poorna' within 1 degree, 'vartamana' otherwise, null when not ithsala), is_musaripha (faster planet already past, within orb_limit). Retrogression is not modelled.

## Other responses

- `401`: Authentication failed
- `403`: Authorization failed
- `404`: Resource not found
- `413`: Payload too large
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream provider error
- `503`: Service unavailable

---

[API](https://skmtc.dev/asterwise/apis/asterwise-api.md) · [All operations](https://skmtc.dev/asterwise/apis/asterwise-api/llms.txt) · [OpenAPI document](https://skmtc.dev/asterwise/apis/asterwise-api/revisions/3c4bbb1194e2?raw)
