WHOOP · Schema
WHOOP Sleep
Schema for a WHOOP Sleep activity. Sleep activities can be primary nightly sleeps or short naps and include stage-by-stage breakdowns (light, slow-wave, REM), sleep performance percentage, and physiological measurements such as respiratory rate.
FitnessWearablesHealthRecoverySleepStrainHeart RateWorkoutBiometrics
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique sleep identifier (v2 UUID). |
| v1_id | integer | Legacy v1 numeric ID (deprecated, sunsetting 2026). |
| cycle_id | integer | Physiological cycle this sleep belongs to. |
| user_id | integer | |
| created_at | string | |
| updated_at | string | |
| start | string | |
| end | string | |
| timezone_offset | string | |
| nap | boolean | True if the activity is a nap rather than primary sleep. |
| score_state | string | |
| score | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://api-evangelist.com/schemas/whoop-co/whoop-sleep-schema.json",
"title": "WHOOP Sleep",
"description": "Schema for a WHOOP Sleep activity. Sleep activities can be primary nightly sleeps or short naps and include stage-by-stage breakdowns (light, slow-wave, REM), sleep performance percentage, and physiological measurements such as respiratory rate.",
"type": "object",
"required": ["id", "cycle_id", "user_id", "created_at", "updated_at", "start", "end", "timezone_offset", "nap", "score_state"],
"properties": {
"id": {"type": "string", "format": "uuid", "description": "Unique sleep identifier (v2 UUID)."},
"v1_id": {"type": "integer", "format": "int64", "description": "Legacy v1 numeric ID (deprecated, sunsetting 2026)."},
"cycle_id": {"type": "integer", "format": "int64", "description": "Physiological cycle this sleep belongs to."},
"user_id": {"type": "integer", "format": "int64"},
"created_at": {"type": "string", "format": "date-time"},
"updated_at": {"type": "string", "format": "date-time"},
"start": {"type": "string", "format": "date-time"},
"end": {"type": "string", "format": "date-time"},
"timezone_offset": {"type": "string"},
"nap": {"type": "boolean", "description": "True if the activity is a nap rather than primary sleep."},
"score_state": {"type": "string", "enum": ["SCORED", "PENDING_SCORE", "UNSCORABLE"]},
"score": {
"type": "object",
"properties": {
"stage_summary": {
"type": "object",
"properties": {
"total_in_bed_time_milli": {"type": "integer"},
"total_awake_time_milli": {"type": "integer"},
"total_no_data_time_milli": {"type": "integer"},
"total_light_sleep_time_milli": {"type": "integer"},
"total_slow_wave_sleep_time_milli": {"type": "integer"},
"total_rem_sleep_time_milli": {"type": "integer"},
"sleep_cycle_count": {"type": "integer"},
"disturbance_count": {"type": "integer"}
}
},
"sleep_needed": {
"type": "object",
"properties": {
"baseline_milli": {"type": "integer"},
"need_from_sleep_debt_milli": {"type": "integer"},
"need_from_recent_strain_milli": {"type": "integer"},
"need_from_recent_nap_milli": {"type": "integer"}
}
},
"respiratory_rate": {"type": "number", "format": "float"},
"sleep_performance_percentage": {"type": "number", "format": "float"},
"sleep_consistency_percentage": {"type": "number", "format": "float"},
"sleep_efficiency_percentage": {"type": "number", "format": "float"}
}
}
}
}