Salt la continutul principal

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

MeasurementSource devicesLOINC / Code
Weight & body fatBody+, Body Cardio, Body Smart29463-7 weight, 41982-0 body fat %
Blood pressureBPM Core, BPM Connect85354-9 BP panel
Heart rateScanWatch, Pulse, BPM Core8867-4
Sleep sessionsSleep Analyzer, ScanWatch93832-4 sleep duration
Activity / stepsScanWatch, Pulse, Steel HR55423-8
SpO2ScanWatch59408-5
TemperatureThermo8310-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):

appliEvent
1New weight measurement
4New blood pressure reading
16New activity data
44New sleep session
50New workout
54Tracker + 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.


Next steps