OuraToolkit.Api 0.3.0

dotnet add package OuraToolkit.Api --version 0.3.0
                    
NuGet\Install-Package OuraToolkit.Api -Version 0.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OuraToolkit.Api" Version="0.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OuraToolkit.Api" Version="0.3.0" />
                    
Directory.Packages.props
<PackageReference Include="OuraToolkit.Api" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OuraToolkit.Api --version 0.3.0
                    
#r "nuget: OuraToolkit.Api, 0.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OuraToolkit.Api@0.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OuraToolkit.Api&version=0.3.0
                    
Install as a Cake Addin
#tool nuget:?package=OuraToolkit.Api&version=0.3.0
                    
Install as a Cake Tool

OuraToolkit.Api - the C# library for the Oura API Documentation

Overview

The Oura API allows Oura users and partner applications to improve their user experience with Oura data. This document describes the Oura API Version 2 (V2), which is the only available integration point for Oura data. The previous V1 API has been sunset.

Getting Started

What is an API?

An API (Application Programming Interface) allows different software applications to communicate with each other. The Oura API enables you to access your Oura Ring data programmatically.

Quick Start Guide

  1. Register an API Application and implement OAuth2
  2. Make Your First API Call:
    curl -X GET https://api.ouraring.com/v2/usercollection/personal_info \\
    -H \"Authorization: Bearer YOUR_TOKEN_HERE\"
    
  3. Explore Data Types:
    • Browse the available endpoints in this documentation to discover what data you can access
    • Each endpoint includes example requests and responses
  4. Set Up Webhooks (Strongly Recommended):
    • Webhooks are the preferred way to consume Oura data
    • We have not had customers hit rate limits with webhooks properly implemented
    • Make a single request for historical data when a user first connects, then use webhooks for ongoing updates
    • Webhook notifications come approximately 30 seconds after data syncs from the mobile app
    • Set up webhooks to receive notifications when data changes

Common Questions

  • Data Delay: Different data types sync at different times - sleep data requires users to open the Oura app, while daily activity and stress may sync in the background

Data Access

In order to access data, a registered API Application is required. API Applications are limited to 10 users before requiring approval from Oura. There is no limit once an application is approved. Additionally, Oura users must provide consent to share each data type an API Application has access to. All data access requests through the Oura API require Authentication. Additionally, we recommend that Oura users keep their mobile app updated to support API access for the latest data types.

Authentication

The Oura Cloud API supports authentication through the industry-standard OAuth2 protocol. For more information, see our Authentication instructions. Access tokens must be included in the request header as follows:

GET /v2/usercollection/personal_info HTTP/1.1
Host: api.ouraring.com
Authorization: Bearer <token>

Please note that personal access tokens were deprecated in December 2025 and are no longer available for use.

Oura HTTP Response Codes

| Response Code | Description | | - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - | - | | 200 OK | Successful Response | | 400 Query Parameter Validation Error | The request contains query parameters that are invalid or incorrectly formatted. | | 401 Unauthorized | Invalid or expired authentication token. | | 403 Forbidden | The requested resource requires additional permissions or the user's Oura subscription has expired. | | 429 Too Many Requests | Rate limit exceeded. See response headers for retry guidance. |

Rate Limits

The API enforces rate limits at two layers to ensure fair access across all applications:

  • a per-access-token limit, which throttles single-token floods, and
  • a per-application limit, which caps the aggregate traffic across all of an application's end-user tokens so one fan-out app can't dominate shared capacity.

A request that trips either layer receives a 429 Too Many Requests. The X-RateLimit-Tier response header identifies which layer fired.

If your application regularly approaches rate limits, webhooks are strongly recommended — most applications that implement webhooks correctly do not encounter rate limit issues.

Contact us if you expect your usage to require higher limits.

Rate Limit Response Headers

When a 429 Too Many Requests response is returned, five headers are included to guide retries. Prefer these over fixed-interval backoff:

  • Retry-After — integer seconds to wait before retrying. RFC 7231-compliant; safe to feed directly into your client's backoff logic.
  • X-RateLimit-Limit — the request ceiling for the current window.
  • X-RateLimit-Window — the rolling window length in seconds that the ceiling applies to.
  • X-RateLimit-Reset — Unix epoch (seconds) at which the window resets and quota is fully restored.
  • X-RateLimit-Tier — identifies which limit was exceeded, useful when contacting support.

