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 requests (or run bash 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.
共 1 个版本