Skip to content

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.

Respiratory Rate & SpO2 visualisation

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.created
  • series.oxygen_saturation.created
  • series.sleeping_breathing_disturbances.created
  • series.breathing_disturbance_index.created
  • series.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?
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.

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.