HRV API: How to Get Heart Rate Variability Data
Updated July 24, 2026
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).
| Source | How you access it | Notes |
|---|---|---|
| Apple HealthKit (iOS) | On-device read with per-type permission; no cloud pull | HKQuantityTypeIdentifierHeartRateVariabilitySDNN, stored as SDNN in ms. Raw beat series via HKDataTypeIdentifierHeartbeatSeries |
| Android Health Connect | On-device read with per-record permission; no cloud pull | HeartRateVariabilityRmssdRecord — RMSSD in ms |
| Oura API v2 | Cloud OAuth 2.0 (post-sync) | HRV in sleep data / derivable from interbeat_interval; readiness incorporates nighttime HRV |
| WHOOP API v2 | Cloud OAuth 2.0 (post-sync) | HRV is a component of the Recovery object (nocturnal) |
| Garmin Health API | Cloud OAuth 2.0 (post-sync) | HRV Summaries collected over the overnight sleep window; limited device coverage — verify the device list |
| Fitbit Web API | Cloud 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 SDK | Expose RR intervals for real-time HRV — verify the specific product/SDK |
| Aggregators (Terra, Junction, Rook) | One normalized schema over many providers | Terra 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