Fetches health data from the Withings API for multiple family members including weight, body composition (fat, muscle, bone, water), activity, and sleep. Use this skill when the user asks about their or their family's Withings data, weight history, body metrics, daily steps, sleep quality, or any health measurement from Withings devices.
This skill allows you to interact with Withings accounts for multiple family members to retrieve comprehensive health metrics from Withings devices (smart scales, sleep analyzers, activity trackers, etc.).
This skill natively supports multiple users with per-user token files:
tokens-alice.json
tokens-bob.json
tokens-charlie.json
Each family member authenticates once via OAuth. Their tokens are stored separately and refreshed automatically. No token copying or switching required — just pass the user ID as the first argument.
python3 scripts/withings.py alice weight
python3 scripts/withings.py bob sleep
python3 scripts/withings.py charlie activity
Use this skill when the user:
Before using this skill, you need to create a free Withings developer application to get your API credentials.
http://localhost:18081 (required for OAuth)Once your application is created:
WITHINGS_CLIENT_ID environment variableWITHINGS_CLIENT_SECRET environment variableAdd these to your Clawdbot environment:
export WITHINGS_CLIENT_ID="your_client_id_here"
export WITHINGS_CLIENT_SECRET="your_client_secret_here"
Or create a .env file in ~/.clawdbot/withings-family/.env:
WITHINGS_CLIENT_ID=your_client_id_here
WITHINGS_CLIENT_SECRET=your_client_secret_here
The skill provides two scripts (in scripts/):
scripts/withings_oauth_local.py — Automatic OAuth with local callback server (recommended)scripts/withings.py — Main CLI + manual OAuthCredentials location: ~/.clawdbot/withings-family/
.env — Client ID/Secret (optional, can use ENV vars instead)tokens-<userId>.json — OAuth tokens per user (mode 600)Before any data retrieval, check if the user is authenticated. If an error mentions "No token found", guide the user through the initial authentication process for that specific user.
Uses a local callback server to capture the code automatically:
python3 {baseDir}/scripts/withings_oauth_local.py <userId>
Example:
python3 {baseDir}/scripts/withings_oauth_local.py alice
The script will:
tokens-<userId>.jsonTraditional two-step flow (see "Authentication" command below).
All commands follow the format:
python3 {baseDir}/scripts/withings.py <userId> <command> [options]
First-time setup for a user — generates the OAuth URL:
python3 {baseDir}/scripts/withings.py alice auth
After the user visits the URL and gets the authorization code:
python3 {baseDir}/scripts/withings.py alice auth YOUR_CODE_HERE
Repeat for each family member who needs access.
Retrieve the latest weight measurements:
python3 {baseDir}/scripts/withings.py alice weight
Returns the 5 most recent weight entries in JSON format.
Example output:
[
{ "date": "2026-01-17T08:30:00.000Z", "weight": "75.40 kg" },
{ "date": "2026-01-16T08:15:00.000Z", "weight": "75.65 kg" }
]
Retrieve comprehensive body metrics (fat, muscle, bone, water, BMI):
python3 {baseDir}/scripts/withings.py alice body
Returns the 5 most recent body composition measurements.
Example output:
[
{
"date": "2026-01-17T08:30:00.000Z",
"weight": "75.40 kg",
"fat_percent": "18.5%",
"fat_mass": "13.95 kg",
"muscle_mass": "35.20 kg",
"bone_mass": "3.10 kg",
"hydration": "55.2%"
}
]
Retrieve daily activity data (steps, distance, calories):
python3 {baseDir}/scripts/withings.py alice activity
Optionally specify the number of days (default: 7):
python3 {baseDir}/scripts/withings.py alice activity 30
Example output:
[
{
"date": "2026-01-17",
"steps": 8542,
"distance": "6.23 km",
"calories": 2150,
"active_calories": 450,
"soft_activity": "45 min",
"moderate_activity": "22 min",
"intense_activity": "8 min"
}
]
Retrieve sleep data and quality:
python3 {baseDir}/scripts/withings.py alice sleep
Optionally specify the number of days (default: 7):
python3 {baseDir}/scripts/withings.py alice sleep 14
Example output:
[
{
"date": "2026-01-17",
"start": "23:15",
"end": "07:30",
"duration": "8h 15min",
"deep_sleep": "1h 45min",
"light_sleep": "4h 30min",
"rem_sleep": "1h 30min",
"awake": "30min",
"sleep_score": 82
}
]
Common errors and how to resolve them:
| Error | Cause | Solution |
|---|---|---|
| "No token found" | User not authenticated | Run python3 scripts/withings.py <userId> auth and follow the OAuth flow |
| "Failed to refresh token" | Token expired and refresh failed | Re-authenticate with python3 scripts/withings.py <userId> auth |
| "API Error Status: 401" | Invalid or expired credentials | Check your CLIENT_ID and CLIENT_SECRET, re-authenticate |
| "API Error Status: 503" | Withings API temporarily unavailable | Wait and retry later |
| Empty data | No measurements in the requested period | User needs to sync their Withings device |
tokens-{userId}.json)user.metrics, user.activity