Access WHOOP fitness tracker data via API, including recovery scores, sleep metrics, workout stats, daily strain, and body measurements. Use when the user asks about their WHOOP data, fitness metrics, recovery status, sleep quality, workout performance, or wants to track health trends.
Retrieve and analyze fitness data from WHOOP wearables via the official REST API.
# Install (if using Clawdhub)
clawdhub install whoop-tracker
# From the skill root:
python3 scripts/get_recovery.py --today
python3 scripts/get_sleep.py --last
python3 scripts/get_workouts.py --days 7
python3 scripts/get_profile.py
requests library: pip3 install requestsbash scripts/install.sh)client_id and client_secrethttp://localhost:8080/callback)mkdir -p ~/.whoop
cat > ~/.whoop/credentials.json <<EOF
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
EOF
chmod 600 ~/.whoop/credentials.json
WhoopClient.authenticate(code, redirect_uri)All scripts are run from the skill root directory:
# Today's recovery
python3 scripts/get_recovery.py --today
# Last night's sleep
python3 scripts/get_sleep.py --last
# Recent workouts
python3 scripts/get_workouts.py --days 7
# User profile
python3 scripts/get_profile.py
Base URL: https://api.prod.whoop.com
See references/api-reference.md for full endpoint documentation with response schemas.
User Profile:
GET /v1/user/profile/basic — Name, emailGET /v1/user/body_measurement — Height, weight, max HRRecovery:
GET /v1/recovery — All recovery data (paginated)GET /v1/cycle/{cycleId}/recovery — Recovery for specific cycleSleep:
GET /v1/sleep — All sleep records (paginated)GET /v1/sleep/{sleepId} — Specific sleep by IDGET /v1/cycle/{cycleId}/sleep — Sleep for specific cycleCycle:
GET /v1/cycle — All physiological cycles (paginated)GET /v1/cycle/{cycleId} — Specific cycle by IDWorkout:
GET /v1/workout — All workouts (paginated)GET /v1/workout/{workoutId} — Specific workout by IDAll collection endpoints support start, end (ISO 8601), limit (max 25), and nextToken (pagination cursor).
read:profile — User name and emailread:body_measurement — Height, weight, max HRread:recovery — Recovery scores and HRVread:sleep — Sleep metrics and stagesread:cycles — Daily strain dataread:workout — Activity and workout datascripts/whoop_client.pyCore API client. Features:
iter_recovery, iter_sleep, iter_cycles, iter_workouts)scripts/get_recovery.pypython3 scripts/get_recovery.py --today # Today's recovery
python3 scripts/get_recovery.py --days 7 # Past week
python3 scripts/get_recovery.py --start 2026-01-20 # From date
python3 scripts/get_recovery.py --json # Raw JSON output
scripts/get_sleep.pypython3 scripts/get_sleep.py --last # Last night
python3 scripts/get_sleep.py --days 7 # Past week
python3 scripts/get_sleep.py --json # Raw JSON output
scripts/get_workouts.pypython3 scripts/get_workouts.py --days 7 # Past week
python3 scripts/get_workouts.py --sport running # Filter by sport
python3 scripts/get_workouts.py --json # Raw JSON output
scripts/get_profile.pypython3 scripts/get_profile.py # Profile + body measurements
python3 scripts/get_profile.py --json # Raw JSON output
scripts/install.shbash scripts/install.sh # Install pip dependencies + setup guide
Install dependencies: pip3 install requests or bash scripts/install.sh
Create the file with your OAuth client_id and client_secret (see Quick Start step 2).
Complete the OAuth authorization flow (see references/oauth.md).
Your refresh token has expired. Re-authorize from the authorization URL.
Rate limit hit. The client automatically retries after the Retry-After period.
Check your date range — use --days 7 or wider range. Ensure your OAuth scopes include the data type you're requesting.