VitalLens API

Harness the capabilities of VitalLens in your own products.

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.

Input

Video Input

VitalLens API

On our roadmap:
iOS SDK,
Android SDK

Estimated Vitals

On our roadmap:
Heart Rate Variability (HRV),
Blood Oxygen (SpO2),
Blood Pressure (BP)

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.

Free

$0/mo

  • 50K frames/mo
  • 2 requests/sec

Pro

$200/mo

  • 2M frames/mo
  • 25 requests/sec
  • SLA guarantee
  • Email support

Enterprise

$1000/mo

  • 20M frames/mo
  • 250 requests/sec
  • SLA guarantee
  • Phone and email support

Prepaid

$500

  • 4M frames(one‑off)
  • 25 requests/sec
  • SLA guarantee
  • Email support

Are you planning to use the API for academic purposes? Ask us about educational discounts.

Feature Free Pro Enterprise Prepaid
Type Monthly Monthly Monthly Prepaid
Price $0/mo $200/mo $1000/mo $500
Frame Credits 50K frames/mo 2M frames/mo 20M frames/mo 4M frames (one‑off)
Overage Charge $0.1/1K frames $0.05/1K frames
Rate Limit 2 requests/sec 25 requests/sec 250 requests/sec 25 requests/sec
SLA Guarantee
Email Support
Phone Support

Frequently asked questions

The VitalLens API is a web-based service that estimates a person's vital signs from a video of their face and upper body.

TLDR: Heart rate (HR), respiratory rate (RR), pulse waveform, and respiratory waveform.

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).

TLDR: Estimates are highly accurate for high-quality video. Each estimate includes an estimation confidence.

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.

To get access to the VitalLens API, please first use the button above to register for an API Key. You will receive an email with a link to verify your account. Once verified, we will automatically generate your unique API Key associated with the free plan. You can then log in on this page to view your API Key and start using the VitalLens API.

For each request, the VitalLens API accepts a maximum of 900 frames of spatially downsampled video depicting a single person's face and upper body at resolution 40x40px. This video is passed through our estimation engine, which produces estimates for several vital signs. These estimates are then sent back, after which both the video frames and estimates are disposed of.

Please consult our API Documentation to learn how to use the VitalLens API.

The returned object for a request to the VitalLens API looks like this:

{
  '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
}

Our Python Client, JavaScript Client, and SDKs are provided to handle face detection, video cropping and spatial downsampling, splitting of longer videos, as well as API interaction for you.

- Minimize camera movement.
- 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.

The accounting unit is the number of video frames analyzed. Each frame is assumed to have only one face present. For example, if you have a one-minute video depicting one person at a frame rate of 30 fps, that use 60 seconds x 30 fps = 1,800 frames.
If you are using our Python Client with a longer video, it will be split into overlapping segments and use slightly more frames.

Please contact us at vitallens@rouast.com.

No, we do not collect or store any of your video or vital sign estimates data. After returning the API request result, we immediately dispose of this data - hence it is your responsibility to store the returned estimates. Please also see our Terms of Service for more information.

No, VitalLens is not a medical device and its estimates are not intended for any medical purposes. Please also see our Terms of Service for more information.