---
title: "List Sleep Sessions"
method: GET
path: "/api/v1/users/{user_id}/events/sleep"
tags: ["External: Events"]
---

# List Sleep Sessions

`GET /api/v1/users/{user_id}/events/sleep`

Returns sleep sessions (including naps).

## Path parameters

- `user_id` string, uuid, required

## Query parameters

- `start_date` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and cover the whole day, so a date-only range includes both boundary days.
- `end_date` string, date-time, required — ISO 8601 datetime (e.g. `2023-11-07T05:31:56Z`) or Unix timestamp in seconds. Date-only strings (e.g. `2023-11-07`) are also accepted and cover the whole day, so a date-only range includes both boundary days.
- `include` SleepInclude[]
- `cursor` string, nullable
- `limit` integer
- `provider` 'apple' | 'samsung' | 'garmin' | 'health_connect' | 'google_health' | 'polar' | 'suunto' | 'whoop' | 'strava' | 'oura' | 'fitbit' | 'ultrahuman' | 'sensorbio' | 'withings' | 'unknown' | 'internal' — Supported data providers.
- `source` string, nullable
- `device_model` string, nullable
- `data_source_id` string, uuid, nullable
- `is_nap` boolean, nullable — When true, return only naps; when false, only main sleep. Omit to return both.
- `filter_by_priority` boolean — When true, keep only the highest-priority source's sessions per sleep date (provider/device priority, same ranking as summaries). Defaults to false for backwards compatibility.

## Headers

- `X-Open-Wearables-API-Key` string, nullable

## Response `200`

Successful Response

- PaginatedResponseSleepSession
  - `data` SleepSession[], required
    - `id` string, uuid, required
    - `start_time` string, date-time, required
    - `end_time` string, date-time, required
    - `zone_offset` string, nullable
    - `source` SourceMetadata, required
      - `provider` string, required
      - `source` string, nullable
      - `device` string, nullable
      - `device_type` 'watch' | 'band' | 'phone' | 'scale' | 'ring' | 'other' | 'unknown' — Type of device that collected health data.
      - `device_name` string, nullable, required — Marketing name for ``device``, derived so it cannot drift from the raw model.
    - `duration_seconds` integer, required
    - `sleep_duration_seconds` integer, nullable
    - `time_in_bed_seconds` integer, nullable
    - `efficiency_percent` number, nullable
    - `stages` SleepStagesSummary
      - `awake_minutes` integer, nullable
      - `light_minutes` integer, nullable
      - `deep_minutes` integer, nullable
      - `rem_minutes` integer, nullable
    - `sleep_stage_intervals` SleepStage[], nullable
      - `stage` 'in_bed' | 'awake' | 'sleeping' | 'light' | 'deep' | 'rem' | 'unknown', required
      - `start_time` string, date-time, required
      - `end_time` string, date-time, required
    - `is_nap` boolean
  - `pagination` Pagination, required
    - `next_cursor` string, nullable — Cursor to fetch next page, null if no more data
    - `previous_cursor` string, nullable — Cursor to fetch previous page
    - `has_more` boolean, required — Whether more data is available
    - `total_count` integer, nullable — Total number of records matching the query
  - `metadata` TimeseriesMetadata, required
    - `resolution` 'raw' | '1min' | '5min' | '15min' | '1hour' — Bucket width requested when reading time series. RAW returns stored samples untouched.
    - `sample_count` integer, nullable
    - `start_time` string, date-time, nullable
    - `end_time` string, date-time, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-23** `6962739bc168` — 1 info
  - added the new optional `query` request parameter `is_nap`
- **2026-09-16** `b628830d5f47` — 7 info
  - added the new optional `query` request parameter `data_source_id`
  - added the new optional `query` request parameter `device_model`
  - added the new optional `query` request parameter `include`
  - added the new optional `query` request parameter `provider`
  - …3 more
- **2026-08-08** `37c1c527cd8f` — 3 info
  - added the optional property `data/items/source/device_type` to the response with the `200` status
  - added the optional property `data/items/source/source` to the response with the `200` status
  - added the required property `data/items/source/device_name` to the response with the `200` status

[Change history](https://skmtc.dev/openwearables/apis/open-wearables-api/changes/api/v1/users/:user_id/events/sleep/get.md)

---

[API](https://skmtc.dev/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.dev/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openwearables/apis/open-wearables-api/revisions/6962739bc168?raw)
