SDK & integration

Bring Vitals AI into your own product

Vitals AI can run inside your own app or platform, not just as a standalone product. Here is what integrating it looks like.

On this page

The short answer

There are two ways to use Vitals AI. Use the hosted platform as-is with no code, or build it into your own product with a REST API, an SDK and webhooks. Create a scan, have the person complete a 30-second camera scan, receive the result by webhook the moment it finishes, and retrieve results through the API.

The REST API is documented with an OpenAPI specification, so you can generate a client in almost any language, and there is an official Node.js SDK today. Most integrations are running in minutes: add an API key, call one endpoint or drop in the SDK.

For full technical details, see the developer documentation. This page gives the integration overview. For the product overview and pricing, see the Vitals AI overview.

How does Vitals AI fit into an existing telehealth platform?


The hosted product needs no code: a person opens a secure link, runs a 30-second camera scan, and results appear in the Upvio dashboard (see the Vitals AI overview).

This page is for the second path: building Vitals AI into your own telehealth platform, patient portal or app instead of sending people to a separate hosted page. Integration runs through a REST API and an SDK, so a scan, a result and a patient record all live inside your existing product rather than a standalone tool your team has to context-switch into.

What do the API and SDK actually do?

Three actions cover most integrations:

  • Create scans. Trigger a vitals scan from your own workflow, tied to a record you already hold.

  • Generate secure links. Produce a link a person can open to run their scan, without building your own capture flow from scratch.

  • Retrieve results. Pull results back into your platform once a scan completes, so they sit alongside the rest of that record.

That is the core of it: create, link, retrieve. The REST API is documented with an OpenAPI specification, so you can generate a typed client in almost any language and build straight around it. There is an official Node.js SDK, and JavaScript, React and native mobile SDKs are available on request; contact the team for access. The API handles the data side; an SDK wraps common patterns so your engineers are not writing raw HTTP calls for every request.

What do you get without building everything yourself?

Upvio handles scan capture, the underlying rPPG processing and result generation. Your job is to decide how those results show up in your product: as an embedded scan flow inside your own interface, or as a link out to a dashboard view.

The platform is where you manage settings and generate the API keys and credentials for your integration, alongside creating and reviewing scans. To move fast, there are example apps that run from just an API key, so your team can see a working scan-to-result flow before writing any of their own.

For details on how scan data is handled and secured, see Vitals AI security. Security and integration are separate concerns: this page covers how you connect; the security page covers how data is protected once you do.

How long does it take to integrate?

Set-up is quick either way. The hosted platform needs no code at all. An API or SDK integration can be running in minutes: get your API key, call a single endpoint or add the SDK, and use the example apps as a starting point. From there, how much of the scan-to-result flow you customise, and how deeply you wire results into your own records, is up to you.

A typical build looks like this:

A TYPICAL INTEGRATION

API credentials

SDK or API Calls

Create links

Webhook results

  1. Get API credentials for your account from the platform.

  2. Install the Node SDK, or generate a client from the OpenAPI spec, or call the REST API directly.

  3. Create a scan and generate a secure link for the person being scanned.

  4. Receive the result by webhook when the scan completes, then display or store it in your own workflow.

Webhooks push each result to your endpoint the moment a scan finishes, so you do not have to poll the API. You can also retrieve results through the API when that suits your workflow. See the developer documentation for endpoints and payloads.

How do webhook payloads work?

Webhooks are the lightweight way to receive scan results. You do not need to build a full API or SDK integration first. A hosted Vitals AI setup can run the scan, then send the completed result to your chosen endpoint when the scan finishes.

When the scan finishes, your endpoint receives a payload similar to this:

EXAMPLE PAYLOAD

