Withings Integration
Withings (formerly Nokia Health) makes a broad family of connected health devices: smart scales, blood pressure monitors, sleep trackers, smartwatches, and thermometers. vitalera integrates with the Withings Public Cloud API through the unified connected_accounts framework.
Data types
| Measurement | Source devices | LOINC / Code |
|---|---|---|
| Weight & body fat | Body+, Body Cardio, Body Smart | 29463-7 weight, 41982-0 body fat % |
| Blood pressure | BPM Core, BPM Connect | 85354-9 BP panel |
| Heart rate | ScanWatch, Pulse, BPM Core | 8867-4 |
| Sleep sessions | Sleep Analyzer, ScanWatch | 93832-4 sleep duration |
| Activity / steps | ScanWatch, Pulse, Steel HR | 55423-8 |
| SpO2 | ScanWatch | 59408-5 |
| Temperature | Thermo | 8310-5 body temperature |
Connection
Withings uses OAuth 2.0 with comma-separated scopes (non-standard) and wraps all responses in a body envelope.
Initiate connection
curl -X POST https://api.vitalera.io/api/connected-accounts/withings/oauth/initiate/ \
-H "Authorization: Bearer <user_token>" \
-H "Content-Type: application/json" \
-d '{"redirect_uri": "https://app.example.com/callback"}'
Response:
{
"authorization_url": "https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=...&scope=user.info,user.metrics,user.activity&state=...&redirect_uri=...",
"state": "9c4d...snip"
}
Disconnect
curl -X POST https://api.vitalera.io/api/connected-accounts/withings/oauth/disconnect/ \
-H "Authorization: Bearer <user_token>"
Webhooks
Withings delivers push notifications when new measurements are available. vitalera verifies the HMAC-SHA256 signature and fetches the corresponding deltas.
Supported notification types (appli codes):
| appli | Event |
|---|---|
| 1 | New weight measurement |
| 4 | New blood pressure reading |
| 16 | New activity data |
| 44 | New sleep session |
| 50 | New workout |
| 54 | Tracker + activity update |
Response envelope
All Withings endpoints wrap results in body:
{
"status": 0,
"body": {
"measuregrps": [
{
"grpid": 2398765,
"date": 1745126400,
"measures": [{ "value": 72350, "type": 1, "unit": -3 }]
}
]
}
}
vitalera normalises these into FHIR R5 Observation resources so you never deal with the raw format.