Skip to content
AFAIFitnessAPI
Health Data

HRV API: How to Get Heart Rate Variability Data

Updated July 24, 2026

HRV is a measured metric from the timing between heartbeats. You read it on-device (Apple HealthKit stores SDNN via HKQuantityTypeIdentifierHeartRateVariabilitySDNN; Android Health Connect gives RMSSD via HeartRateVariabilityRmssdRecord) or from cloud wearable APIs (Oura, WHOOP, Garmin, Fitbit) after sync. It reflects parasympathetic activity, so treat it as a wellness signal, not a stress or recovery measurement. Best pick: Oura or WHOOP for ready-made recovery scoring, Health Connect for a raw RMSSD trend on Android, a chest strap for real-time.

Heart rate variability (HRV) is a measured metric derived from the tiny timing differences between consecutive heartbeats (the RR or interbeat intervals). You get it two ways: from an on-device store — Apple HealthKit on iOS, Android Health Connect on Android — or from a cloud wearable API (Oura, WHOOP, Garmin, Fitbit) after the user's device syncs. A key catch is that providers report different statistics: Apple stores SDNN, while Health Connect and most others report RMSSD, and the two are not directly comparable. Best pick: for recovery/readiness scoring out of the box, Oura or WHOOP; for a raw RMSSD trend on Android, Health Connect; for real-time biofeedback, a chest strap's RR intervals. (For what HRV actually represents, see what is HRV.)

Where you can get HRV

HRV needs a wearable — a phone alone cannot measure it. All provider-specific fields, statistics, and device coverage change often, so treat this table as a starting point and confirm against each vendor's live data dictionary (as of 2026, verify).

SourceHow you access itNotes
Apple HealthKit (iOS)On-device read with per-type permission; no cloud pullHKQuantityTypeIdentifierHeartRateVariabilitySDNN, stored as SDNN in ms. Raw beat series via HKDataTypeIdentifierHeartbeatSeries
Android Health ConnectOn-device read with per-record permission; no cloud pullHeartRateVariabilityRmssdRecordRMSSD in ms
Oura API v2Cloud OAuth 2.0 (post-sync)HRV in sleep data / derivable from interbeat_interval; readiness incorporates nighttime HRV
WHOOP API v2Cloud OAuth 2.0 (post-sync)HRV is a component of the Recovery object (nocturnal)
Garmin Health APICloud OAuth 2.0 (post-sync)HRV Summaries collected over the overnight sleep window; limited device coverage — verify the device list
Fitbit Web APICloud OAuth 2.0 (post-sync)HRV endpoint returns daily RMSSD measured during sleep; intraday HRV needs approval
Chest straps (e.g. Polar)Direct BLE / vendor SDKExpose RR intervals for real-time HRV — verify the specific product/SDK
Aggregators (Terra, Junction, Rook)One normalized schema over many providersTerra lists HRV as a supported normalized type; see wearable data APIs

Strava does not expose HRV.

Measured or estimated?

HRV is measured — the underlying beat-to-beat intervals are real timing data. What must be hedged is the interpretation. RMSSD reflects parasympathetic (vagal) influence on heart rate; it is a correlate, not a direct readout of "vagal tone," "stress," or "recovery." Do not present HRV as something that measures your nervous system or diagnoses anything. Readiness and recovery scores built on HRV (Oura, WHOOP, and others) are proprietary vendor models, so describe them as estimates, not clinical measures. Consumer HRV is a general wellness signal, not a medical diagnostic.

Two accuracy and comparability gotchas to design around:

  • RMSSD vs SDNN are different statistics and are not directly comparable. Apple gives you SDNN; Health Connect, Fitbit, and most others give RMSSD. Label which one you are storing and never mix them in one trend line.
  • Measurement window matters. Most consumer platforms compute HRV over a nocturnal/overnight window for comparability (Oura, WHOOP, Garmin, Fitbit-during-sleep); some apps instead use a guided morning spot reading. Night and morning values are not interchangeable — surface which window a reading came from. And because absolute HRV varies enormously between people, it is meant for within-person trends, not cross-person comparison. Verify which statistic and which time window each provider returns before you normalize.

Which source should you pick?

  • Recovery/readiness scoring out of the box: Oura or WHOOP — nightly HRV is already baked into their readiness/recovery models, so you consume a score rather than build one.
  • Raw RMSSD trend across Android devices: Health Connect HeartRateVariabilityRmssdRecord, read on-device for privacy and no post-sync latency.
  • iOS-native app: HealthKit HKQuantityTypeIdentifierHeartRateVariabilitySDNN — but remember it is SDNN, not RMSSD.
  • Real-time HRV (biofeedback): a chest strap's RR intervals over BLE/SDK; cloud wearable data is latent and lands only after the device syncs.
  • Many brands at once: an aggregator (Terra, Junction, Rook) hands you one normalized HRV schema instead of N integrations. If you are weighing rings against straps, see Oura vs WHOOP.

Before you ship

Field names, statistics (RMSSD vs SDNN), scopes, and device coverage are volatile — re-verify each against the vendor's current data dictionary as of 2026. Label the statistic and the measurement window on every stored value, and frame HRV as a within-person wellness signal that reflects vagal activity, not a diagnostic or a direct measure of stress or recovery.

Frequently asked questions

Is HRV measured or estimated?
The HRV value itself is measured from real beat-to-beat interval timing. What is not a direct measurement is the interpretation: RMSSD reflects parasympathetic (vagal) influence on heart rate, so it is a wellness signal, not a readout of stress, recovery, or nervous-system health. Recovery and readiness scores built on HRV are proprietary vendor models.
What is the difference between RMSSD and SDNN in HRV APIs?
They are two different statistics computed from the same interbeat intervals and are not directly comparable. Apple HealthKit stores SDNN; Android Health Connect, Fitbit, and most other sources report RMSSD. Always label which one you store and never mix them in a single trend.
Can I get HRV from a phone without a wearable?
No. HRV needs a device that captures beat-to-beat intervals, so it requires a wearable (ring, watch, band) or a chest strap. A phone alone cannot produce it. Verify each provider's device coverage in its live data dictionary, as coverage changes.
Why do Oura and WHOOP HRV values differ from a morning app reading?
Most consumer platforms compute HRV over a nocturnal/overnight window for comparability, while some apps use a guided morning spot reading. The two windows are not interchangeable, and absolute HRV varies a lot between people, so HRV is meant for within-person trends. Surface which window each reading came from.
Which API is best for HRV?
For recovery or readiness scoring out of the box, Oura or WHOOP, which bake nightly HRV into their models. For a raw RMSSD trend on Android, Health Connect. On iOS, HealthKit (SDNN). For real-time biofeedback, a chest strap's RR intervals over BLE. To combine many brands, an aggregator like Terra or Junction.

Keep reading

Independent comparison, last reviewed July 24, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.

← All health data · by AIFitnessAPI