WHOOP API integration

Live

Your end users can connect this provider today.

WHOOP's developer API exposes the four objects the product is built around — cycles, recovery, sleep and workouts. The data is high quality and the model is coherent, which makes WHOOP a favourite for recovery and readiness products.

The friction is in access and in the cycle model. WHOOP organises a day around a physiological cycle rather than a calendar date, so a "day" can start at 22:40 and the recovery score attaches to the cycle, not to the date your product probably keys on. WearLink resolves cycles to local calendar days during normalisation so your daily rollups line up with what the user expects.

Scopes matter more here than with most providers: each data family needs its own scope at authorisation time, and adding a scope later means re-consenting the user. WearLink requests the full set your plan permits up front so you are not forced through a second consent screen when you ship a new feature.

How the WHOOP integration works

Authentication
OAuth 2.0 authorisation code, scoped per data type
Sync model
Pull-based. WearLink polls on a schedule and emits a webhook to you when new records appear.
API base
https://api.prod.whoop.com/developer
Integration type
Cloud OAuth

WHOOP data available through WearLink

Everything below arrives in the shared normalised schema. The same field names and units apply whether the record came from WHOOP or from any other provider, so your scoring, charting and storage code is written once.

  • Recovery score
  • Strain
  • Sleep stages & sleep performance
  • HRV
  • Resting heart rate
  • Respiratory rate
  • SpO2
  • Workouts

Webhook events you can subscribe to

recovery_score.createdsleep.createdworkout.createdseries.heart_rate_variability.created

Connect a WHOOP user

Two calls: create a connect session for your end user, then read their normalised data. You never handle WHOOP OAuth credentials, token refresh or webhook registration.

# 1. Create a connect session for your end-user
curl -X POST https://wearlink.io/api/v1/connections/session \
  -H "Authorization: Bearer $WEARLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "'"$USER_ID"'", "provider": "whoop"}'

# → { "connect_url": "https://wearlink.io/widget/connect?token=..." }
# Redirect the user there; they authorise whoop and land back on your redirect_uri.

# 2. Pull normalised data whenever you want
curl -H "Authorization: Bearer $WEARLINK_API_KEY" \
  "https://wearlink.io/api/v1/users/$USER_ID/summaries?provider=whoop&days=7"

What makes the WHOOP API hard to integrate directly

These are the things that turn an estimated one-week integration into a one-month one. They are worth knowing whether you use WearLink or build it yourself.

Cycles are not days

A WHOOP cycle boundary is physiological, not midnight. Naively grouping by cycle start date produces off-by-one-day recovery scores for anyone who sleeps past midnight — which is most people.

Scopes are consent-time, not request-time

If you did not ask for the sleep scope during authorisation you cannot read sleep later without sending the user back through the consent flow.

Rate limits punish backfill

Pulling long histories for many users at once will hit limits. WearLink queues and paces historical backfill per connection rather than fanning out.

WHOOP API — frequently asked questions

How do I get access to the WHOOP API?
You register an application in the WHOOP developer portal and request OAuth credentials. Access to production and the breadth of available scopes depends on WHOOP's review of your use case.
Does the WHOOP API give real-time strain?
No. WHOOP publishes strain and recovery once the band syncs and the cycle is scored, not as a live stream. WearLink notifies your webhook endpoint as soon as a scored record is available.
Can I combine WHOOP recovery with Oura readiness?
Yes — both normalise into the recovery_score category, so you can compare or fall back between them without provider-specific code. Provider priority settings decide which wins when a user has both.

Other integrations

Start with WHOOP — free for up to 3 users

No credit card. Create an account, add your provider credentials once, and your users connect through a hosted widget or our mobile SDK.