---
title: WHOOP Integration
subtitle: Connect WHOOP data to Sahha via the WHOOP API.
---


## Overview

Connect **WHOOP** data to Sahha via the WHOOP API. You register an app with WHOOP, add it to Sahha as an integration, configure webhooks, 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.

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

---

## 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 %}

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

---

## 1. Register your WHOOP app

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

1. Sign in to the [WHOOP Developer Dashboard](https://developer-dashboard.whoop.com/).
2. Create a new 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:

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

5. Select the scopes you want Sahha to ingest. Available scopes: `read:profile`, `read:recovery`, `read:cycles`, `read:sleep`, `read:workout`, `read:body_measurement`, and `offline` (refresh-token access for continuous sync).
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](https://app.sahha.ai/dashboard).
2. Navigate to **Integrations → Integrations** in the sidebar.
3. Click **Add integration** and select **WHOOP** from the Provider dropdown.
4. Paste in your WHOOP **Client ID** and **Client Secret**.
5. In the **Scopes** dropdown, select the same scopes you enabled on your WHOOP 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 WHOOP 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 %}

After saving, the dashboard displays a **webhook URL** for this integration. You'll need it next.

---

## 3. Configure WHOOP webhooks

WHOOP sends Sahha a webhook when new data is available, and Sahha pulls the data from the WHOOP API in response. You must add Sahha's webhook URL to your application in the WHOOP Developer Dashboard — it isn't configured automatically.

1. In the [WHOOP Developer Dashboard](https://developer-dashboard.whoop.com/), open your application.
2. Click **Edit application** and paste the webhook URL from your Sahha integration into the **webhookUrl** field. Make sure the **model version** is set to **V2**.
3. Ensure the application's **scopes** match the scopes you selected in the Sahha Dashboard (step 2).
4. Save.

---

## 4. Connect a user

Start the OAuth flow with the user's profile token. WHOOP's slug is `whoop`:

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

```json title="Response"
{
	"authorizationUrl": "https://api.prod.whoop.com/oauth/oauth2/auth?..."
}
```

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).

---

## WHOOP-specific notes

- **Redirect URI must match.** WHOOP fails the OAuth flow unless the Sahha callback URL is registered in your app's allowed redirect URIs (see step 1, item 4).
- **Historical backfill.** Sahha backfills 30 days on connect.
- **Webhooks must be enabled.** See step 3 — without a registered webhook URL, no data is delivered to Sahha.

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).
