Skip to content

Heart Rate API

Heart Rate data from every wearable, in one schema

Continuous, resting and workout heart rate from every major wearable, in one schema and one unit.

Heart Rate visualisation

8/12

providers connectable today

6

webhook event types

Canonical unit

beats per minute

What heart rate looks like through one API

Heart rate is the most widely available signal in connected health and the one where sampling density differs most dramatically between providers. The same nominal metric can arrive as one resting value per day, a reading every five minutes, or a full second-by-second stream during a workout — and the difference is not documented anywhere consistent.

WearLink separates the summary object from the high-resolution series so you can ask for what you need. heart_rate.created gives you the daily aggregate; series.heart_rate.created gives you the underlying samples where the provider exposes them. Resting heart rate, walking average and one-minute heart-rate recovery are distinct streams rather than fields buried in a daily blob, because products typically need one and not the others.

Everything is delivered in beats per minute with UTC timestamps and the originating device recorded, so a user who wears a chest strap for training and a ring overnight produces one coherent timeline rather than two incompatible ones.

Where providers disagree

Sampling density varies by orders of magnitude

A chest strap streams continuously during exercise; an optical wrist sensor may sample every few minutes at rest and densely only during a recorded workout; a ring typically samples on a fixed schedule overnight. Code that assumes evenly-spaced samples will produce misleading averages. Use the timestamps, not the index.

"Resting heart rate" is a computed figure, not a measurement

Each provider computes RHR with its own algorithm and window — lowest sustained value overnight, an average of the lowest N minutes, or a proprietary variant. Values differ by several bpm between devices for the same person on the same night. Use series.resting_heart_rate.created for trends within a device, not for cross-device comparison.

Optical sensors degrade under motion

Wrist-based optical readings during high-intensity or high-cadence activity are materially less accurate than a chest strap, and providers do not consistently flag when a reading is low-confidence. If your product does anything clinical or safety-adjacent with peak heart rate, prefer strap sources and record which device produced each sample.

Webhook events for heart rate

Summary: heart_rate.created

Series streams:

  • series.heart_rate.created
  • series.resting_heart_rate.created
  • series.walking_heart_rate_average.created
  • series.heart_rate_recovery_one_minute.created
  • series.atrial_fibrillation_burden.created

The full catalogue is in the event catalogue.

FAQ

Heart Rate — frequently asked questions

Can I get second-by-second heart rate during a workout?
Where the provider exposes it, yes — via series.heart_rate.created alongside the workout record. Resolution is provider- and device-dependent; the samples carry their own timestamps so you can see the true spacing.
Is resting heart rate comparable between Fitbit and Garmin?
Not reliably. Both are computed values with different algorithms and windows. Trends within one device are dependable; a step change when a user switches devices is usually the algorithm, not the user.
Does WearLink expose AFib burden?
series.atrial_fibrillation_burden.created is in the normalised catalog for providers that report it. Note that this is a regulated feature on the device side and availability is restricted by hardware and region.

Get heart rate 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.