Raw data
Access to raw data is a special feature available only for contracted partners. If you are interested in using this feature, please contact us.
The Raw Data API provides access to unprocessed sensor signals captured directly from the Withings ScanWatch. This includes accelerometer and optical sensor (PPG) data sampled at approximately 25 Hz, enabling partners to build custom algorithms for motion analysis, heart rate variability studies, and other advanced health research use cases. Unlike processed health metrics, raw data gives full control over signal interpretation and is designed for research and clinical applications that require granular, high-frequency sensor output.
Available services
The Raw Data API consists of 3 webservices:
Rawdata v2 - Activate
This service allows to request the activation of Raw Data collection on a specific device already setup, and set the date at which the raw data collection will stop (enddate). The raw data capture will be activated as soon as the watch is able to sync with the Withings app following the Rawdata v2 - Activate API call. The capture will stop automatically at the enddate provided in the Rawdata v2 - Activate API call.
Raw data activation will put the Withings device in a specific mode that will disable all features except raw data capture. Raw data activation will strongly impact battery life of the device, it will typically drop four to seven times faster when raw data capture is activated. For Withings ScanWatch, continuous collection of raw data would reduce battery life to 3-4 days. We advise that you find the right balance between collecting raw data and optimizing battery life for your users.
Rawdata v2 - Deactivate
The role of this service is to de-activate raw data capture. Raw Data de-activation will occur as soon as the Withings device is able to sync with the Withings app.
Rawdata v2 - Get
The role of this service is to fetch raw data of a specific type that were previously captured by the Withings device.
Structure of raw data
Detailed information about the data structure can be found in the API Reference.
How to parse raw data properly
Example of body.rawdata object for Optical Sensor (PPG)
{
"rawdata": [
{
"data": {
"agc_green_adc_range": [3, 3, 3, 3],
"agc_green_current_ua": [28188, 28188, 28188, 28188],
"agc_ir_adc_range": [3, 3, 3, 3],
"agc_ir_current_ua": [42768, 42768, 42768, 42768],
"agc_red_adc_range": [3, 3, 3, 3],
"agc_red_current_ua": [69984, 69984, 69984, 69984],
"id": [124525, 124526, 124527, 124528],
"ppg_green": [415607, 415595, 415587, 415578],
"ppg_ir": [445317, 445329, 445328, 445324],
"ppg_red": [451761, 451769, 451742, 451734],
"timestamp": [1656329019, 1656329019, 1656329019, 1656329019]
},
"hash_deviceid": "00d27f2d3b8d778ac56a831663ebec528085faa0",
"type": 2,
"format_version": 2,
"firmware_version": 2561,
"sensor_name": "MAX8614X_PPG_AGC",
"startdate": 1656329019,
"enddate": 1656329071
}
]
}
Example of body.rawdata object for Accelerometer
{
"rawdata": [
{
"data": {
"acc_x": [19, 19, 22, 20],
"acc_y": [49, 48, 64, 58],
"acc_z": [657, 663, 662, 659],
"id": [73141, 73142, 73143, 73144],
"timestamp": [1656322724, 1656322724, 1656322724, 1656322724]
},
"hash_deviceid": "00d27f2d3b8d778ac56a831663ebec528085faa0",
"type": 1,
"format_version": 2,
"firmware_version": 2561,
"sensor_name": "ADXL362_RAW",
"startdate": 1656322724,
"enddate": 1656322740
}
]
}
Details on sensors and raw data
- Accelerometer:
- 3 axis digital accelerometer (x, y and z) configured with a sensing range of +- 4 g
- Data for each axis is provided with a sensitivity of ~ 2 mg
acc_x: x axis dataacc_y: y axis dataacc_z: z axis data
- Optical Sensor
- 3 wavelengths digital photoplethysmograph (green, red and infrared) provided on a positive 19 bits range (from 0 to 2^19 - 1)
- The optical driver is configured to adapt the emitted light intensity and the reception gain automatically
- For each wavelength, data is provided with additional information regarding intensity and gain settings
ppg_green: green wavelength dataagc_green_current_ua: green emitter electrical current in microampereagc_green_adc_range: green channel gain setting
ppg_red: red wavelength dataagc_red_current_ua: red emitter electrical current in microampereagc_red_adc_range: red channel gain setting
ppg_ir: infrared wavelength dataagc_ir_current_ua: infrared emitter electrical current in microampereagc_ir_adc_range: infrared channel gain setting
- Optionally, digital optical data can be converted to get the electrical current flowing from the photodiode receiver, by using the intensity and gain settings described above:
ppg_green_ua[in microampere] =ppg_green* 2^agc_green_adc_range*adc_range_min_lsb_ua- with
adc_range_min_lsb_ua= 7.8125 * 10^-6 microampere
- with
Both sensors sampling rate are about 24.824 Hz