---
title: Oura Integration
subtitle: Connect Oura Ring data to Sahha via the Oura Cloud API.
---


## Overview

Connect **Oura Ring** data to Sahha via the Oura Cloud API. You register an app with Oura, add it to Sahha as an integration, then connect end users. The connection flow itself is shared across providers — see [Integrations](/docs/connect/integrations) for the concepts and [Connect a user](/docs/connect/integrations#connect-a-user) for the full round-trip.

{% callout title="Public beta" type="info" %}
Integrations are in public beta and are **Sandbox only**. We're still refining the API surface as it matures and will call out any breaking changes here as they land.
{% /callout %}

{% providers view="detail" slug="oura" /%}

---

## Before you start

{% callout type="info" %}
Examples use the **sandbox** environment. Replace `sandbox-api.sahha.ai` with `api.sahha.ai` for production — see [API Environments](/docs/connect/api#environments).
{% /callout %}

Oura uses self sign-up — no approval step is required to create an app.

### Create an Oura account

The Oura Cloud Developer Portal uses the same credentials as your Oura account. If you don't already have one, create it first.

{% callout title="Create your Oura account" %}

- Download the Oura app — [App Store](https://apps.apple.com/app/oura/id1043837948) or [Google Play](https://play.google.com/store/apps/details?id=com.ouraring.oura)
- Open the app and tap **Sign up**
- Register with your email address and create a password
- Verify your email address to activate the account

{% /callout %}

{% callout title="You don't need an Oura Ring" type="info" %}
The app's onboarding is designed around setting up a physical Oura Ring, but you don't need one to register a developer app — your account is created at sign-up. Work through the onboarding screens, and when the app asks you to pair a ring, skip that step or simply close the app. Your account stays active, and you can sign in to the developer portal with it.
{% /callout %}

With your Oura account created, you can sign in to the developer portal in the next step.

---

## 1. Register your Oura app

This gives Sahha the OAuth credentials it uses to request data on your users' behalf.

### Open the developer portal

Sign in to the [Oura Cloud Developer Portal](https://cloud.ouraring.com/oauth/applications) with your Oura account. The **Your Applications** page lists any apps you've already created. Click **Create New** to start a new one.

### Fill in the application details

On the **New Application** form, complete the required fields. These details are shown to your end users during the OAuth consent flow, so use values that represent your product.

| Field | What to enter |
| --- | --- |
| **Display Name** | The app name shown to users when they connect (e.g. `My Application`). |
| **Description** | A short description of your application. |
| **Contact Email** | An email Oura can use to reach you about the app. |
| **Website** | Your product or company website. |
| **Privacy Policy** | URL of your privacy policy. |
| **Terms of Service** | URL of your terms of service. |

### Add the Sahha redirect URI

Under **Redirect URIs**, add the Sahha OAuth callback URL exactly as shown. Oura fails the OAuth flow if this doesn't match, so copy it carefully. Use **+ Add URI** if you need more than one entry.

```http
https://sandbox-api.sahha.ai/api/v1/integration/oauth/oura/callback
```

### Select scopes and create

Under **Scopes**, tick the data types you want Sahha to ingest. Available scopes: `email`, `personal`, `daily`, `heartrate`, `workout`, `tag`, `session`, `spo2`, `ring_configuration`, `stress`, `heart_health`.

Tick **I agree to the Oura API Agreement**, then click **Create Application**.

### Copy your credentials

Oura opens the application's detail page. Copy the **Client Id** and **Client Secret** — you'll paste these into Sahha in the next step. You can return to this page any time from **Your Applications → View Details**, and use **Reset Secret** if you ever need to rotate the secret.

{% callout title="Up to 10 users by default" %}
A newly created Oura app supports up to **10 connected users**. To go beyond that, use **Request more users** on the application detail page — Oura requires at least one active user before they'll approve the request.
{% /callout %}

---

## 2. Create the integration in Sahha

1. Go to the [Sahha Dashboard](https://app.sahha.ai/dashboard).
2. Navigate to **Direct Integrations → Integrations** in the sidebar.
3. Click **Add integration** and select **Oura** from the Provider dropdown.
4. Paste in your Oura **Client ID** and **Client Secret**.
5. In the **Scopes** dropdown, select the same scopes you enabled on your Oura app in step 1 — these are what Sahha requests when a user connects.
6. Add one or more entries to the **Redirect URL Whitelist** — the URLs in your own app that Sahha may redirect users back to after OAuth.
7. Save the integration.

{% callout title="Match your scopes" %}
By default **all** provider-supported scopes are selected — not just the ones enabled on your app. Deselect any scopes your Oura app isn't approved for so Sahha only requests scopes your app can actually access.
{% /callout %}

{% callout title="About the Redirect URL Whitelist" %}
When you start the OAuth flow you may optionally pass a `redirectUrl` — it must match a whitelisted entry. If omitted, Sahha uses the first URL in the whitelist.
{% /callout %}

---

## 3. Connect a user

Start the OAuth flow with the user's profile token. Oura's slug is `oura`:

```shell-session {% title="Start Oura connection" %}
curl -X GET "https://sandbox-api.sahha.ai/api/v1/integration/oauth/oura/authorize?redirectUrl=https://yourapp.com/integrations/callback" \
  -H "Authorization: profile {your-profile-token}"
```

```json {% title="Response" %}
{
	"authorizationUrl": "https://cloud.ouraring.com/oauth/authorize?..."
}
```

Redirect the user to `authorizationUrl` to complete authorization. For the full round-trip, prerequisites, language-specific snippets, and the SDK option, see [Connect a user](/docs/connect/integrations#connect-a-user).

---

## Oura-specific notes

- **Redirect URI must match.** Oura fails the OAuth flow unless the Sahha callback URL is registered in your app's allowed redirect URIs (see step 1, item 4).
- **Subscriptions are automatic.** Sahha manages Oura webhook subscriptions for you — there's no separate webhook step to configure.

For data freshness, the connection lifecycle, and disconnecting a user, see [Managing connections](/docs/connect/integrations#managing-connections) on the Integrations page.

---

## Support

Need help? Contact [support@sahha.ai](mailto:support@sahha.ai) or join the [Slack Community](https://join.slack.com/t/sahhacommunity/shared_invite/zt-1w0fmfbvk-qUwQ83tJgXyjT9XSxJvKIw).
