Lunar Calendar
curl -X POST https://api.astroway.info/v1/lunar-calendar \ -H "X-Api-Key: aw_live_..." \ -H "Content-Type: application/json" \ -d '{ "year": 2024, "month": 6 }'const res = await fetch('https://api.astroway.info/v1/lunar-calendar', { method: 'POST', headers: { 'X-Api-Key': process.env.ASTROWAY_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ "year": 2024, "month": 6 }),});const { ok, data, error } = await res.json();if (!ok) throw new Error(error.message);console.log(data);import os, requests
r = requests.post( 'https://api.astroway.info/v1/lunar-calendar', headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'}, json={ 'year': 2024, 'month': 6 },)result = r.json()if not result['ok']: raise RuntimeError(result['error']['message'])print(result['data'])<?phpuse GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://api.astroway.info/v1/']);$r = $client->post('lunar-calendar', [ 'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')], 'json' => [ 'year' => 2024, 'month' => 6, ],]);$result = json_decode($r->getBody(), true);if (!$result['ok']) throw new \RuntimeException($result['error']['message']);print_r($result['data']);Calculate a lunar calendar for a given month: Moon sign per day, lunar phases, void-of-course windows, and perigee/apogee.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Comma-separated dotted paths, relative to data, to keep in the response. A path is applied to every element of an array, so planets.name means the name of each planet. Paths that match nothing come back in _fields_unmatched; a list where nothing matches at all is a 400, because an empty object would be a confident wrong answer.
Example
planets.name,planets.longitudeRound every non-integer number in the response to this many decimal places. Integers are left alone, because an id is not a measurement. Ecliptic longitudes ship with fourteen decimals by default; 2 is about a tenth of an arcminute.
Example
4Request Body required
Section titled “Request Body required ”object
Hours east of UTC. The calendar days become local days: date, isVoC (at local noon), phase and ingress per local day, and the month range itself. Omitted with no timezone: days run in UT.
IANA zone, e.g. Europe/Kyiv. Wins over timezoneOffset and follows a DST change inside the month, day by day.
Example
{ "year": 2024, "month": 6}Responses
Section titled “ Responses ”Successful calculation
object
object
object
object
object
object
object
object
object
object
Example
{ "ok": true, "data": { "year": 2024, "month": 6, "phases": [ { "type": "new_moon", "jd": 2460468.0262145996, "date": "2024-06-06T12:37:45.000Z", "longitude": 76.29534844344522 } ], "ingresses": [ { "jd": 2460462.6447265614, "date": "2024-06-01T03:28:24.000Z", "signIndex": 0, "longitude": 0 } ], "voidPeriods": [ { "startJd": 2460462.621328125, "startDate": "2024-06-01T02:54:43.000Z", "endJd": 2460462.644609375, "endDate": "2024-06-01T03:28:14.000Z", "nextSignIndex": 0, "durationHours": 0.5587500035762787, "lastAspect": { "planetId": 8, "aspectName": "Conjunction", "aspectSymbol": "☌" } } ], "moonAspects": [ { "jd": 2460462.6212771744, "date": "2024-06-01T02:55:00.000Z", "planetId": 8, "aspect": { "name": "Conjunction", "i18nKey": "aspect_conjunction", "angle": 0, "orb": 12, "symbol": "☌", "isMajor": true, "color": "#660480" }, "moonLongitude": 359.66755752916276 } ], "dailyInfo": [ { "date": "2024-06-01T00:00:00.000Z", "lunarDay": 25, "lunarDayStart": "2024-06-01T03:22:00.000Z", "lunarDayEnd": "2024-06-02T03:22:00.000Z", "moonSignIndex": 0, "moonLongitude": 5.05965072191194, "isVoC": true, "phase": null, "ingress": { "jd": 2460462.6447265614, "date": "2024-06-01T03:28:24.000Z", "signIndex": 0, "longitude": 0 } } ] }}Validation error
Example
{ "ok": false, "error": { "code": "INVALID_INPUT", "message": "Validation failed: date: Date must be YYYY-MM-DD", "details": [ { "path": "date", "message": "Date must be YYYY-MM-DD" } ] }}Missing or invalid API key
Example
{ "ok": false, "error": { "code": "INVALID_API_KEY", "message": "Invalid API key" }}