---
title: "Get User Sleep Cycle"
method: GET
path: "/v2/summary/sleep_cycle/{user_id}"
tags: ["summary"]
---

# Get User Sleep Cycle

`GET /v2/summary/sleep_cycle/{user_id}`

Get sleep cycle for user_id

## Path parameters

- `user_id` string, uuid, required

## Query parameters

- `start_date` string, date, required — Start date in YYYY-MM-DD
- `end_date` string, date, nullable — End date (inclusive) in YYYY-MM-DD
- `provider` string — Provider oura/strava etc

## Response `200`

Successful Response

- ClientSleepCycleResponse
  - `sleep_cycle` ClientFacingSleepCycle[], required
    - `id` string, uuid, required
    - `sleep_id` string, uuid, required
    - `session_start` string, date-time, required
    - `session_end` string, date-time, required
    - `stage_start_offset_second` integer[], required
    - `stage_end_offset_second` integer[], required
    - `stage_type` VitalSleepStage[], required — Sleep stage classification: `-1`: Unknown or unclassified sleep stage; `1`: Deep sleep; `2`: Light/non-REM sleep; `3`: Rapid Eye Movement sleep; `4`: Awake period; `5`: Manually classified stage.
    - `time_zone` string, nullable
    - `source_provider` union, required — ℹ️ This enum is non-exhaustive.
      - 'oura' | 'fitbit' | 'garmin' | 'whoop' | 'strava' | 'renpho' | 'peloton' | 'wahoo' | 'zwift' | 'freestyle_libre' | 'abbott_libreview' | 'tandem_source' | 'freestyle_libre_ble' | 'eight_sleep' | 'withings' | 'apple_health_kit' | 'manual' | 'ihealth' | 'google_fit' | 'beurer_api' | 'beurer_ble' | 'omron' | 'omron_ble' | 'onetouch_ble' | 'accuchek_ble' | 'contour_ble' | 'dexcom' | 'dexcom_v3' | 'hammerhead' | 'my_fitness_pal' | 'health_connect' | 'samsung_health' | 'polar' | 'cronometer' | 'kardia' | 'whoop_v2' | 'ultrahuman' | 'my_fitness_pal_v2' | 'map_my_fitness' | 'runkeeper' | 'google_health' — ℹ️ This enum is non-exhaustive.
      - 'ayumetrix' | 'spiriplex' | 'ussl' | 'quest' | 'sonora_quest' | 'labcorp' | 'bioreference' | 'us_biotek' | 'manual' | 'sanocardio' | 'ihd' | 'nexus' | 'my_uti' | 'crl' | 'mtl' — ℹ️ This enum is non-exhaustive.
    - `source_type` 'unknown' | 'phone' | 'watch' | 'app' | 'multiple_sources' | 'fingerprick' | 'cuff' | 'manual_scan' | 'automatic' | 'insulin_pump' | 'scale' | 'chest_strap' | 'ring' | 'lab' | 'exercise_machine' | 'earphone', required — ℹ️ This enum is non-exhaustive.
    - `source_app_id` string, nullable
    - `source_device_id` string, uuid, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `user_id` string, uuid, required
    - `source` ClientFacingSource, required — Source summarizes where a sample or a summary is sourced from. At minimum, the source provider is always included.
      - `provider` string, required — Provider slug. e.g., `oura`, `fitbit`, `garmin`.
      - `type` string — The type of the data source (app or device) by which the summary or the timeseries data were recorded. This defaults to `unknown` when Vital cannot extract or infer that information
      - `app_id` string, nullable — The identifier of the app which recorded this summary. This is only applicable to multi-source providers like Apple Health and Android Health Connect.
      - `device_id` string, uuid, nullable — The identifier of the device which recorded this summary.
      - `sport` string, nullable — For workout stream timeseries, this is the standard sport slug of the workout with which the timeseries data are associated. For the `distance` timeseries, this is `wheelchair_pushing` if the user is a wheelchair user, or `null` otherwise. For all summary types and non-workout timeseries, this is always `null`.
      - `workout_id` string, uuid, nullable — For workout stream timeseries, this is the workout ID with which the timeseries data are associated. For all other types, this is always `null`.
      - `name` string — Deprecated. Subject to removal after 1 Jan 2024.
      - `slug` string — Deprecated. Use `provider` instead. Subject to removal after 1 Jan 2024.
      - `logo` string — Deprecated. Subject to removal after 1 Jan 2024.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/tryvital/apis/junction-api.md) · [All operations](https://skmtc.net/tryvital/apis/junction-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryvital/junction-api/revisions/d28f5cec7d79/schema)
