astro_moment
Astrological qualities of a moment — phase, VOC, hours, mansions, eclipses.
- Layer: compute
- Methods: moon-phase, void-of-course, planetary-hours, lunar-mansions, oob-declination, critical-degrees, eclipses-current
- Free tier: moon-phase, void-of-course, planetary-hours, critical-degrees, eclipses-current
- Paid tier: lunar-mansions, oob-declination
Description
Astrological qualities of a moment — phase, VOC, hours, mansions, eclipses.
Methods:
moon-phase [Free] — current lunar phase, waxing/waning state, sign + house of the Moon at a moment
void-of-course [Free] — whether the Moon is void-of-course at a moment, with sign-entry/exit windows
planetary-hours [Free] — hour rulers across a date at a location (Chaldean order), sunrise/sunset + daily ruler
lunar-mansions [Paid] — the 28 lunar mansion the Moon occupies at a moment
oob-declination [Paid] — planets out-of-bounds in declination at a birth moment
critical-degrees [Free] — planets conjunct cardinal/fixed/mutable critical degrees in a birth chart
eclipses-current [Free] — solar + lunar eclipses within a date range, plus next solar/lunar eclipses
Input schema
moon-phase
| Field | Type | Required | Constraints |
|---|---|---|---|
| year | integer | yes | min -4000, max 4000, int |
| month | integer | yes | min 1, max 12, int |
| day | integer | yes | min 1, max 31, int |
| hour | integer | no | min 0, max 23, int |
| minute | integer | no | min 0, max 59, int |
| second | integer | no | min 0, max 59, int |
| latitude | number | no | min -90, max 90 |
| longitude | number | no | min -180, max 180 |
| timezone | number | no | min -12, max 14 |
| houseSystem | enum(44) | no | — |
| zodiac | enum(35) | no | — |
Example request
{
"method": "moon-phase",
"year": 2024,
"month": 6,
"day": 1
}
Example response (captured; long values elided)
{
"moon": {
"sign": {
"sign": 0,
"signName": "Aries",
"degrees": 5,
"minutes": 3,
"seconds": 35
},
"longitude": 5.059672,
"latitude": -0.800527,
"speed": 14.249009,
"isRetrograde": false,
"house": null
},
"phase": {
"name": "Waning Crescent",
"displayName": "Balsamic Moon (Waning Crescent)",
"elongation": 293.579239,
"elongationDegrees": 293,
"elongationMinutes": 35,
"keywords": [
"Transition",
"Release",
"Transformation"
]
},
"zodiac": "tropical",
"ayanamsaOffset": null,
"summary": null
}
void-of-course
| Field | Type | Required | Constraints |
|---|---|---|---|
| dateTime.year | integer | yes | min 1800, max 2200, int |
| dateTime.month | integer | yes | min 1, max 12, int |
| dateTime.day | integer | yes | min 1, max 31, int |
| dateTime.hour | integer | yes | min 0, max 23, int |
| dateTime.minute | integer | no | min 0, max 59, int |
| dateTime.second | integer | no | min 0, max 59, int |
| planetSet | "classical" | "modern" | no | — |
Example request
{
"method": "void-of-course",
"dateTime": {
"year": 2024,
"month": 6,
"day": 1,
"hour": 12
}
}
Example response (captured; long values elided)
{
"isVoid": false,
"moonLongitude": 5.059672,
"moonSign": "Aries",
"nextSign": "Taurus",
"signEntryJdUT": 2460462.644645,
"signExitJdUT": 2460464.746747,
"lastAspect": {
"planet": "Jupiter",
"aspect": "sextile",
"jdUT": 2460462.748156
},
"nextAspect": {
"planet": "Venus",
"aspect": "sextile",
"jdUT": 2460463.427262
},
"voidStartJdUT": null
}
planetary-hours
| Field | Type | Required | Constraints |
|---|---|---|---|
| date.year | integer | yes | min 1800, max 2200, int |
| date.month | integer | yes | min 1, max 12, int |
| date.day | integer | yes | min 1, max 31, int |
| latitude | number | yes | min -66, max 66 |
| longitude | number | yes | min -180, max 180 |
| timezone | number | yes | min -12, max 14 |
Example request
{
"method": "planetary-hours",
"date": {
"year": 2024,
"month": 6,
"day": 1
},
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": 0
}
Example response (captured; long values elided)
{
"weekday": "Saturday",
"dayRuler": "Saturn",
"sunriseJdUT": 2460462.658881,
"sunsetJdUT": 2460463.339373,
"nextSunriseJdUT": 2460463.658362,
"hours": [
{
"index": 0,
"ruler": "Saturn",
"startJdUT": 2460462.658881,
"endJdUT": 2460462.715589,
"isDay": true
},
{
"index": 1,
"ruler": "Jupiter",
"startJdUT": 2460462.715589,
"endJdUT": 2460462.772297,
"isDay": true
},
{
"index": 2,
"ruler": "Mars",
"startJdUT": 2460462.772297,
"endJdUT": 2460462.829004,
"isDay": true
},
{
"index": 3,
"ruler": "Sun",
"startJdUT": 2460462.829004,
"endJdUT": 2460462.885712,
"isDay": true
},
{
"index": 4,
"ruler": "Venus",
"startJdUT": 2460462.885712,
"endJdUT": 2460462.94242,
"isDay": true
},
{
"index": 5,
"ruler": "Mercury",
"startJdUT": 2460462.94242,
"endJdUT": 2460462.999127,
"isDay": true
},
{
"index": 6,
"ruler": "Moon",
"startJdUT": 2460462.999127,
"endJdUT": 2460463.055835,
"isDay": true
},
{
"index": 7,
"ruler": "Saturn",
"startJdUT": 2460463.055835,
"endJdUT": 2460463.112543,
"isDay": true
},
"… 16 more items"
]
}
lunar-mansions
| Field | Type | Required | Constraints |
|---|---|---|---|
| dateTime.year | integer | yes | min 1800, max 2200, int |
| dateTime.month | integer | yes | min 1, max 12, int |
| dateTime.day | integer | yes | min 1, max 31, int |
| dateTime.hour | integer | yes | min 0, max 23, int |
| dateTime.minute | integer | no | min 0, max 59, int |
| dateTime.second | integer | no | min 0, max 59, int |
Example request
{
"method": "lunar-mansions",
"dateTime": {
"year": 2024,
"month": 6,
"day": 1,
"hour": 12
}
}
Example response (captured; long values elided)
{
"moonLongitude": 5.059672,
"mansion": 1,
"name": "Al-Sharatain",
"startLongitude": 0,
"endLongitude": 12.857143,
"moonSign": "Aries"
}
oob-declination
| Field | Type | Required | Constraints |
|---|---|---|---|
| birthData.year | integer | yes | min -4000, max 4000, int |
| birthData.month | integer | yes | min 1, max 12, int |
| birthData.day | integer | yes | min 1, max 31, int |
| birthData.hour | integer | yes | min 0, max 23, int |
| birthData.minute | integer | yes | min 0, max 59, int |
| birthData.second | integer | no | min 0, max 59, int |
| birthData.latitude | number | yes | min -90, max 90 |
| birthData.longitude | number | yes | min -180, max 180 |
| birthData.timezone | number | yes | min -12, max 14 |
| birthData.unknownTime | boolean | no | — |
Example request
{
"method": "oob-declination",
"birthData": {
"year": 1990,
"month": 1,
"day": 1,
"hour": 12,
"minute": 0,
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": 0
}
}
Example response (captured; long values elided)
{
"threshold": 23.44,
"planets": [
{
"planet": "Sun",
"declination": -23.001861,
"isOOB": false
},
{
"planet": "Moon",
"declination": -8.936825,
"isOOB": false
},
{
"planet": "Mercury",
"declination": -20.391908,
"isOOB": false
},
{
"planet": "Venus",
"declination": -16.877487,
"isOOB": false
},
{
"planet": "Mars",
"declination": -21.984892,
"isOOB": false
},
{
"planet": "Jupiter",
"declination": 23.225258,
"isOOB": false
},
{
"planet": "Saturn",
"declination": -22.232275,
"isOOB": false
},
{
"planet": "Uranus",
"declination": -23.585721,
"isOOB": true
},
"… 2 more items"
]
}
critical-degrees
| Field | Type | Required | Constraints |
|---|---|---|---|
| birthData.year | integer | yes | min -4000, max 4000, int |
| birthData.month | integer | yes | min 1, max 12, int |
| birthData.day | integer | yes | min 1, max 31, int |
| birthData.hour | integer | yes | min 0, max 23, int |
| birthData.minute | integer | yes | min 0, max 59, int |
| birthData.second | integer | no | min 0, max 59, int |
| birthData.latitude | number | yes | min -90, max 90 |
| birthData.longitude | number | yes | min -180, max 180 |
| birthData.timezone | number | yes | min -12, max 14 |
| birthData.unknownTime | boolean | no | — |
| orb | number | no | min 0.1, max 3 |
Example request
{
"method": "critical-degrees",
"birthData": {
"year": 1990,
"month": 1,
"day": 1,
"hour": 12,
"minute": 0,
"latitude": 51.5074,
"longitude": -0.1278,
"timezone": 0
}
}
Example response (captured; long values elided)
{
"orb": 1,
"hits": [
{
"point": "Moon",
"longitude": 333.267706,
"sign": "Pisces",
"criticalDegree": 4,
"orb": 0.732294
},
{
"point": "Mercury",
"longitude": 295.672824,
"sign": "Capricorn",
"criticalDegree": 26,
"orb": 0.327176
},
{
"point": "Neptune",
"longitude": 282.038107,
"sign": "Capricorn",
"criticalDegree": 13,
"orb": 0.961893
}
]
}
eclipses-current
| Field | Type | Required | Constraints |
|---|---|---|---|
| dateRange.from | object | yes | — |
| dateRange.to | object | yes | — |
| kind | "solar" | "lunar" | "both" | no | — |
Example request
{
"method": "eclipses-current",
"dateRange": {
"from": {
"year": 2024,
"month": 3,
"day": 1
},
"to": {
"year": 2024,
"month": 10,
"day": 31
}
}
}
Example response (captured; long values elided)
{
"events": [
{
"kind": "lunar",
"jdMax": 2460394.800609,
"dateUT": {
"year": 2024,
"month": 3,
"day": 25,
"hour": 7,
"minute": 12,
"second": 52
},
"type": "penumbral",
"magnitude": 0,
"sarosSeries": null
},
{
"kind": "solar",
"jdMax": 2460409.262041,
"dateUT": {
"year": 2024,
"month": 4,
"day": 8,
"hour": 18,
"minute": 17,
"second": 20
},
"type": "total",
"magnitude": 1.057476,
"sarosSeries": null
},
{
"kind": "lunar",
"jdMax": 2460571.614092,
"dateUT": {
"year": 2024,
"month": 9,
"day": 18,
"hour": 2,
"minute": 44,
"second": 17
},
"type": "partial",
"magnitude": 0.085581,
"sarosSeries": null
},
{
"kind": "solar",
"jdMax": 2460586.281299,
"dateUT": {
"year": 2024,
"month": 10,
"day": 2,
"hour": 18,
"minute": 45,
"second": 4
},
"type": "annular",
"magnitude": 0.933371,
"sarosSeries": null
}
],
"nextSolar": {
"kind": "solar",
"jdMax": 2460409.262041,
"dateUT": {
"year": 2024,
"month": 4,
"day": 8,
"hour": 18,
"minute": 17,
"second": 20
},
"type": "total",
"magnitude": 1.057476,
"sarosSeries": null
},
"nextLunar": {
"kind": "lunar",
"jdMax": 2460394.800609,
"dateUT": {
"year": 2024,
"month": 3,
"day": 25,
"hour": 7,
"minute": 12,
"second": 52
},
"type": "penumbral",
"magnitude": 0,
"sarosSeries": null
}
}