{

"id": "abc123def456ghi789jkl01",

"name": "vitalsScan.complete",

"createdAt": "2026-09-14T14:37:05.037Z",

"business": {

"id": "abc123def456ghi789jkl01"

},

"data": {

"id": "abc123def456ghi789jkl01",

"businessId": "abc123def456ghi789jkl01",

"createdAt": "2026-09-14T14:36:07.534Z",

"updatedAt": "2026-09-14T14:36:23.499Z",

"startedAt": "2026-09-14T14:36:23.494Z",

"statusUpdatedAt": "2026-09-14T14:37:04.953Z",

"status": "SUCCEEDED",

"verificationMethod": "EMAIL",

"patientId": "abc123def456ghi789jkl01",

"vitalsLinkId": "abc123def456ghi789jkl01",

"includedMetrics": [

"BLOOD_PRESSURE",

"HEART_RATE",

"HEART_RATE_VARIABILITY",

"BREATHING_RATE",

"STRESS_INDEX",

"PARASYMPATHETIC_ACTIVITY"

],

"results": {

"metrics": {

"heartRate": 56.27232262073541,

"heartRateVariability": 32.17829240181126,

"breathingRate": 15.68383111414867,

"stressIndex": 1.2,

"parasympatheticActivity": 20.426077290864406,

"cardiacWorkload": 131,

"bloodPressure": {

"diastolic": 82.87568664550781,

"systolic": 139.53390502929688

},

"bloodPressureDiastolic": 82.87568664550781,

"bloodPressureSystolic": 139.53390502929688

}

},

"metadata": {

"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36"

}

}

}

Your system can use the payload to display results, update a patient record, trigger a follow-up or pass the data into another workflow. You can also retrieve the result through the API when that suits your setup.

This works with a no-code deployment as well as a custom integration. You can run scans through the hosted platform and still send completed results to another system through a webhook. A full API or SDK integration is only needed when you want to control more of the scan experience or build the workflow directly into your product.

Webhooks remove the need to poll the API. When a scan finishes, the platform sends the payload to your endpoint. See the developer documentation for the current event types, payload fields and setup instructions.

Where does this fit: telehealth, EHR or wellness platforms?

Vitals AI is a general wellness tool, not a diagnostic device, and the integration path reflects that. Teams building it in tend to fall into a few groups:

  • Telehealth platforms. Adding a pre-visit or in-visit vitals check without sending patients to a separate app.

  • EHR-adjacent tools. Wanting scan results attached to an existing patient record rather than living in a second system.

  • Wellness and corporate health platforms. Wanting a lightweight vitals check inside an existing member experience.

Across all three the pattern is the same: create a scan, generate a link, retrieve a result, and decide how it surfaces in your product. What differs is where that result ends up and who sees it.

Where do I find the full technical reference?

This page is a bridge, not the manual. For endpoints, request and response formats, authentication, the OpenAPI specification and current SDK coverage, visit the developer documentation. Engineering teams use the developer documentation for implementation details. This page helps you assess the integration before development starts.

Questions, answered

How does Upvio Vitals AI integrate with an existing telehealth platform?

Through a REST API and an SDK. You create scans, generate secure scan links and retrieve results from inside your own platform, rather than sending people to a separate hosted product.

How long does it take to integrate into an existing app?

Minutes to a first working scan. The hosted platform needs no code, and an API or SDK integration can be running as soon as you have an API key and a single endpoint or the SDK in place. Example apps run from just a key. Deeper customisation of the scan-to-result flow takes as long as your own workflow needs.

Which SDKs and languages are supported?

There is an official Node.js SDK, and JavaScript, React and native mobile SDKs are available on request; contact the team for access. Because the REST API is documented with an OpenAPI specification, you can also generate a client in almost any language and build around it.

How are results delivered back to my platform?

Two ways. Webhooks push each result to your endpoint the moment a scan completes, or you retrieve results through the API when it suits your workflow. See https://developers.upvio.com for setup.

Is this the full API reference?

No. This page summarises how integration works. The full reference, with endpoints, payloads and the OpenAPI spec, is at https://developers.upvio.com.