Morphemeris DocsBeta

Horary Timing Techniques

Use solar proximity, void-of-course Moon, and planetary hours for electional and horary astrology.

Horary Timing Techniques

The Morphemeris API provides three horary techniques for timing and electional work: solar proximity (is a planet combust?), void-of-course Moon (will actions produce results?), and planetary hours (which planet rules the current hour?).

Check if a planet is combust

Use /v1/solar-proximity to determine each planet's relationship to the Sun:

Bash
curl "https://api.morphemeris.com/v1/solar-proximity?\
datetime=2024-03-20T12:00:00Z" \
  -H "Authorization: Bearer morphemeris_live_YOUR_KEY"
javascript
const res = await fetch(
  "https://api.morphemeris.com/v1/solar-proximity?" + new URLSearchParams({
    datetime: "2024-03-20T12:00:00Z",
  }),
  { headers: { Authorization: `Bearer ${apiKey}` } }
);
const { data } = await res.json();

for (const planet of data.proximity) {
  if (planet.status !== "free") {
    console.log(`${planet.body}: ${planet.status} (${planet.separation.toFixed(1)}° from Sun)`);
  }
}

No location is needed — solar proximity depends only on ecliptic longitude separation.

Check if the Moon is void of course

Use /v1/void-of-course before starting important work:

javascript
const res = await fetch(
  "https://api.morphemeris.com/v1/void-of-course?" + new URLSearchParams({
    datetime: new Date().toISOString(),
  }),
  { headers: { Authorization: `Bearer ${apiKey}` } }
);
const { data } = await res.json();

if (data.is_void) {
  console.log("Moon is void of course — consider waiting");
  console.log(`${data.degrees_until_sign_change.toFixed(1)}° until sign change`);
  if (data.last_aspect) {
    console.log(`Last aspect: ${data.last_aspect.aspect} to ${data.last_aspect.body_b}`);
  }
} else {
  console.log("Moon is active — good to proceed");
}

Customize the aspect set

Traditional practitioners may use only the 5 Ptolemaic aspects. Use the aspects parameter:

Bash
curl "https://api.morphemeris.com/v1/void-of-course?\
datetime=2024-03-20T12:00:00Z\
&aspects=conjunction,opposition,trine,square,sextile" \
  -H "Authorization: Bearer morphemeris_live_YOUR_KEY"

Find the current planetary hour

Use /v1/planetary-hours to determine which planet rules the current moment:

Python
import requests

res = requests.get(
    "https://api.morphemeris.com/v1/planetary-hours",
    params={
        "datetime": "2024-03-20T14:00:00Z",
        "lat": 40.7128, "lon": -74.006,
    },
    headers={"Authorization": "Bearer morphemeris_live_YOUR_KEY"},
)
data = res.json()["data"]

current = data["hours"][data["current_hour_index"]]
print(f"Day ruler: {data['day_ruler']}")
print(f"Current hour: {current['ruler']} ({'day' if current['is_diurnal'] else 'night'} hour {current['period_hour']})")

Build an electional timing check

Combine all three techniques to evaluate whether a moment is auspicious. Use /v1/batch to get everything in one call:

javascript
const datetime = "2024-03-20T14:00:00Z";
const res = await fetch("https://api.morphemeris.com/v1/batch", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    requests: [
      { endpoint: "/v1/solar-proximity", params: { datetime } },
      { endpoint: "/v1/void-of-course", params: { datetime } },
      { endpoint: "/v1/planetary-hours", params: { datetime, lat: 40.7128, lon: -74.006 } },
    ],
  }),
});
const { data } = await res.json();

const [proximity, voc, hours] = data.responses.map(r => r.data);

// Check conditions
const moonVoid = voc.is_void;
const significatorCombust = proximity.proximity.find(
  p => p.body === "venus" && p.status === "combust"
);
const currentRuler = hours.hours[hours.current_hour_index].ruler;

console.log(`Moon void: ${moonVoid}`);
console.log(`Venus combust: ${!!significatorCombust}`);
console.log(`Current planetary hour: ${currentRuler}`);

Tips

  • All three endpoints cost 1 credit each (3 total, or batch them for the same cost).
  • Solar proximity and void-of-course don't need a location — only planetary hours requires lat/lon (for sunrise/sunset).
  • See Horary Techniques for background on these concepts and their traditional significance.