Skip to content
AFAIFitnessAPI
Health Data

VO2 Max API: How to Get VO2 Max Data

Updated July 24, 2026

You get VO2 max by reading an on-device store (Apple HealthKit HKQuantityTypeIdentifierVO2Max, Android Health Connect Vo2MaxRecord) or by pulling a cloud wearable API (Garmin User Metrics, Fitbit's Cardio Fitness Score, Oura) over OAuth 2.0. Be honest that consumer VO2 max is estimated, not lab-measured: it is modeled from heart-rate response versus pace or power plus demographics, so it is a fitness-trend signal, not a clinical value. Not every provider exposes it and coverage is device-dependent. Best pick: HealthKit for Apple apps, Garmin or Fitbit for a cross-device trend, and an aggregator when you mix brands.

To get VO2 max into your app, you read it from an on-device store (Apple HealthKit HKQuantityTypeIdentifierVO2Max, Android Health Connect Vo2MaxRecord) or pull it from a cloud wearable API (Garmin User Metrics, Fitbit's Cardio Fitness Score, Oura). The one thing to be honest about before any of that: consumer VO2 max is estimated, not lab-measured — it is modeled from your heart-rate response versus pace or power during activity plus demographics, so it is a fitness-trend signal, not a clinical value. Not every provider exposes it, and coverage is device-dependent. Best pick: read HKQuantityTypeIdentifierVO2Max in an Apple-centric app, use Garmin or Fitbit for a cross-device trend, and reach for an aggregator when you mix brands. For what the number actually represents, see what is VO2 max.

Where you can get VO2 max

VO2 max shows up in two access models: on-device stores you read with the user's permission (no cloud pull), and cloud wearable APIs behind OAuth 2.0 that deliver data after the user's device syncs. Field names and device coverage change often, so treat everything below as "as of 2026, verify in the provider's data dictionary."

SourceHow you access itNotes
Apple HealthKitOn-device read of HKQuantityTypeIdentifierVO2Max"Maximal oxygen consumption during exercise"; iOS-only, no server-to-server pull
Android Health ConnectOn-device read of Vo2MaxRecordIncludes a measurementMethod field (e.g. metabolic-cart vs. estimated) — verify the exact enum values in the reference
Garmin Health APICloud OAuth 2.0; VO2 max under User Metrics summariesPost-sync latency; device-dependent
Fitbit Web APICloud OAuth 2.0; Cardio Fitness Score endpoint (cardioscore)Labeled "Cardio Fitness Score (VO2 Max)"
Oura API v2Cloud OAuth 2.0; daily VO2 max valueVerify the exact endpoint name in the live docs
WHOOP APICloud OAuth 2.0Not a headline field historically — verify against the current v2 data dictionary before claiming it
StravaNo VO2 max field; activity data only
Aggregators (Terra, Junction, Rook)One normalized schema across many providersUseful to reconcile differently-named "VO2 max" / "Cardio Fitness" fields

A key caveat: not all providers expose VO2 max, and where they do, estimating it often requires qualifying outdoor activities (GPS runs or walks with heart rate). Verify per provider and per device rather than assuming the field is populated.

Measured or estimated?

Estimated — on every consumer device. True VO2 max is a lab measurement: a graded exercise test with a metabolic cart measuring the oxygen you actually consume at max effort. What a watch or ring reports is a model, derived from your heart-rate response relative to pace or power during activity, combined with profile data like age, weight, and sex. Two things follow from that:

  • Values update infrequently and can go stale. Many devices only refresh the estimate after qualifying outdoor activities with heart rate and pace or GPS. Indoor-only or low-activity users may see stale or absent values.
  • Numbers are not comparable across brands. Vendors label it differently ("VO2 max," "Cardio Fitness Score," "Cardio Fitness") and use different estimation models, so the same person can get different values on different devices. Treat it as a within-person trend, not a cross-brand or clinical figure.

Frame it in your UI as a general fitness and wellness signal, not a diagnostic. Do not publish a specific accuracy percentage or imply clinical validity — accuracy varies with device, fitness level, and activity type, and none of these are lab-grade.

Which should you pick?

  • Apple ecosystem: read HKQuantityTypeIdentifierVO2Max from HealthKit on-device — the least-friction path for an iOS app, and it inherits whatever the Apple Watch estimated.
  • Cross-device trend: Garmin User Metrics VO2 max or Fitbit's Cardio Fitness Score, pulled server-side via OAuth 2.0 after the user's device syncs.
  • Mixing brands: normalize through an aggregator so you handle one schema instead of several differently-named fields. See wearable data APIs for that route.
  • Android: read Vo2MaxRecord from Health Connect on-device; check its measurementMethod so you know whether a given value is estimated or (rarely) from a metabolic cart.

If you are weighing the on-device stores against each other, Apple HealthKit vs Google Health Connect covers how the two permissioned-read models differ.

Before you ship

Confirm which providers actually expose VO2 max and on which devices — coverage is uneven and volatile. Re-check field names, endpoints, and the Health Connect measurementMethod enum against each vendor's current data dictionary before you build. And keep the honest framing front and center: consumer VO2 max is an estimate and a wellness signal, not a lab measurement or a medical diagnostic.

Frequently asked questions

Is VO2 max from a watch accurate?
Consumer VO2 max is an estimate, not a lab measurement, so treat it as a fitness-trend signal rather than a precise value. Accuracy varies with device, fitness level, and activity type, and the estimate often only refreshes after qualifying outdoor activities with heart rate and pace or GPS. There is no single accuracy percentage to quote; verify each provider's method in its data dictionary.
Which APIs expose VO2 max data?
Apple HealthKit exposes HKQuantityTypeIdentifierVO2Max on-device, Android Health Connect exposes Vo2MaxRecord, and cloud wearable APIs include Garmin (User Metrics), Fitbit (Cardio Fitness Score), and Oura. WHOOP has not historically been a headline field, and Strava has no VO2 max field. Not all providers expose it and coverage is device-dependent, so verify per provider as of 2026.
Is consumer VO2 max measured or estimated?
Estimated on every consumer device. True VO2 max comes from a lab graded-exercise test with a metabolic cart. Watches and rings model it from your heart-rate response relative to pace or power during activity plus profile data like age, weight, and sex. Health Connect's Vo2MaxRecord even carries a measurementMethod field distinguishing estimated from metabolic-cart values.
Can I compare VO2 max across Garmin, Fitbit, and Apple?
Not directly. Vendors label it differently (VO2 max, Cardio Fitness Score, Cardio Fitness) and use different estimation models, so the same person can get different numbers on different devices. Use it as a within-person trend, and normalize through an aggregator if you need one consistent field across brands.
How do I read VO2 max in an iOS or Android app?
On iOS, request permission and read HKQuantityTypeIdentifierVO2Max from HealthKit on-device; there is no Apple cloud pull. On Android, read Vo2MaxRecord from Health Connect with the granted permission. Both are permissioned on-device reads, so verify the current type and field names in Apple's and Google's data dictionaries before you build.

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