Oura API: Accessing Ring Data, Sleep, HRV and Readiness
Key Takeaways
- The Oura Ring API provides Sleep Score, Readiness Score, HRV, resting heart rate, body temperature deviation, SpO2, respiratory rate and activity data through a clean REST interface
- Oura's Readiness Score is its most distinctive metric: a daily 0-100 readiness indicator that aggregates sleep quality, HRV balance, resting heart rate trend and body temperature
- HRV data from Oura is unusually granular: 5-minute interval readings throughout the sleep period, not just a single overnight average
- Body temperature deviation is a unique signal that most wearable APIs do not provide, useful for illness detection and cycle tracking
- Data is available the morning after collection; Oura is a daily-cadence API, not a real-time stream
Introduction
The Oura Ring has become a reference device in the consumer wearable space for a specific reason: it measures consistently and at unusually high fidelity because of where it sits on the body. The finger has dense capillary networks and relatively little motion artifact compared to the wrist, which gives Oura's optical sensors more reliable access to the pulse signal. The result is sleep staging and HRV data that health researchers and biohackers tend to trust more than wrist-based alternatives.
For developers, the Oura API is one of the more approachable in the wearable space. OAuth 2.0 is standard, access tokens are long-lived, the REST endpoints are clean and well-documented, and the data model is coherent. The main conceptual shift is understanding that Oura is a sleep and recovery platform, not an activity platform. Its workout tracking is limited. Its GPS coverage is nonexistent. But for sleep quality, readiness, HRV detail and body temperature, it is among the best sources available from a consumer device.
This guide covers what the API provides, how the core metrics work, authentication, and how to structure an integration that gets the most out of Oura's distinctive data.
What the Oura API Provides
Oura's API is organized around several resource types, each mapped to specific physiological measurements.
Daily sleep is the most data-rich resource. Each sleep record includes: Sleep Score (0-100), total time in bed, total sleep time, sleep efficiency, sleep latency, number of disturbances, time spent in each sleep stage (awake, light, deep and REM), respiratory rate during sleep, average heart rate during sleep, and 5-minute interval HRV readings across the full sleep period. The HRV resolution is one of Oura's standout features: rather than a single overnight average, you get a time series of HRV values that lets you see how HRV evolves across different sleep stages.
Daily readiness aggregates multiple signals into Oura's Readiness Score. The contributing factors are exposed individually: sleep score from the previous night, HRV balance (today's HRV compared to the user's 28-day rolling average), resting heart rate trend (whether RHR is trending up or down relative to baseline), body temperature deviation, and previous day activity score. Each contributor is scored and weighted to produce the composite.
Body temperature is recorded nightly as deviation from the user's personal baseline. Oura does not report absolute skin temperature; it reports how much last night's temperature differed from the user's established mean. A deviation of more than +0.5 degrees Celsius typically indicates an immune response, elevated stress or, for users who track it, the luteal phase of the menstrual cycle. A deviation of -0.5 or below can indicate unusual physiological suppression. This signal is available on all Oura Ring 3 devices.
SpO2 (blood oxygen saturation) is available on Oura Ring 3, reported as an average nightly value with a low reading for the night. Significant drops in SpO2 during sleep can indicate sleep apnea or other respiratory issues, though Oura is not a clinical device.
Daily activity provides steps, active calories, sedentary time, low, medium and high activity minutes, and MET minutes for the day.
Heart rate is available as a time series with readings at 5-minute intervals during sleep and at lower frequency during the day.
Authentication
Oura uses standard OAuth 2.0 with the authorization code flow. A notable difference from providers like Strava is that Oura access tokens are long-lived and do not expire on a short cycle. Refresh tokens are provided but you do not need to refresh proactively before every API call the way you do with Strava's 6-hour tokens.
The available scopes map to data categories: personal for profile, daily for daily summaries including readiness and activity, heartrate for the heart rate time series, workout for workout records, session for rest and meditation sessions, spo2 for blood oxygen, and ring_configuration for device information. Request only the scopes your product actually uses.
Understanding Oura's Core Metrics
Readiness Score is Oura's most important output for coaching and wellness applications. It is a composite of multiple signals and reflects the body's preparedness for the demands of the day. High readiness (85+) suggests the user is well-recovered and physiologically primed. Low readiness (below 60) suggests the body is under stress and would benefit from lighter activity or additional recovery.
The Readiness Score's value in a product context comes from its contributing factors. A user with a score of 65 wants to know whether that score is driven by poor sleep (actionable: improve sleep hygiene), elevated resting heart rate (possible: overtraining or early illness), below-average HRV (possible: high training load or stress), or elevated body temperature (possible: illness or luteal phase). Exposing these contributors gives users context that a single number cannot.
HRV balance is the most sensitive leading indicator in Oura's data. It compares today's HRV against the user's rolling 28-day average. When HRV balance is below 100 (meaning today's HRV is below the rolling average), recovery is incomplete relative to the user's normal state. Sustained below-average HRV balance over multiple days indicates cumulative fatigue, overtraining, or systemic stress.
Body temperature deviation is a signal most wearable APIs do not provide, which makes it distinctive for certain use cases. For illness detection, elevated temperature often precedes subjective symptoms by 24-48 hours. For female health tracking, temperature rises predictably after ovulation and stays elevated through the luteal phase. For general recovery, unusual temperature deviations correlate with elevated inflammatory markers. Applications in women's health, longevity or clinical monitoring can build meaningful features around this signal that competitors cannot easily replicate.
Data Timing and Sync Strategy
Oura processes sleep data after the ring syncs with the user's phone. Processing typically completes by mid-morning. Data is not available in real time during the night, and there is no API endpoint that streams live sensor readings.
The practical implication: schedule your daily sync to run between 7 AM and 10 AM in the user's local time zone. Data from the previous night will be processed and available in that window for most users. Some users sync late or have unusual sleep schedules, so build tolerance for missing data on any given day rather than treating it as an error.
For historical backfill when a user first connects, the API supports date-range queries. Oura typically provides up to two years of historical data. This means a user who has been wearing the ring for a year arrives with substantial sleep and recovery history that your product can use immediately to establish baselines and surface trends.
Open Wearables and Oura
Open Wearables handles Oura's OAuth flow, token management and data normalization. Daily readiness, sleep, HRV, body temperature, SpO2 and activity data are available through a unified schema shared with Whoop, Garmin, Polar and other supported providers.
For multi-provider apps, this means a user with Oura and a user with Whoop can both use your product's recovery features. The underlying provider difference is abstracted away by Open Wearables' normalization layer.
Self-hosted, MIT licensed, $0 per user.
FAQ
Which Oura Ring generations does the API support?
Oura Ring Generation 3 and later. Gen 2 had limited API support for certain data types. Body temperature deviation, SpO2 and some advanced metrics require Gen 3 or later.
Is Oura data available in real time during sleep?
No. Oura syncs data when the ring is near the user's phone via Bluetooth and processes it server-side. Data is generally available by mid-morning the following day.
How is Oura's Readiness Score different from Whoop's Recovery Score?
Both are 0-100 daily readiness indicators but use different sensor inputs and algorithms. Oura weighs sleep heavily and uses body temperature as a distinctive input. Whoop emphasizes HRV during slow-wave sleep and cumulative training strain. They are correlated but not identical, and the values are not interchangeable.
Does Oura Ring have GPS?
No. The ring has no GPS. Workout tracking is based on accelerometer and heart rate data. For GPS-based activity data, pair Oura with a GPS-capable device.
Can I access historical Oura data when a user first connects?
Yes. The API allows querying by date range and Oura typically provides up to two years of historical data. Backfilling on first connection gives your product immediate baseline data for trend analysis.
Oura Integration
View the full Oura integration documentation on Open Wearables.
See Related Articles
How to Use Oura Ring Data in Your App