Respiratory Rate & SpO2 data from every wearable, in one schema
Breathing rate, oxygen saturation and breathing-disturbance streams from rings and watches.
6 / 8
Providers connectable today
6
Webhook events in this family
breaths per minute; SpO2 as a percentage
Canonical units
What respiratory rate & spo2 looks like through one API
Respiratory rate and blood-oxygen saturation are overnight metrics on nearly every device that reports them — the sensors need stillness, so daytime values are sparse or absent. This shapes how they should be used: as night-over-night trends, aligned to a sleep session, not as spot readings.
WearLink emits respiratory rate as both a daily summary and a series, and carries SpO2 on series.oxygen_saturation.created alongside the breathing-disturbance streams that some providers derive from it. Perfusion index is included where reported, because it is the signal that tells you whether an SpO2 reading was taken under conditions that make it trustworthy.
These metrics are the closest consumer wearables come to a clinical measurement, which is exactly why the framing matters. They are screening-adjacent signals from unregulated sensors, and both the providers' terms and most regulators are explicit that they are not diagnostic.
Where providers disagree
The part that costs you weeks if you build this yourself. None of the following is a WearLink limitation — it is how the underlying providers actually behave.
SpO2 is overnight-only on most devices
Optical oxygen saturation requires stillness and good contact. Most providers sample only during sleep, and some only on certain hardware. Expect sparse, night-anchored data rather than a continuous daytime stream.
Breathing-disturbance indices are proprietary
Where a provider reports a disturbance index, it is that vendor's derived metric with its own thresholds. It is not an AHI and is not comparable to a sleep-study figure or to another vendor's index.
Availability is restricted by region and hardware
Blood-oxygen features have been disabled or altered on specific devices in specific markets for regulatory and patent reasons. Absence of SpO2 for a user is often a device or region constraint rather than a sync failure — handle missing data as normal.
Most providers give you one number per night, not a curve
Despite being exposed as a series, respiratory rate from most consumer devices is a single overnight average or a small number of coarse samples rather than a continuous trace. Charting it as a smooth line implies a resolution that is not there. The exception is devices that derive breathing from a mattress or chest sensor, which do produce genuinely dense data. Read the sample spacing rather than assuming it, because the same field can be one point on one device and hundreds on another.
Providers that supply respiratory rate & spo2
Status is read from the same provider table the rest of the site uses, so nothing here can claim a provider is connectable when it is not. Coverage also varies by hardware generation within a brand.
| Provider | Category | Status |
|---|---|---|
| Oura | Cloud OAuth | Live |
| WHOOP | Cloud OAuth | Live |
| Fitbit | Cloud OAuth | Live |
| Garmin | Cloud OAuth | Onboarding |
| Withings | Cloud OAuth | Live |
| Eight Sleep | Cloud OAuth | Onboarding |
| Apple Health | Mobile SDK | Mobile SDK |
| Samsung Health | Mobile SDK | Mobile SDK |
Webhook events for respiratory rate & spo2
Subscribe to the summary event for settled records, and to the series streams when you need the underlying samples. Event names below are generated from the backend enum, so they cannot drift out of date relative to the API.
Summary object
respiratory_rate.created
Series streams
series.respiratory_rate.createdseries.oxygen_saturation.createdseries.sleeping_breathing_disturbances.createdseries.breathing_disturbance_index.createdseries.peripheral_perfusion_index.createdFrequently asked questions
- Why is SpO2 missing for some users?
- Usually hardware or region. Blood-oxygen features vary by device generation and have been restricted in some markets. Treat absence as expected rather than as an error state.
- Is the breathing disturbance index the same as AHI?
- No. It is a proprietary vendor metric with its own thresholds and is not comparable to a clinical apnea-hypopnea index or across vendors.
- Can I get daytime respiratory rate?
- Rarely. These sensors need stillness, so most providers report overnight values anchored to a sleep session. Some devices add spot readings during guided breathing sessions.
Related data types
15 normalised data families in total — see them all or browse integrations by provider.