This C# SDK is automatically generated by the OpenAPI Generator project:

  • API version: 2.0
  • SDK version: 0.3.0
  • Generator version: 7.14.0
  • Build package: org.openapitools.codegen.languages.CSharpClientCodegen

<a id="frameworks-supported"></a>

Frameworks supported

  • .NET Core >=1.0
  • .NET Framework >=4.6
  • Mono/Xamarin >=vNext

<a id="dependencies"></a>

Dependencies

The DLLs included in the package may not be the latest version. We recommend using NuGet to obtain the latest version of the packages:

Install-Package Newtonsoft.Json
Install-Package JsonSubTypes
Install-Package System.ComponentModel.Annotations

<a id="installation"></a>

Installation

Generate the DLL using your preferred tool (e.g. dotnet build)

Then include the DLL (under the bin folder) in the C# project, and use the namespaces:

using OuraToolkit.Api.Api;
using OuraToolkit.Api.Client;
using OuraToolkit.Api.Model;

<a id="usage"></a>

Usage

To use the API client with a HTTP proxy, setup a System.Net.WebProxy

Configuration c = new Configuration();
System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
c.Proxy = webProxy;

Connections

Each ApiClass (properly the ApiClient inside it) will create an instance of HttpClient. It will use that for the entire lifecycle and dispose it when called the Dispose method.

To better manager the connections it's a common practice to reuse the HttpClient and HttpClientHandler (see here for details). To use your own HttpClient instance just pass it to the ApiClass constructor.

HttpClientHandler yourHandler = new HttpClientHandler();
HttpClient yourHttpClient = new HttpClient(yourHandler);
var api = new YourApiClass(yourHttpClient, yourHandler);

If you want to use an HttpClient and don't have access to the handler, for example in a DI context in Asp.net Core when using IHttpClientFactory.

HttpClient yourHttpClient = new HttpClient();
var api = new YourApiClass(yourHttpClient);

You'll loose some configuration settings, the features affected are: Setting and Retrieving Cookies, Client Certificates, Proxy settings. You need to either manually handle those in your setup of the HttpClient or they won't be available.

Here an example of DI setup in a sample web project:

services.AddHttpClient<YourApiClass>(httpClient =>
   new PetApi(httpClient));

<a id="getting-started"></a>

Getting Started

using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using OuraToolkit.Api.Api;
using OuraToolkit.Api.Client;
using OuraToolkit.Api.Model;

namespace Example
{
    public class Example
    {
        public static void Main()
        {

            Configuration config = new Configuration();
            config.BasePath = "https://api.ouraring.com";
            // Configure Bearer token for authorization: BearerAuth
            config.AccessToken = "YOUR_BEARER_TOKEN";

            // create instances of HttpClient, HttpClientHandler to be reused later with different Api classes
            HttpClient httpClient = new HttpClient();
            HttpClientHandler httpClientHandler = new HttpClientHandler();
            var apiInstance = new DailyActivityRoutesApi(httpClient, config, httpClientHandler);
            var startDate = DateTime.Parse("2013-10-20");  // DateTime? |  (optional) 
            var endDate = DateTime.Parse("2013-10-20");  // DateTime? |  (optional) 
            var nextToken = "nextToken_example";  // string? |  (optional) 
            var fields = "fields_example";  // string? | Comma-separated list of fields to include in the response, in addition to the always returned fields. Defaults to all fields if not provided. (optional) 

            try
            {
                // Multiple Daily Activity Documents
                MultiDocumentResponsePublicDailyActivity result = apiInstance.MultipleDailyActivityDocumentsV2UsercollectionDailyActivityGet(startDate, endDate, nextToken, fields);
                Debug.WriteLine(result);
            }
            catch (ApiException e)
            {
                Debug.Print("Exception when calling DailyActivityRoutesApi.MultipleDailyActivityDocumentsV2UsercollectionDailyActivityGet: " + e.Message );
                Debug.Print("Status Code: "+ e.ErrorCode);
                Debug.Print(e.StackTrace);
            }

        }
    }
}

<a id="documentation-for-api-endpoints"></a>

Documentation for API Endpoints

All URIs are relative to https://api.ouraring.com

