> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/help-center/help-topics/data-api-sdk/data-model-fields-and-units/resting-vs-average-hr-scope.md).

# What's the difference between resting and average HR in sleep?

The two fields cover different scopes, and resting HR on sleep depends on the provider.

**The two fields cover different scopes, and resting HR on sleep depends on the provider.**

* `avg_hr_bpm` is the average heart rate across the night.
* `resting_hr_bpm` depends on the provider. Oura reports the lowest heart rate of the night, while Garmin, Fitbit and WHOOP use their own resting heart rate value, which for Garmin and Fitbit is the day's value. Not all providers populate both.

Resting HR carries more significance in **daily** payloads, where it reflects the user's normal day-level resting rate. Apple Health, Fitbit and Garmin daily payloads carry it. Oura daily payloads don't, so take Oura's value from the sleep payload.

Small discrepancies against a source health app are usually a scope mismatch: the app typically shows a whole-day value, which corresponds to the daily payload, while an Oura sleep payload's `resting_hr_bpm` is the lowest heart rate of that session. One-BPM differences can also be SDK rounding and are within normal variance.

Some providers (for example Polar) do not measure resting HR during sleep, so `resting_hr_bpm` is expected to be absent there. This reflects what the provider measures rather than data loss.

See the [data models reference](https://docs.tryterra.co/reference/health-and-fitness-api/data-models) for field definitions.
