Withings API
Token expiry
When the access token expires, HTTP status 200 OK
is returned, but the response body is as follows:
{
"status": 401,
"body": {},
"error": "XRequestID: Not provided invalid_token: The access token provided is invalid"
}
Fetching health data
Health records can be fetched via GET request as follows:
https://wbsapi.withings.net/measure?action=getmeas&meastypes=9,10,54,71,11
The type of vitals measurement is mapped as follows:
Code | Type | Unit |
---|---|---|
9 | Diastolic Blood Pressure | mmHg |
10 | Systolic Blood Pressure | mmHg |
11 | Heart Rate | bpm |
54 | SP02 | % |
71 | Body Temperature | °C |
Note the unit
-field in the response.
For body temperature, the unit
-field has the value -3
.
This means that to get the body temperature in °C, you must multiply the value
by 10^(-3)
.
The time of measurement can be parsed from the measuregrps
's date
field.
A successful response looks like so:
{
"status": 0,
"body": {
"updatetime": 1690491663,
"timezone": "Europe/Berlin",
"measuregrps": [
{
"grpid": 4716596696,
"attrib": 0,
"date": 1690491576,
"created": 1690491663,
"modified": 1690491663,
"category": 1,
"deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"hash_deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"measures": [
{
"value": 89,
"type": 9,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 109,
"type": 10,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 88,
"type": 11,
"unit": 0,
"algo": 0,
"fm": 3
}
],
"modelid": 44,
"model": "BPM Core",
"comment": null
},
{
"grpid": 4716596681,
"attrib": 0,
"date": 1690491236,
"created": 1690491662,
"modified": 1690491662,
"category": 1,
"deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"hash_deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"measures": [
{
"value": 65,
"type": 9,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 92,
"type": 10,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 88,
"type": 11,
"unit": 0,
"algo": 0,
"fm": 3
}
],
"modelid": 44,
"model": "BPM Core",
"comment": null
},
{
"grpid": 4712963495,
"attrib": 0,
"date": 1690375238,
"created": 1690375243,
"modified": 1690375243,
"category": 1,
"deviceid": "dbf7f61809d5fb350a16a50f6af6e826f0746082",
"hash_deviceid": "dbf7f61809d5fb350a16a50f6af6e826f0746082",
"measures": [
{
"value": 99,
"type": 54,
"unit": 0,
"algo": 33619971,
"fm": 3,
"apppfmid": 9,
"appliver": 2741,
"algo_params": {
"1": 0,
"2": 15
}
}
],
"modelid": null,
"model": null,
"comment": null,
"is_inconclusive": false
},
{
"grpid": 4712927310,
"attrib": 1,
"date": 1690374434,
"created": 1690374456,
"modified": 1690374486,
"category": 1,
"deviceid": "1d453daf947378fac40677e7a085eea73750b061",
"hash_deviceid": "1d453daf947378fac40677e7a085eea73750b061",
"measures": [
{
"value": 37370,
"type": 71,
"unit": -3,
"algo": 0,
"fm": 0
}
],
"modelid": null,
"model": null,
"comment": null
},
{
"grpid": 4712911433,
"attrib": 0,
"date": 1690373994,
"created": 1690374078,
"modified": 1690374078,
"category": 1,
"deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"hash_deviceid": "c405eb8e0e053f6601e151c7e43c04e29aad6956",
"measures": [
{
"value": 88,
"type": 9,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 124,
"type": 10,
"unit": 0,
"algo": 0,
"fm": 3
},
{
"value": 70,
"type": 11,
"unit": 0,
"algo": 0,
"fm": 3
}
],
"modelid": null,
"model": null,
"comment": null
}
]
}
}