Class Method HTTP request Description
DailyActivityRoutesApi MultipleDailyActivityDocumentsV2UsercollectionDailyActivityGet GET /v2/usercollection/daily_activity Multiple Daily Activity Documents
DailyActivityRoutesApi SingleDailyActivityDocumentV2UsercollectionDailyActivityDocumentIdGet GET /v2/usercollection/daily_activity/{document_id} Single Daily Activity Document
DailyCardiovascularAgeRoutesApi MultipleDailyCardiovascularAgeDocumentsV2UsercollectionDailyCardiovascularAgeGet GET /v2/usercollection/daily_cardiovascular_age Multiple Daily Cardiovascular Age Documents
DailyCardiovascularAgeRoutesApi SingleDailyCardiovascularAgeDocumentV2UsercollectionDailyCardiovascularAgeDocumentIdGet GET /v2/usercollection/daily_cardiovascular_age/{document_id} Single Daily Cardiovascular Age Document
DailyReadinessRoutesApi MultipleDailyReadinessDocumentsV2UsercollectionDailyReadinessGet GET /v2/usercollection/daily_readiness Multiple Daily Readiness Documents
DailyReadinessRoutesApi SingleDailyReadinessDocumentV2UsercollectionDailyReadinessDocumentIdGet GET /v2/usercollection/daily_readiness/{document_id} Single Daily Readiness Document
DailyResilienceRoutesApi MultipleDailyResilienceDocumentsV2UsercollectionDailyResilienceGet GET /v2/usercollection/daily_resilience Multiple Daily Resilience Documents
DailyResilienceRoutesApi SingleDailyResilienceDocumentV2UsercollectionDailyResilienceDocumentIdGet GET /v2/usercollection/daily_resilience/{document_id} Single Daily Resilience Document
DailySleepRoutesApi MultipleDailySleepDocumentsV2UsercollectionDailySleepGet GET /v2/usercollection/daily_sleep Multiple Daily Sleep Documents
DailySleepRoutesApi SingleDailySleepDocumentV2UsercollectionDailySleepDocumentIdGet GET /v2/usercollection/daily_sleep/{document_id} Single Daily Sleep Document
DailySpo2RoutesApi MultipleDailySpo2DocumentsV2UsercollectionDailySpo2Get GET /v2/usercollection/daily_spo2 Multiple Daily Spo2 Documents
DailySpo2RoutesApi SingleDailySpo2DocumentV2UsercollectionDailySpo2DocumentIdGet GET /v2/usercollection/daily_spo2/{document_id} Single Daily Spo2 Document
DailyStressRoutesApi MultipleDailyStressDocumentsV2UsercollectionDailyStressGet GET /v2/usercollection/daily_stress Multiple Daily Stress Documents
DailyStressRoutesApi SingleDailyStressDocumentV2UsercollectionDailyStressDocumentIdGet GET /v2/usercollection/daily_stress/{document_id} Single Daily Stress Document
EnhancedTagRoutesApi MultipleEnhancedTagDocumentsV2UsercollectionEnhancedTagGet GET /v2/usercollection/enhanced_tag Multiple Enhanced Tag Documents
EnhancedTagRoutesApi SingleEnhancedTagDocumentV2UsercollectionEnhancedTagDocumentIdGet GET /v2/usercollection/enhanced_tag/{document_id} Single Enhanced Tag Document
HeartRateRoutesApi MultipleHeartrateDocumentsV2UsercollectionHeartrateGet GET /v2/usercollection/heartrate Multiple Heartrate Documents
PersonalInfoRoutesApi SinglePersonalInfoDocumentV2UsercollectionPersonalInfoGet GET /v2/usercollection/personal_info Single Personal Info Document
RestModePeriodRoutesApi MultipleRestModePeriodDocumentsV2UsercollectionRestModePeriodGet GET /v2/usercollection/rest_mode_period Multiple Rest Mode Period Documents
RestModePeriodRoutesApi SingleRestModePeriodDocumentV2UsercollectionRestModePeriodDocumentIdGet GET /v2/usercollection/rest_mode_period/{document_id} Single Rest Mode Period Document
RingBatteryLevelRoutesApi MultipleRingBatteryLevelDocumentsV2UsercollectionRingBatteryLevelGet GET /v2/usercollection/ring_battery_level Multiple Ring Battery Level Documents
RingConfigurationRoutesApi MultipleRingConfigurationDocumentsV2UsercollectionRingConfigurationGet GET /v2/usercollection/ring_configuration Multiple Ring Configuration Documents
RingConfigurationRoutesApi SingleRingConfigurationDocumentV2UsercollectionRingConfigurationDocumentIdGet GET /v2/usercollection/ring_configuration/{document_id} Single Ring Configuration Document
SandboxRoutesApi SandboxMultipleDailyActivityDocumentsV2SandboxUsercollectionDailyActivityGet GET /v2/sandbox/usercollection/daily_activity Sandbox - Multiple Daily Activity Documents
SandboxRoutesApi SandboxMultipleDailyCardiovascularAgeDocumentsV2SandboxUsercollectionDailyCardiovascularAgeGet GET /v2/sandbox/usercollection/daily_cardiovascular_age Sandbox - Multiple Daily Cardiovascular Age Documents
SandboxRoutesApi SandboxMultipleDailyReadinessDocumentsV2SandboxUsercollectionDailyReadinessGet GET /v2/sandbox/usercollection/daily_readiness Sandbox - Multiple Daily Readiness Documents
SandboxRoutesApi SandboxMultipleDailyResilienceDocumentsV2SandboxUsercollectionDailyResilienceGet GET /v2/sandbox/usercollection/daily_resilience Sandbox - Multiple Daily Resilience Documents
SandboxRoutesApi SandboxMultipleDailySleepDocumentsV2SandboxUsercollectionDailySleepGet GET /v2/sandbox/usercollection/daily_sleep Sandbox - Multiple Daily Sleep Documents
SandboxRoutesApi SandboxMultipleDailySpo2DocumentsV2SandboxUsercollectionDailySpo2Get GET /v2/sandbox/usercollection/daily_spo2 Sandbox - Multiple Daily Spo2 Documents
SandboxRoutesApi SandboxMultipleDailyStressDocumentsV2SandboxUsercollectionDailyStressGet GET /v2/sandbox/usercollection/daily_stress Sandbox - Multiple Daily Stress Documents
SandboxRoutesApi SandboxMultipleEnhancedTagDocumentsV2SandboxUsercollectionEnhancedTagGet GET /v2/sandbox/usercollection/enhanced_tag Sandbox - Multiple Enhanced Tag Documents
SandboxRoutesApi SandboxMultipleHeartrateDocumentsV2SandboxUsercollectionHeartrateGet GET /v2/sandbox/usercollection/heartrate Sandbox - Multiple Heartrate Documents
SandboxRoutesApi SandboxMultipleRestModePeriodDocumentsV2SandboxUsercollectionRestModePeriodGet GET /v2/sandbox/usercollection/rest_mode_period Sandbox - Multiple Rest Mode Period Documents
SandboxRoutesApi SandboxMultipleRingBatteryLevelDocumentsV2SandboxUsercollectionRingBatteryLevelGet GET /v2/sandbox/usercollection/ring_battery_level Sandbox - Multiple Ring Battery Level Documents
SandboxRoutesApi SandboxMultipleRingConfigurationDocumentsV2SandboxUsercollectionRingConfigurationGet GET /v2/sandbox/usercollection/ring_configuration Sandbox - Multiple Ring Configuration Documents
SandboxRoutesApi SandboxMultipleSessionDocumentsV2SandboxUsercollectionSessionGet GET /v2/sandbox/usercollection/session Sandbox - Multiple Session Documents
SandboxRoutesApi SandboxMultipleSleepDocumentsV2SandboxUsercollectionSleepGet GET /v2/sandbox/usercollection/sleep Sandbox - Multiple Sleep Documents
SandboxRoutesApi SandboxMultipleSleepTimeDocumentsV2SandboxUsercollectionSleepTimeGet GET /v2/sandbox/usercollection/sleep_time Sandbox - Multiple Sleep Time Documents
SandboxRoutesApi SandboxMultipleTagDocumentsV2SandboxUsercollectionTagGet GET /v2/sandbox/usercollection/tag Sandbox - Multiple Tag Documents
SandboxRoutesApi SandboxMultipleVO2MaxDocumentsV2SandboxUsercollectionVO2MaxGet GET /v2/sandbox/usercollection/vO2_max Sandbox - Multiple Vo2 Max Documents
SandboxRoutesApi SandboxMultipleWorkoutDocumentsV2SandboxUsercollectionWorkoutGet GET /v2/sandbox/usercollection/workout Sandbox - Multiple Workout Documents
SandboxRoutesApi SandboxSingleDailyActivityDocumentV2SandboxUsercollectionDailyActivityDocumentIdGet GET /v2/sandbox/usercollection/daily_activity/{document_id} Sandbox - Single Daily Activity Document
SandboxRoutesApi SandboxSingleDailyCardiovascularAgeDocumentV2SandboxUsercollectionDailyCardiovascularAgeDocumentIdGet GET /v2/sandbox/usercollection/daily_cardiovascular_age/{document_id} Sandbox - Single Daily Cardiovascular Age Document
SandboxRoutesApi SandboxSingleDailyReadinessDocumentV2SandboxUsercollectionDailyReadinessDocumentIdGet GET /v2/sandbox/usercollection/daily_readiness/{document_id} Sandbox - Single Daily Readiness Document
SandboxRoutesApi SandboxSingleDailyResilienceDocumentV2SandboxUsercollectionDailyResilienceDocumentIdGet GET /v2/sandbox/usercollection/daily_resilience/{document_id} Sandbox - Single Daily Resilience Document
SandboxRoutesApi SandboxSingleDailySleepDocumentV2SandboxUsercollectionDailySleepDocumentIdGet GET /v2/sandbox/usercollection/daily_sleep/{document_id} Sandbox - Single Daily Sleep Document
SandboxRoutesApi SandboxSingleDailySpo2DocumentV2SandboxUsercollectionDailySpo2DocumentIdGet GET /v2/sandbox/usercollection/daily_spo2/{document_id} Sandbox - Single Daily Spo2 Document
SandboxRoutesApi SandboxSingleDailyStressDocumentV2SandboxUsercollectionDailyStressDocumentIdGet GET /v2/sandbox/usercollection/daily_stress/{document_id} Sandbox - Single Daily Stress Document
SandboxRoutesApi SandboxSingleEnhancedTagDocumentV2SandboxUsercollectionEnhancedTagDocumentIdGet GET /v2/sandbox/usercollection/enhanced_tag/{document_id} Sandbox - Single Enhanced Tag Document
SandboxRoutesApi SandboxSingleRestModePeriodDocumentV2SandboxUsercollectionRestModePeriodDocumentIdGet GET /v2/sandbox/usercollection/rest_mode_period/{document_id} Sandbox - Single Rest Mode Period Document
SandboxRoutesApi SandboxSingleRingConfigurationDocumentV2SandboxUsercollectionRingConfigurationDocumentIdGet GET /v2/sandbox/usercollection/ring_configuration/{document_id} Sandbox - Single Ring Configuration Document
SandboxRoutesApi SandboxSingleSessionDocumentV2SandboxUsercollectionSessionDocumentIdGet GET /v2/sandbox/usercollection/session/{document_id} Sandbox - Single Session Document
SandboxRoutesApi SandboxSingleSleepDocumentV2SandboxUsercollectionSleepDocumentIdGet GET /v2/sandbox/usercollection/sleep/{document_id} Sandbox - Single Sleep Document
SandboxRoutesApi SandboxSingleSleepTimeDocumentV2SandboxUsercollectionSleepTimeDocumentIdGet GET /v2/sandbox/usercollection/sleep_time/{document_id} Sandbox - Single Sleep Time Document
SandboxRoutesApi SandboxSingleTagDocumentV2SandboxUsercollectionTagDocumentIdGet GET /v2/sandbox/usercollection/tag/{document_id} Sandbox - Single Tag Document
SandboxRoutesApi SandboxSingleVO2MaxDocumentV2SandboxUsercollectionVO2MaxDocumentIdGet GET /v2/sandbox/usercollection/vO2_max/{document_id} Sandbox - Single Vo2 Max Document
SandboxRoutesApi SandboxSingleWorkoutDocumentV2SandboxUsercollectionWorkoutDocumentIdGet GET /v2/sandbox/usercollection/workout/{document_id} Sandbox - Single Workout Document
SessionRoutesApi MultipleSessionDocumentsV2UsercollectionSessionGet GET /v2/usercollection/session Multiple Session Documents
SessionRoutesApi SingleSessionDocumentV2UsercollectionSessionDocumentIdGet GET /v2/usercollection/session/{document_id} Single Session Document
SleepRoutesApi MultipleSleepDocumentsV2UsercollectionSleepGet GET /v2/usercollection/sleep Multiple Sleep Documents
SleepRoutesApi SingleSleepDocumentV2UsercollectionSleepDocumentIdGet GET /v2/usercollection/sleep/{document_id} Single Sleep Document
SleepTimeRoutesApi MultipleSleepTimeDocumentsV2UsercollectionSleepTimeGet GET /v2/usercollection/sleep_time Multiple Sleep Time Documents
SleepTimeRoutesApi SingleSleepTimeDocumentV2UsercollectionSleepTimeDocumentIdGet GET /v2/usercollection/sleep_time/{document_id} Single Sleep Time Document
TagRoutesApi MultipleTagDocumentsV2UsercollectionTagGet GET /v2/usercollection/tag Multiple Tag Documents
TagRoutesApi SingleTagDocumentV2UsercollectionTagDocumentIdGet GET /v2/usercollection/tag/{document_id} Single Tag Document
VO2MaxRoutesApi MultipleVO2MaxDocumentsV2UsercollectionVO2MaxGet GET /v2/usercollection/vO2_max Multiple Vo2 Max Documents
VO2MaxRoutesApi SingleVO2MaxDocumentV2UsercollectionVO2MaxDocumentIdGet GET /v2/usercollection/vO2_max/{document_id} Single Vo2 Max Document
WebhookSubscriptionRoutesApi CreateWebhookSubscriptionV2WebhookSubscriptionPost POST /v2/webhook/subscription Create Webhook Subscription
WebhookSubscriptionRoutesApi DeleteWebhookSubscriptionV2WebhookSubscriptionIdDelete DELETE /v2/webhook/subscription/{id} Delete Webhook Subscription
WebhookSubscriptionRoutesApi GetWebhookSubscriptionV2WebhookSubscriptionIdGet GET /v2/webhook/subscription/{id} Get Webhook Subscription
WebhookSubscriptionRoutesApi ListWebhookSubscriptionsV2WebhookSubscriptionGet GET /v2/webhook/subscription List Webhook Subscriptions
WebhookSubscriptionRoutesApi RenewWebhookSubscriptionV2WebhookSubscriptionRenewIdPut PUT /v2/webhook/subscription/renew/{id} Renew Webhook Subscription
WebhookSubscriptionRoutesApi UpdateWebhookSubscriptionV2WebhookSubscriptionIdPut PUT /v2/webhook/subscription/{id} Update Webhook Subscription
WorkoutRoutesApi MultipleWorkoutDocumentsV2UsercollectionWorkoutGet GET /v2/usercollection/workout Multiple Workout Documents
WorkoutRoutesApi SingleWorkoutDocumentV2UsercollectionWorkoutDocumentIdGet GET /v2/usercollection/workout/{document_id} Single Workout Document

<a id="documentation-for-models"></a>

Documentation for Models

<a id="documentation-for-authorization"></a>

Documentation for Authorization

Authentication schemes defined for the API: <a id="BearerAuth"></a>

BearerAuth

  • Type: Bearer Authentication

<a id="OAuth2"></a>

OAuth2

  • Type: OAuth
  • Flow: accessCode
  • Authorization URL: https://cloud.ouraring.com/oauth/authorize
  • Scopes:
    • email: Email address of the user
    • personal: Personal information (gender, age, height, weight)
    • daily: Daily summaries of sleep, activity and readiness
    • heartrate: Time series heart rate for Gen 3 users
    • workout: Summaries for auto-detected and user entered workouts
    • tag: User entered tags
    • session: Guided and unguided sessions in the Oura app
    • spo2Daily: SpO2 Average recorded during sleep

<a id="ClientIdAuth"></a>

ClientIdAuth

  • Type: API key
  • API key parameter name: x-client-id
  • Location: HTTP header

<a id="ClientSecretAuth"></a>

ClientSecretAuth

  • Type: API key
  • API key parameter name: x-client-secret
  • Location: HTTP header
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0 103 7/17/2026
0.2.2 106 7/16/2026