---
title: "Western Monthly Transits"
method: POST
path: "/v1/western/transits/monthly"
tags: ["Western Astrology"]
---

# Western Monthly Transits

`POST /v1/western/transits/monthly`

## Request

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

30-day transit window vs natal chart. Returns day-by-day transit snapshots plus peak aspects (active 10+ days in the window). Use start_date to set the month start. Defaults to today.

## Request body

- WesternTransitRequest
  - `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.
  - `house_system` 'placidus' | 'koch' | 'equal' | 'whole_sign': House system for the natal houses that transiting planets are placed in (natal_house on each transit planet). Same choices as the natal chart; Placidus is the default.
  - `snapshot_time` string, nullable: Local clock time (HH:MM) at which each day's sky is read, in snapshot_timezone. Default: 12:00 UTC, as before. Pass the user's own time so the Moon and the fast planets are where the user sees them.
  - `snapshot_timezone` string, nullable: IANA timezone for snapshot_time. Defaults to the birth timezone when snapshot_time is given.
  - `start_date` string, nullable: Transit reference date (YYYY-MM-DD): snapshot day for daily transits; window start for weekly (7 days) and monthly (30 days). Defaults to today.

## Response `200`

Successful Response

- ApiResponseMonthlyTransitResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` MonthlyTransitResponse, required
    - `start_date` string, required
    - `end_date` string, required
    - `days` DailyTransitResponse[], required
      - `date` string, required
      - `snapshot_utc` string, nullable: The instant this day's sky was read at, ISO 8601 UTC (12:00 UTC unless snapshot_time was given).
      - `transit_planets` TransitPlanetRowSchema[], required
        - `name` string, required
        - `longitude` number, required
        - `sign` string, required
        - `sign_index` integer, required
        - `degree_in_sign` number, required
        - `is_retrograde` boolean, required
        - `aspects_to_natal` TransitAspectSchema[], required
          - `transit_planet` string, required
          - `natal_planet` string, required
          - `type` string, required
          - `exact_angle` number, required
          - `orb` number, required
          - `is_applying` boolean, required: True if the transiting planet's instantaneous motion is closing the orb to the (fixed) natal planet. False if separating or exact.
          - `exact_at` string, nullable: When this aspect is exact: the UTC moment the transiting planet reaches the exact aspect degree (ISO 8601 with Z, to the second). Searched 30 days either side of the snapshot day. Applying aspects give the next exact moment, separating aspects the last one. Null when no exact moment falls within the 30-day search window.
          - `days_to_exact` number, nullable: Days from the snapshot (noon UTC on the transit day) to exact_at. Positive means the aspect is still to become exact, negative means it already was. Null when exact_at is null.
        - `natal_house` integer, nullable: Natal house (1–12) this transiting planet is passing through, using the birth chart's house cusps in the requested house_system. Null when the birth time is unknown (birth_time_provided is false), because natal houses need a birth time.
      - `aspects` TransitAspectSchema[], required
        - `transit_planet` string, required
        - `natal_planet` string, required
        - `type` string, required
        - `exact_angle` number, required
        - `orb` number, required
        - `is_applying` boolean, required: True if the transiting planet's instantaneous motion is closing the orb to the (fixed) natal planet. False if separating or exact.
        - `exact_at` string, nullable: When this aspect is exact: the UTC moment the transiting planet reaches the exact aspect degree (ISO 8601 with Z, to the second). Searched 30 days either side of the snapshot day. Applying aspects give the next exact moment, separating aspects the last one. Null when no exact moment falls within the 30-day search window.
        - `days_to_exact` number, nullable: Days from the snapshot (noon UTC on the transit day) to exact_at. Positive means the aspect is still to become exact, negative means it already was. Null when exact_at is null.
      - `total_aspects` integer, required
      - `house_system` string: House system used for natal_house on each transiting planet.
      - `birth_time_provided` boolean: True when a birth time was supplied. False when it was not: natal_house is then null for every transiting planet, and natal positions were computed for 06:00 local time.
    - `peak_aspects` TransitAspectSchema[], required
      - `transit_planet` string, required
      - `natal_planet` string, required
      - `type` string, required
      - `exact_angle` number, required
      - `orb` number, required
      - `is_applying` boolean, required: True if the transiting planet's instantaneous motion is closing the orb to the (fixed) natal planet. False if separating or exact.
      - `exact_at` string, nullable: When this aspect is exact: the UTC moment the transiting planet reaches the exact aspect degree (ISO 8601 with Z, to the second). Searched 30 days either side of the snapshot day. Applying aspects give the next exact moment, separating aspects the last one. Null when no exact moment falls within the 30-day search window.
      - `days_to_exact` number, nullable: Days from the snapshot (noon UTC on the transit day) to exact_at. Positive means the aspect is still to become exact, negative means it already was. Null when exact_at is null.
    - `house_system` string: House system used for natal_house on each transiting planet.
    - `birth_time_provided` boolean: True when a birth time was supplied. False when it was not: natal_house is then null for every transiting planet.

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