Below is a Garmin Health data dictionary highlighting the different data types and their subsequent meanings.
local_time_offset_in_hours | Calendar time is based off of GMT-0 (UTC). The offset is the number of hours to add or subtract to the time to get the local time |
duration_in_seconds | Duration in seconds of the recording. |
minute_bpm | Average heart rate in beats per minute for that minute |
minute_stress | Stress Details summaries contain the user’s stress level values for a given day. Stress levels are provided as 3-minute averages of the real-time stress scores generated on the device with values ranging from 1 to 100. A value of -1 means there was not enough data to detect stress, and -2 means there was too much motion (e.g. the user was walking or running). Scores between 1 and 25 are considered “rest” (i.e. not stressful), 26-50 as “low” stress, 51-75 “medium” stress, and 76-100 as “high” stress. These numbers are derived based on a combination of many device sensors and will automatically adjust to the wearer of the device and gain accuracy over time as the stress algorithms learn the user’s natural biometric norms. Stress values from the Health API are exactly the stress values shown on Garmin Connect. |
minute_sleep | If pulse ox (SpO2) is turned on during sleep, then you'll see this data. This is the blood oxygen saturation recorded during sleep |
minute_pulse_ox | Oxygen Saturation level in that minute |
minute_body_battery | body battery stress score 2-100 |
epoch_activity_type | Text description of the activity type. |
epoch_active_calories | Active kilocalories (dietary calories) burned during the monitoring period. This includes only the calories burned by the activity and not calories burned as part of the basal metabolic rate (BMR). |
epoch_active_time | Portion of the monitoring period (in seconds) in which the device wearer was active for this activity type. The sum of active times of all epochs of the same start time (and different activity types) should be equal to the duration. |
epoch_met | MET (Metabolic Equivalent of Task) value for the active time for this activity type. See Appendix B. |
epoch_intensity | Qualitative measure of intensity. See Appendix A. |
epoch_max_motion_intensity | The largest motion intensity score of any minute in this monitoring period. See Appendix C for information on motion intensity. |
epoch_mean_motion_intensity | The average of motion intensity scores for all minutes in this monitoring period. See Appendix C for information on motion intensity. |
aggregate_distance | Distance traveled in meters in the Epoch period (15m) |
aggregate_steps | total steps within a certain period of time (see the "duration" of the entry) |
daily_activity_type | This field is included in daily summaries for backwards compatibility purposes. It can be ignored and will always default to WALKING. |
daily_activity_calories | Active kilocalories (dietary calories) burned through actual movement and activity during the monitoring period. |
daily_activity_time | Portion of the monitoring period (in seconds) in which the device wearer was considered Active. This relies on heuristics internal to each device. |
daily_bmr_calories | BMR Kilocalories burned by existing Basal Metabolic Rate (calculated based on user height/weight/age/other demographic data). |
daily_steps | Count of steps recorded during the monitoring period. |
daily_distance daily_moderate_duration | Cumulative duration of activities of moderate intensity, lasting at least 600 seconds at a time. Moderate intensity is defined as activity with MET value range 3-6. |
daily_vigorous_duration | Cumulative duration of activities of vigorous intensity, lasting at least 600 seconds at a time. Vigorous intensity is defined as activity with MET value > 6. |
daily_floor_climbed | Number of floors climbed during the monitoring period. |
daily_min_hr | Minimum of heart rate values captured during the monitoring period, in beats per minute. |
daily_max_hr | Maximum of heart rate values captured during the monitoring period, in beats per minute. |
daily_avg_hr | Average of heart rate values captured during the last 7 days, in beats per minute. The average heart rate value for the monitoring period can be calculated based on the data from timeOffsetHeartRateSamples. |
daily_rest_hr | Average heart rate at rest during the monitoring period, in beats per minute. |
daily_max_stress | The highest stress level measurement taken during this monitoring period. |
daily_avg_stress | An abstraction of the user’s average stress level in this monitoring period, measured from 1 to 100, or -1 if there is not enough data to calculate average stress. Scores between 1 and 25 are considered “rest” (i.e not stressful), 26-50 as “low” stress, 51-75 “medium” stress, and 76-100 as “high” stress. |
daily_stress_duration | The number of seconds in this monitoring period where stress level measurements were in the stressful range (26-100). |
daily_rest_stress_duration | The number of seconds in this monitoring period where stress level measurements were in the restful range (1 to 25). |
daily_activity_stress_duration daily_low_stress_duration | The portion of the user’s stress duration where the measured stress score was in the low range (26-50). |
daily_medium_stress_duration | The portion of the user’s stress duration where the measured stress score was in the medium range (51-75). |
daily_high_stress_duration | The portion of the user’s stress duration where the measured stress score was in the high range (76-100). |
daily_stress_qualifier |
A qualitative label applied based on all stress measurements in this monitoring period. Possible values: unknown, calm, balanced, stressful, very_stressful, calm_awake, balanced_awake, stressful_awake, very_stressful_awake. This matches what the user will see in Garmin Connect. It is recommended that implementations that use the stressQualifier be tolerant of unknown values in case more granular values are added. |
Appendix A- Wellness monitoring intensity
Monitoring Intensity | Notes |
SEDENTARY | Little to no activity monitored. This could be due to minimal movement, sitting, resting, or sleeping. |
ACTIVE | Some activity monitored. A brisk walk could achieve this intensity. |
HIGHLY_ACTIVE | High activity monitored. Running or speed walking could achieve this intensity. |
Appendix B- Wellness monitoring intensity
Metabolic Equivalent of Task (MET) is an official measure of activity intensity. Garmin’s calculation of MET is an estimation based on the biometric data provided (height, weight, date of birth, gender) and improves in accuracy if heart rate data is also captured. The following linked document hosted by the US Centers for Disease Control and Prevention provides detailed information on MET and physical
Appendix C – Motion Intensity
Motion Intensity is a numerical abstraction of low-level accelerometer data, provided for use in further analysis. This data is not exposed directly to the consumer by Garmin but is used in in the creation of other metrics.
Motion Intensity is calculated at minute-level granularity as a number between 0 and 7, with 0 being absolutely still and 7 being constant, sharp motion.
Unlike steps, distance, or activity type, which take net movement in to account, motion intensity will increase even if the user does not move in space.
For instance, if a user were to jump up and down or fidget with a pencil they would not get credit for any distance, but their motion intensity scores for that monitoring period would increase. It is very common to see mid-range max motion intensities even for sedentary epochs as most people do not sit absolutely still.