Documentation

Keely for developers

Normals

The person’s own normal for each of Recovery’s inputs, and the range around it, from their latest scored night.

Updated

On this page
  1. GET /v1/normals

GET /v1/normals

Scope
nights; profile for sleep_goal_minutes

The person’s current 30-night normals, from their latest scored night: the normal is a weighted average with a 7-night half-life, and the range is ± one standard deviation. sleep_goal_minutes needs profile; without it, it’s left out and named in not_allowed. Before the first Recovery, the normals are null with a note.

Response
{
  "from_night": "2026-09-27",
  "hrv_ms": { "normal": 61.5, "sd": 6.2, "range": [55.3, 67.7], "nights": 30 },
  "resting_hr_bpm": { "normal": 51, "sd": 1.5, "range": [49.5, 52.5], "nights": 30 },
  "breathing_rate_per_min": { "normal": 14, "sd": 0.4, "range": [13.6, 14.4], "nights": 30 },
  "skin_temp_deviation_c": { "normal": 0, "sd": 0.25, "range": [-0.25, 0.25], "nights": 30 },
  "sleep_goal_minutes": 470,
  "note": "Normal is the 30-night weighted average; the range is ± one standard deviation.",
  "as_of": "2026-09-27T15:20:00Z",
  "methodology": "https://meetkeely.com/methodology"
}