---
title: "Western Moon Phase Calendar"
method: GET
path: "/v1/western/moon/calendar"
tags: ["Western Astrology"]
---

# Western Moon Phase Calendar

`GET /v1/western/moon/calendar`

## Request

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

Returns lunar phase data for every day in a given month, each day computed at 18:00 UTC (same fields as the moon phase endpoint). The days of the month's New Moons, First Quarters, Full Moons and Last Quarters carry principal_phase and its exact instant (principal_phase_at, UTC): use those, not the 45-degree phase_name bands, to mark full and new moon dates. Defaults to current month (UTC) if no year/month given.

## Query parameters

- `year` integer, nullable: Year (e.g. 2026), 1-3000. Defaults to the current year (UTC).
- `month` integer, nullable: Month number 1-12. Defaults to the current month (UTC).

## Response `200`

Successful Response

- ApiResponseListMoonPhaseResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` MoonPhaseResponse[], required: The endpoint response payload
    - `date` string, required: Date in YYYY-MM-DD format
    - `phase_name` string, required: Phase at 18:00 UTC on the date, in Dane Rudhyar's eight 45-degree phases: each phase begins at its angle (New Moon 0-45, Waxing Crescent 45-90, First Quarter 90-135, Waxing Gibbous 135-180, Full Moon 180-225, Waning Gibbous 225-270, Last Quarter 270-315, Waning Crescent 315-360), so the day before a full moon reads Waxing Gibbous. Use principal_phase for the day of an exact phase.
    - `phase_angle` number, required: Sun-Moon elongation in degrees (0-360) at 18:00 UTC. 0=New Moon, 180=Full Moon
    - `illumination_pct` number, required: Percentage of Moon disk illuminated (0-100)
    - `moon_age_days` number, required: Days from the previous exact New Moon to 18:00 UTC on the date (0 to about 29.8)
    - `moon_longitude` number, required: Tropical ecliptic longitude of Moon (0-360)
    - `sun_longitude` number, required: Tropical ecliptic longitude of Sun (0-360)
    - `is_waxing` boolean, required: True if Moon is waxing (phase_angle < 180)
    - `next_phase_name` string, required: Name of the next principal phase (New Moon, First Quarter, Full Moon, Last Quarter) after 18:00 UTC on the date
    - `next_phase_date` string, nullable: UTC date (YYYY-MM-DD) of the exact instant of the next principal phase
    - `next_phase_at` string, nullable: Exact instant of the next principal phase, ISO 8601 UTC (e.g. 2026-10-26T04:11:49Z)
    - `computed_at` string, nullable: Instant the phase, angle, illumination and longitudes are computed for: 18:00 UTC on the date
    - `principal_phase` string, nullable: The principal phase (New Moon, First Quarter, Full Moon or Last Quarter) whose exact instant falls on this UTC date, or null. Marks the one day of each phase, as in published phase tables.
    - `principal_phase_at` string, nullable: Exact instant of principal_phase, ISO 8601 UTC

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