Get Sleep
get_sleepRetrieve sleep data by date range at aggregate, cycle, or stage detail to answer questions about sleep totals, sessions, or full hypnograms.
Instructions
Return the user's sleep data at a chosen level of detail.
Pick the coarsest level that answers the question — results grow with detail:
"aggregate": stage totals per period (default 1 day), one row per period per stage. Best for multi-day questions ("how did I sleep this month").
"cycles": one row per sleep session.
"stages": every stage interval (the full hypnogram); single-night detail.
Sleep spans midnight (starts day N, ends day N+1) — extend the time range accordingly. Stage integers: 0=In Bed, 1=Asleep/Unknown, 2=Awake, 3=Light, 4=Deep, 5=REM. Result timestamps include time zones; translate them to the user's local time zone when known.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "aggregate" only. Assign by "start", "end" or "split" (default "end"). | |
| level | No | Level of detail (see above). | cycles |
| period | No | "aggregate" level only. Period length, e.g. "1d", "1w" (default "1d"). | |
| stages | No | Stage integers to include (default: all). | |
| end_time | Yes | Range end (exclusive). Must include tz (ISO8601). | |
| cycle_gap | No | Minimum interval separating distinct cycles (e.g. "PT2H"). | |
| time_zone | No | "aggregate" only. IANA tz for period bounds; use the user's local one. | |
| gap_stages | No | Stage integers treated as gaps between cycles. | |
| start_time | Yes | Range start (inclusive). Must include tz (ISO8601). | |
| agg_functions | No | "aggregate" level only. E.g. "sum", "mean" (default ["sum"]). | |
| clip_to_range | No | Clip results to the requested range (default True). | |
| merge_contiguous | No | "stages" level only. Merge adjacent same-stage samples (default True). | |
| merge_overlapping | No | "stages" level only. Merge overlapping stages (default True). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |