Respiratory Rate & SpO2 API
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 event types
Canonical unit
breaths per minute; SpO2 as a percentage
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
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.
Webhook events for respiratory rate & spo2
Summary: respiratory_rate.created
Series streams:
series.respiratory_rate.createdseries.oxygen_saturation.createdseries.sleeping_breathing_disturbances.createdseries.breathing_disturbance_index.createdseries.peripheral_perfusion_index.created
The full catalogue is in the event catalogue.
FAQ
Respiratory Rate & SpO2 — frequently asked questions
Why is SpO2 missing for some users?
Is the breathing disturbance index the same as AHI?
Can I get daytime respiratory rate?
Get respiratory rate & spo2 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.