Send a date and a place. Get back the human body-clock frame — when to get light, when to sleep, when you'll focus or crash, when caffeine becomes a mistake, the vitamin-D and UV windows, jet-lag recovery, and more. We take the sun's position at JPL-ephemeris accuracy and lock peer-reviewed chronobiology onto it — astronomy and biology triangulated onto one timeline, to the millisecond, for your exact spot on Earth. Every call is a pure function of the date and place you send: we keep no PII, no request contents, and no health data — only an anonymous count of your active users, for billing. There is nothing personal to leak, retain, or inherit as a liability.
Every app that touches sleep, light, focus, or health needs the body clock. Almost none want to build a chronobiology engine to get it. So we built it once — the single source of circadian truth any product can call — so you ship the feature, not the research.
Every window this API returns traces to named, peer-reviewed chronobiology — not a wellness heuristic and not a fixed clock-time rule.
| Capability | Cycles Arc Circadian API | Typical wellness app |
|---|---|---|
| Basis for every window | Named, cited, peer-reviewed chronobiology | Undocumented heuristics |
| Astronomical basis | Sun geometry at JPL-ephemeris accuracy | None — a fixed clock, no astronomy |
| Local times | Millisecond-exact for any place and date | Fixed clock-time rules (e.g. "sleep by 10pm") |
| Place awareness | Computed from your exact latitude/longitude and sun | Ignores where you actually are |
| Your data | No PII, no request contents, no health data at rest — only an anonymous active-user count for billing | Accounts, tracking, data retention |
| Contested evidence | Labelled evidence:"CONTESTED" with the failed replication | Overclaims, or stays silent |
| Access model | Single GET call, flat JSON response | Closed app, no API |
valid:0 with a note, never a fabricated time.
Every verb below is live on the API today — the same date-and-place in, flat JSON out.
A calendar date and a latitude/longitude — plain query parameters, no payloads. Add your habitual wake hour for a personalised answer, or leave it out to anchor to local sunrise.
The sun's exact geometry — computed at JPL-ephemeris accuracy — for that place and date sets the anchors: sunrise, solar noon, twilight, elevation, to the millisecond.
Phase markers, light and melatonin windows, alertness peaks, and health windows are located against your solar day, each following named chronobiology.
Flat, predictable fields — exact local times, and an evidence label where a finding is contested, so you always know how firm a number is.
Give users a real bedtime, wind-down, and wake window for where they actually are — plus the caffeine cutoff and the power-nap window, all computed, not guessed.
Drive tunable-white schedules from real melanopic targets: bright day block, evening wind-down CCT, and a night dark block, updated for the date and place.
Overlay the body-clock frame on your own biometrics — phase, alertness peaks, hazard troughs, and jet-lag recovery — without building a chronobiology engine.
Turn a route or roster into a re-entrainment plan: shift size and direction, days to adapt, the light strategy, and the misalignment score.
No heuristics, no hand-waving. Each window traces to a named, peer-reviewed paper — the citations are the product. Here's the science behind the numbers.
/v1/circadian/moonlight verb returns the exact lunar geometry over your sleep block and the reported effect sizes, explicitly labelled evidence:"CONTESTED" alongside the replication that failed to find them. We show it honestly rather than overclaim — that honesty is part of the brand.
Access is arranged directly, scoped to what you are building. Tell us the verbs you need, the volume you expect, and the shape of your product — we size the capacity and the terms around it rather than sell you a shelf plan.
/v1/circadian/moonlight returns the reported effect sizes but labels them evidence:"CONTESTED", and the Science section links both papers. We'd rather show the disagreement than pretend it away.wake_local (your habitual wake hour). Leave it out and the answer is sun-entrained — anchored to your local sunrise — and the response labels it anchor_source:"sun_entrained" so you always know which frame you're in.