Skip to content

HRV API

Heart Rate Variability data from every wearable, in one schema

RMSSD and SDNN heart-rate variability from rings, straps and watches — as separate, clearly-labelled streams.

Heart Rate Variability visualisation

6/9

providers connectable today

3

webhook event types

Canonical unit

milliseconds

What heart rate variability looks like through one API

HRV is the single most misused number in consumer health data. It is reported by nearly every serious wearable, it is the backbone of most recovery and readiness features, and it is almost never comparable between two devices — because "HRV" is not one measurement. It is a family of statistics computed over inter-beat intervals, and providers pick different ones.

WearLink does not flatten that difference. RMSSD and SDNN are emitted as separate series — series.heart_rate_variability_rmssd.created and series.heart_rate_variability_sdnn.created — because averaging them together produces a number with no physiological meaning. Apple Health reports SDNN; Oura and WHOOP work in RMSSD. If your code treats those as one field, your baselines are wrong for a subset of users and you will not notice.

The summary event carries the provider's own headline HRV figure with its method labelled, so you can either use the provider's convention or compute your own baseline from the underlying series.

Where providers disagree

RMSSD and SDNN are different statistics

RMSSD reflects short-term, parasympathetically-mediated variation; SDNN reflects total variability over the measurement window and scales with window length. SDNN values are typically larger than RMSSD for the same person. Charting them on one axis produces an artificial step change whenever a user switches device.

Measurement windows are not the same

Some providers report an overnight average across the whole sleep period, some a fixed early-morning window, some a rolling 5-minute sample. A longer window mechanically increases SDNN. Compare a user to their own history on the same device, not to a population figure or to their previous device.

Artefact filtering is invisible and inconsistent

HRV is computed from inter-beat intervals, and optical sensors miss and mis-time beats. Every vendor applies its own artefact-rejection pass before computing the statistic, and none of them tell you how aggressive it was or how many beats were discarded. Two devices that recorded the same night can therefore differ because of cleaning, not physiology. A night with poor sensor contact can produce a plausible-looking HRV value derived from a small fraction of the intervals, with nothing in the payload to warn you. Where a provider exposes a confidence or coverage figure WearLink passes it through; where it does not, treat single-night swings with suspicion and prefer multi-day baselines.

Absolute values are close to meaningless across people

HRV varies enormously between individuals for reasons unrelated to fitness or recovery — age dominates. Products that show a user their raw HRV next to a "normal range" tend to generate support tickets. Baseline per user, then show deviation.

Webhook events for heart rate variability

Summary: heart_rate_variability.created

Series streams:

  • series.heart_rate_variability_rmssd.created
  • series.heart_rate_variability_sdnn.created

The full catalogue is in the event catalogue.

FAQ

Heart Rate Variability — frequently asked questions

Does WearLink return RMSSD or SDNN?
Both, as separate event streams, labelled by method. WearLink does not convert between them because no valid conversion exists — they measure different things.
Which devices report HRV through WearLink?
Oura, WHOOP, Fitbit, Garmin, Polar and Ultrahuman on the cloud side, plus Apple Health, Health Connect and Samsung Health via SDK push. Coverage varies by hardware generation within each brand.
Can I build a readiness score from WearLink HRV data?
Yes, and it is a common use of the series streams. Use a per-user rolling baseline over at least 14 days and express the current value as a deviation from it. Do not mix RMSSD and SDNN inside one baseline.

Get heart rate variability from every device your users own

Free for up to 3 connected users. No credit card. Your first API key is issued the moment you sign up.