Each summary is uniquely identified by its ID ($.id).

Given the same ID, the latest version of a summary you received replaces all its previous versions.

Properties

event_type
const string
required

Constant: daily.data.sleep.updated

team_id
string
required
user_id
string
required
client_user_id
string
required
data
ClientFacingSleep
required
user_id
string
required

User id returned by vital create user request. This id should be stored in your database against the user and used for all interactions with the vital api.

id
string
required
date
string
requireddeprecated

Date of the specified record, formatted as ISO8601 datetime string in UTC 00:00. Deprecated in favour of calendar_date.

calendar_date
string
required

Date of the sleep summary in the YYYY-mm-dd format. This generally matches the sleep end date.

bedtime_start
string
required

UTC Time when the sleep period started

bedtime_stop
string
required

UTC Time when the sleep period ended

type
enum<string>
required

long_sleep: >=3 hours of sleep; short_sleep: <3 hours of sleep; acknowledged_nap: User-acknowledged naps, typically under 3 hours of sleep; unknown: The sleep session recording is ongoing. Available options: long_sleep, short_sleep, acknowledged_nap, unknown.

timezone_offset
anyOf | null

Timezone offset from UTC as seconds. For example, EEST (Eastern European Summer Time, +3h) is 10800. PST (Pacific Standard Time, -8h) is -28800::seconds Any of:

  • integer
  • null
duration
integer
required

Total duration of the sleep period (sleep.duration = sleep.bedtime_end - sleep.bedtime_start)::seconds

total
integer
required

Total amount of sleep registered during the sleep period (sleep.total = sleep.rem + sleep.light + sleep.deep)::seconds

awake
integer
required

Total amount of awake time registered during the sleep period::seconds

light
integer
required

Total amount of light sleep registered during the sleep period::seconds

rem
integer
required

Total amount of REM sleep registered during the sleep period, minutes::seconds

deep
integer
required

Total amount of deep (N3) sleep registered during the sleep period::seconds

score
anyOf | null

A value between 1 and 100 representing how well the user slept. Currently only available for Withings, Oura, Whoop and Garmin::scalar Any of:

  • integer
  • null
hr_lowest
anyOf | null

The lowest heart rate (5 minutes sliding average) registered during the sleep period::beats per minute Any of:

  • integer
  • null
hr_average
anyOf | null

The average heart rate registered during the sleep period::beats per minute Any of:

  • integer
  • null
efficiency
anyOf | null

Sleep efficiency is the percentage of the sleep period spent asleep (100% * sleep.total / sleep.duration)::perc Any of:

  • number
  • null
latency
anyOf | null

Detected latency from bedtime_start to the beginning of the first five minutes of persistent sleep::seconds Any of:

  • integer
  • null
temperature_delta
anyOf | null

Skin temperature deviation from the long-term temperature average::celcius Any of:

  • number
  • null
skin_temperature
anyOf | null

The skin temperature::celcius Any of:

  • number
  • null
hr_dip
anyOf | null

Sleeping Heart Rate Dip is the percentage difference between your average waking heart rate and your average sleeping heart rate. In health studies, a greater “dip” is typically seen as a positive indicator of overall health. Currently only available for Garmin::perc Any of:

  • number
  • null
state
anyOf | null

Some providers can provide updates to the sleep summary hours after the sleep period has ended. This field indicates the state of the sleep summary. For example, TENTATIVE means the summary is an intial prediction from the provider and can be subject to change. Currently only available for Garmin and EightSleep::str Any of:

  • SleepSummaryState
  • null
average_hrv
anyOf | null

The average heart rate variability registered during the sleep period::rmssd Any of:

  • number
  • null
respiratory_rate
anyOf | null

Average respiratory rate::breaths per minute Any of:

  • number
  • null
source
ClientFacingSource
required

Source the data has come from.

provider
string
required

Provider slug. e.g., oura, fitbit, garmin.

type
string | null

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
anyOf | null

The identifier of the app which recorded this summary. This is only applicable to multi-source providers like Apple Health and Android Health Connect. Any of:

  • string
  • null
name
string | null
deprecated

Deprecated. Subject to removal after 1 Jan 2024.

slug
string | null
deprecated

Deprecated. Use provider instead. Subject to removal after 1 Jan 2024.

logo
string | null
deprecated

Deprecated. Subject to removal after 1 Jan 2024.

sleep_stream
anyOf | null

Any of:

  • ClientFacingSleepStream
  • null