Oura Integration

beta

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 for the concepts and Connect a user for the full round-trip.

Status Beta self sign-up
API slugoura
DeviceRing
ConnectionCloud OAuth
Live syncPush (subscriptions)
Backfill on connect 30 days

Before you start

Examples use the sandbox environment. Replace sandbox-api.sahha.ai with api.sahha.ai for production — see API Environments .

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


1. Register your Oura app

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

  1. Sign in to the Oura Cloud Developer Portal .

  2. Create a new OAuth2 Application .

  3. Configure the application's name, description, and logo — these are shown to end users during the connection flow.

  4. Add the Sahha OAuth redirect URL to the allowed redirect URIs:

    https://sandbox-api.sahha.ai/api/v1/integration/oauth/oura/callback
  5. Select the scopes you want Sahha to ingest. Available scopes: email, personal, daily, heartrate, workout, tag, session, spo2, ring_configuration, stress, heart_health.

  6. Save, then copy your Client ID and Client Secret for the next step.


2. Create the integration in Sahha

  1. Go to the Sahha Dashboard .
  2. Navigate to 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.

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 doesn't have access to, otherwise the OAuth flow will fail.

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.


3. Connect a user

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

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}"
{
"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 .


Oura-specific notes

  • Scopes must match. A scope selected in Sahha but not enabled on your Oura app will fail the OAuth flow (see step 2).
  • 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 on the Integrations page.


Support

Need help? Contact support@sahha.ai or join the Slack Community .

Previous
Garmin
Next
SDK