---
title: "Western Composite Chart"
method: POST
path: "/v1/western/composite"
tags: ["Western Astrology"]
---

# Western Composite Chart

`POST /v1/western/composite`

## Request

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

Midpoint composite chart for two people using modern Western midpoint technique. Each composite planet is the midpoint of the two natal positions. Returns composite planets with dignities and internal aspects.

## Request body

- TwoPersonRequest
  - `person1` WesternBirthInput, required: Birth input for Western endpoints: the tropical zodiac is always used.
    - `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, nullable: Birth time in HH:MM 24-hour format. If omitted, the chart is cast for 06:00 local time (not a sunrise chart) and birth_time_provided is false: houses, the Ascendant, the sect and the Moon's exact degree are then approximate.
    - `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.
  - `person2` WesternBirthInput, required: Birth input for Western endpoints: the tropical zodiac is always used.
    - `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, nullable: Birth time in HH:MM 24-hour format. If omitted, the chart is cast for 06:00 local time (not a sunrise chart) and birth_time_provided is false: houses, the Ascendant, the sect and the Moon's exact degree are then approximate.
    - `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.

## Response `200`

Successful Response

- ApiResponseCompositeResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` CompositeResponse, required
    - `birth_time_provided` boolean: True only when both people supplied a birth time. See person1_birth_time_provided and person2_birth_time_provided.
    - `person1_birth_time_provided` boolean: True when person 1 supplied a birth time.
    - `person2_birth_time_provided` boolean: True when person 2 supplied a birth time.
    - `planets` CompositePlanetSchema[], required
      - `name` string, required
      - `longitude` number, required
      - `sign` string, required
      - `sign_index` integer, required
      - `degree_in_sign` number, required
      - `dignity` string, required
      - `dignity_score` integer, required: Weight of the primary sign-level dignity only: domicile=5, exaltation=4, detriment=-5, fall=-4, peregrine=0. Triplicity, term and face are not scored, and the weights are not summed (e.g. Mercury in Virgo scores 5 for domicile, not 5+4). Full traditional scoring is in essential_dignities (natal and return charts).
      - `dignity_disputed` boolean, required: True for outer planet (Uranus/Neptune/Pluto) exaltation/fall — no established consensus.
    - `ascendant_longitude` number, required
    - `ascendant_sign` string, required
    - `ascendant_sign_index` integer, required
    - `aspects` CompositeAspectSchema[], required: Aspects between planets within the composite chart
      - `planet_a` string, required: First composite planet
      - `planet_b` string, required: Second composite planet
      - `person1_planet` string, required: Legacy name for planet_a, kept for compatibility. Both planets belong to the composite chart, not to person 1 or person 2.
      - `person2_planet` string, required: Legacy name for planet_b, kept for compatibility (see person1_planet).
      - `type` string, required
      - `exact_angle` number, required
      - `orb` number, 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)
