Easily estimate vital signs from video
The VitalLens API estimates vital signs such as heart-rate and respiratory-rate from video of the face and upper body. Click any icon below to jump straight to that section of the docs.
Try the API in Your Browser
You can now test the VitalLens API right in your browser using our JavaScript client. See how it estimates vital signs from your webcam or video files.
API Plans
Choose the plan that suits your needs. Monthly plans can be cancelled anytime.
Are you planning to use the API for academic purposes? Ask us about educational discounts.
Frequently asked questions
For a deeper technical dive, see our explainer article: Understanding Remote Photoplethysmography .
The API provides an estimate of the pulse and respiratory waveforms at the same sampling rate as the video. From these, HR and RR are derived.
It is theoretically possible to derive heart rate variability (HRV) as well, but this has not yet been validated. Future releases may include additional vital signs such as blood oxygen (SpO2) and blood pressure (BP).
We conducted a study on the Vital Videos dataset (289 participants) showing a mean absolute error for HR at 0.71 bpm and for RR at 0.76 bpm.
Lower confidences indicate less accuracy, which can be improved with high-quality videos.
{
'face': {
'confidence': Face live confidence for each frame,
'note': Explanatory note
},
'vital_signs': {
'heart_rate': {
'value': Estimated value as float scalar,
'unit': Value unit,
'confidence': Estimation confidence as float scalar,
'note': Explanatory note
},
'respiratory_rate': {
'value': Estimated value as float scalar,
'unit': Value unit,
'confidence': Estimation confidence as float scalar,
'note': Explanatory note
},
'ppg_waveform': {
'data': Estimated waveform value for each frame,
'unit': Data unit,
'confidence': Estimation confidence for each frame,
'note': Explanatory note
},
'respiratory_waveform': {
'data': Estimated waveform value for each frame,
'unit': Data unit,
'confidence': Estimation confidence for each frame,
'note': Explanatory note
},
},
'message': Message about estimates
}
- Keep the subject still and facing the camera.
- Ensure a bright and steady light source.
- Use as little video compression as possible if you need to encode the video before using the VitalLens API. Video compression can destroy the vitals signal.
If you are using our Python Client with a longer video, it will be split into overlapping segments and use slightly more frames.