---
title: "Annual profections"
method: POST
path: "/v1/western/profections"
tags: ["Western Astrology"]
---

# Annual profections

`POST /v1/western/profections`

## Request

- Base URL: `https://api.asterwise.com`
- URL: `https://api.asterwise.com/v1/western/profections`
- Auth: HTTP bearer

Annual profections for a birth chart and a date: the whole-sign house activated this year, its sign, and the lord of the year (the sign's traditional ruler). Rule: the Ascendant sign is the 1st house at birth and the activated sign moves forward one sign every birthday, so at age N the profected house is (N mod 12) + 1. A birth time is required because the count starts from the Ascendant; without one the request is rejected with a clear message. Includes where the year lord sits natally and the next twelve profection years.

## Request body

- ProfectionsRequest
  - `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: profections count from the Ascendant sign, which needs the birth time.
  - `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': Ignored on Western endpoints: positions are always tropical (no ayanamsa). Accepted so one birth object can be sent to Vedic and Western endpoints alike.
  - `house_system` 'placidus' | 'koch' | 'equal' | 'whole_sign': House system for the natal house reported under year_lord_natal. Profections themselves always use whole signs.
  - `target_date` string, nullable: Date to profect to (YYYY-MM-DD). Defaults to today (UTC).

## Response `200`

Successful Response

- ApiResponseProfectionsResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` ProfectionsResponse, 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_date` string, required
    - `age` integer, required: Completed years of life on target_date.
    - `year_start` string, required
    - `year_end` string, required
    - `ascendant_sign` string, required
    - `ascendant_sign_index` integer, required
    - `profected_house` integer, required
    - `profected_sign` string, required
    - `profected_sign_index` integer, required
    - `year_lord` string, required: Lord of the year: traditional ruler of the profected sign (Ptolemy, Tetrabiblos I.17).
    - `year_lord_natal` YearLordNatalSchema
      - `sign` string, required
      - `sign_index` integer, required
      - `degree_in_sign` number, required
      - `whole_sign_house` integer, required: Natal whole-sign house of the year lord, counted from the Ascendant sign.
      - `house` integer, required: Natal house of the year lord in the requested house_system.
      - `is_retrograde` boolean, required
      - `dignity` string, required
    - `natal_planets_in_profected_sign` ProfectedSignPlanetSchema[], required
      - `planet` string, required
      - `degree_in_sign` number, required
      - `is_retrograde` boolean, required
    - `upcoming_years` ProfectionYearSchema[], required: This year and the next eleven.
      - `age` integer, required
      - `year_start` string, required: Birthday that starts this profection year.
      - `year_end` string, required: Next birthday (exclusive).
      - `profected_house` integer, required: Whole-sign house activated this year, counted from the Ascendant.
      - `profected_sign` string, required
      - `profected_sign_index` integer, required
      - `year_lord` string, required: Traditional ruler of the profected sign (lord of the year).
    - `house_system_note` string, required

## 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)
