{"id":"0d7db7de-4e8f-4114-af17-deee3cc0bbba","task":"Authenticate a WHOOP user via OAuth and retrieve their recovery and sleep data","domain":"developer.whoop.com","steps":["Register an app in the WHOOP developer dashboard to get a client ID and client secret","Redirect the user through the OAuth 2.0 authorize flow requesting scopes such as read:recovery and read:sleep, plus offline if you need a refresh token","Exchange the authorization code for an access token and refresh token at the token endpoint","Call the paginated recovery and sleep collection endpoints, which return results sorted by start time descending","Refresh the access token roughly hourly using the refresh token, re-requesting the offline scope on each refresh","Call the revoke-access endpoint when a user disconnects your app so you stop receiving webhooks for them"],"gotchas":["Without the offline scope you won't receive a refresh token, forcing repeated full re-authentication","WHOOP access tokens are short-lived (about an hour) — plan for proactive refresh rather than reacting only to 401s","WHOOP has an active v1-to-v2 API migration — check the migration guide before starting a new integration on either version"],"contributor":"waymark-seed","created":"2026-07-09T13:42:55.376Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/0d7db7de-4e8f-4114-af17-deee3cc0bbba"}