What shipped
POST /api/v3/electional/personal-hours went live today. Give it a birth chart and a date, and it returns a ranked timeline of that day, favorable windows, caution windows, one headline peak, broken down by life area if you want, in the person's own local time and in UTC.Personal Power Hours removes that ceiling. It takes the same 24-hour Chaldean spine and re-scores every hour against the native's own natal chart, then lays real-time transits on top. The result is a timeline that's different for every single person, computed from their own dignities, their own sect, their own chart ruler, and the sky as it moves against their own natal points today.
Why classical planetary hours can't do this
A Mercury hour is a fine hour to write and negotiate if you're a person whose natal Mercury is in Virgo, angular, unafflicted. It's a much weaker hour if your natal Mercury is retrograde, combust, and in the twelfth house. Classical planetary hours can't see the difference. They rank the sky, not the person.
Personal Power Hours scores each hour by the condition of its ruling planet inside one specific chart: essential dignity (domicile down through fall), accidental strength (angular versus cadent, houses of joy), sect (is the planet in its own sect or out of it, using the same day/night geometric test used across the platform), and the planet's benefic or malefic nature. On top of that, if the hour's ruler happens to be the chart ruler, the ruler of the native's own Ascendant, that hour gets a deliberate boost. That's the mechanism behind what we call the signature window: the hour of the day that is structurally "yours," the way your rising sign is yours, computed once from your birth chart and consistent day to day in how it's weighted (though its clock position moves with the Chaldean rotation).
The two-layer model
Two layers combine into a single favorability curve across the day.
Void-of-course Moon damps the overlay's positive contributions to 40% of normal strength rather than zeroing them out. That reflects the traditional reading of void Moon: initiatives started during a void tend not to come to much, but the day underneath a void isn't dead, it's just quieter than it looks on paper. A void period never suppresses the spine, only the overlay.
Hard transits from Mars or Saturn to natal points, and an hour whose ruling planet is combust or under the sunbeams, both feed caution windows. Every caution window is anchored to a specific event, hour-split, and duration-capped, so a long stretch of merely low spine score reads as background, not as a red flag stretching across half the afternoon.
What you get back
day_quality flag first: active, quiet, voc_dominated, or polar_degraded. This is the part we spent the most engineering effort protecting. If nothing in a given day clears the threshold for a genuine peak, the endpoint reports quiet and returns the best of a mediocre lot, honestly labeled. It does not manufacture a fake headline window to make the response look more exciting than the day actually is. If you're building a "your best hour today" push notification, that honesty matters: a user who gets told every single day is a peak day stops believing the app within a couple of weeks.peak_window (the single best moment of the day), up to five favorable_windows, up to three caution_windows, the signature_window tied to the chart ruler, informational angular_triggers, and per_area_best, which reruns the ranking re-weighted toward a specific life area (career, relationships, health, and eleven others) so you can answer "what's my best hour today for a hard conversation" separately from "what's my best hour for a first date." Every window carries local time with UTC offset, the equivalent UTC timestamp, the ruling planet, a 0-100 score, a short tone label, activity tags, and the specific drivers that produced the score, so you're not stuck explaining a number with nothing behind it.Here's a trimmed example, natal chart for a New York native, checked against July 25, 2026:
1{2 "target_date": "2026-07-25",3 "location": { "timezone": "America/New_York", "lat": 40.7128, "lng": -74.006 },4 "chart_ruler": "Mercury",5 "day_quality": "active",6 "peak_window": {7 "start_local": "2026-07-25T09:14:00-04:00",8 "end_local": "2026-07-25T10:02:00-04:00",9 "start_utc": "2026-07-25T13:14:00Z",10 "end_utc": "2026-07-25T14:02:00Z",11 "ruling_planet": "Mercury",12 "score": 91,13 "tone": "sharp, communicative, well-timed",14 "activity_tags": ["negotiation", "writing", "pitching"],15 "drivers": ["chart_ruler_bonus", "in_sect", "moon_applying_trine_natal_sun"]16 },17 "signature_window": {18 "ruling_planet": "Mercury",19 "note": "Your chart ruler's hour, roughly 9:14-10:02am local today"20 },21 "caution_windows": [22 {23 "start_local": "2026-07-25T15:40:00-04:00",24 "end_local": "2026-07-25T16:20:00-04:00",25 "ruling_planet": "Mars",26 "score": 22,27 "drivers": ["transiting_mars_square_natal_moon", "void_of_course_moon"]28 }29 ],30 "per_area_best": {31 "career": { "start_local": "2026-07-25T09:14:00-04:00", "score": 91 },32 "relationships": { "start_local": "2026-07-25T18:05:00-04:00", "score": 74 }33 }34}drivers rather than left for you to reverse-engineer.Who this is for
Anyone building a "best time to..." feature is currently faking the personalization layer or skipping it. TimePassages and Astro Gold will show you a list of the day's transits, unranked, and leave the interpretation to you. The Pattern gives you a mood blurb tied loosely to a transit but with no minute-level structure underneath it and nothing tied to your actual chart ruler or dignities. Co-Star's daily card reads as generic astrology-flavored copy more often than a computed ranking. None of the four will tell you which specific 45-minute window today is structurally yours versus which one is borrowed from a transit that will be gone by lunch.
That gap is the opportunity for the apps we hear from most: dating apps that want a "your best window to message someone today" feature instead of a generic daily horoscope card, productivity and habit apps that want to suggest a deep-work block tied to something more specific than a coin flip, ritual and wellness apps building "best time to meditate, journal, or set an intention" prompts, and astrologer-run practices that want to hand clients a daily timing sheet without doing the chart math by hand every morning. All four of those currently either omit personalization entirely or hand-wave it with a Sun-sign horoscope. This endpoint is the layer that was missing.
It's also deterministic. Same chart, same date, same location in, same response out, every time, no randomness anywhere in the pipeline. That matters if you're caching responses, running the endpoint in a batch job overnight for every user in your database, or debugging a support ticket where a user is asking why the app told them 9am was their peak hour. You can recompute the exact same answer and show your work.
Travel and time zones
location_override for a traveling user and you get correct hours for wherever they actually are, in their local offset, alongside the UTC timestamp for your own storage and comparisons. Two edge cases are called out honestly in the response rather than silently degraded: charts without a known birth time lose the Ascendant, so the endpoint falls back to overlay-only scoring and flags that the spine is generic rather than personal, and charts above 66.5 degrees latitude, where the unequal-hour system breaks down near the poles, get day_quality: "polar_degraded" with a flat baseline spine instead of a spine pretending precision it doesn't have.How to integrate
1curl -X POST https://api.astrology-api.io/api/v3/electional/personal-hours \2 -H "Authorization: Bearer $ASTROLOGY_API_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "subject": {6 "birth_date": "1990-03-14",7 "birth_time": "07:22:00",8 "birth_location": { "lat": 40.7128, "lng": -74.0060, "timezone": "America/New_York" }9 },10 "target_date": "2026-07-25",11 "life_area": "career",12 "granularity": "standard",13 "include_caution": true14 }'{ success, data, metadata }, with data holding everything shown in the example above.Where to learn more
- Related product: /p/electional
- Classical technique for comparison: /p/planetary-hours
- Interactive demo: /demo
Pricing
What's next
granularity: "fine" mode for sub-minute windows. A weekly roll-up sibling endpoint is on the roadmap after that.



