vitalsScan.abort
Vitals Scan Aborted. Sent when a vitals scan is abandoned, either because the patient left it or because it sat unfinished long enough for us to close it out.
All four vitalsScan.* events share one payload shape, so the table below
lists every field a scan can carry. For this event status is always
ABORTED. An aborted scan was never completed, so it has neither
results nor failureInfo.
Example
Section titled “Example”{ "id": "ckq7v1w1k0008zqxk7g3l5n2q", "name": "vitalsScan.abort", "createdAt": "2026-02-04T09:01:12.000Z", "business": { "id": "ckq7v1w1k0001zqxk3f8a9d4t" }, "data": { "id": "ckq7v1w1k0006zqxk4r8p2s5w", "businessId": "ckq7v1w1k0001zqxk3f8a9d4t", "createdAt": "2026-02-04T09:00:00.000Z", "updatedAt": "2026-02-04T09:01:12.000Z", "startedAt": "2026-02-04T09:00:35.000Z", "statusUpdatedAt": "2026-02-04T09:01:12.000Z", "status": "ABORTED", "verificationMethod": "EMAIL", "patientId": "ckq7v1w1k0004zqxk9j4h2g6r", "vitalsLinkId": "ckq7v1w1k0007zqxk2d6f9h1j", "includedMetrics": [ "heartRate", "breathingRate", "wellnessScore" ], "results": null, "failureInfo": null, "metadata": null }}Data fields
Section titled “Data fields”| Field | Type | Description |
|---|---|---|
id |
string |
Unique identifier across the Upvio platform. |
businessId |
string |
The business this scan belongs to. |
createdAt |
string |
ISO 8601 timestamp. |
updatedAt |
string |
ISO 8601 timestamp. |
startedAt |
string | null | undefined |
ISO 8601 timestamp. |
statusUpdatedAt |
string | null | undefined |
ISO 8601 timestamp. |
status |
string |
One of ABORTED, FAILED, PENDING, STARTED, SUCCEEDED. |
verificationMethod |
string | null | undefined |
How the identity behind the scan was established. EMAIL is a verified patient session, API was created through the business API, NONE had no email verification. One of API, EMAIL, NONE. |
patientId |
string | null | undefined |
Unique identifier across the Upvio platform. |
vitalsLinkId |
string | null | undefined |
Unique identifier across the Upvio platform. |
includedMetrics |
string[] |
|
results |
object | null | undefined |
Measured metrics. Only the metrics listed in includedMetrics are populated. |
failureInfo |
object | null | undefined |
Why the scan failed. Only present when status is FAILED. |
metadata |
object | null | undefined |
Whatever custom metadata was attached when the scan was created. Object with arbitrary keys. |
results
Section titled “results”| Field | Type | Description |
|---|---|---|
metrics |
object |
results.metrics
Section titled “results.metrics”| Field | Type | Description |
|---|---|---|
heartRate |
number | null | undefined |
Heart rate in beats per minute (BPM). |
heartRateVariability |
number | null | undefined |
Heart rate variability in milliseconds (ms). |
breathingRate |
number | null | undefined |
Breathing rate in breaths per minute (b/min). |
stressIndex |
number | null | undefined |
Stress index on a 0–10 scale (modified Baevsky method). Higher values indicate more stress. |
parasympatheticActivity |
number | null | undefined |
Parasympathetic activity as a percentage (0–100). |
cardiacWorkload |
number | null | undefined |
Cardiac workload (rate-pressure product) in mmHg/s. |
bloodPressure |
object | null | undefined |
Deprecated. Use bloodPressureSystolic and bloodPressureDiastolic. |
bloodPressureDiastolic |
number | null | undefined |
Diastolic blood pressure in mmHg. |
bloodPressureSystolic |
number | null | undefined |
Systolic blood pressure in mmHg. |
bmiClassification |
number | null | undefined |
Body Mass Index (BMI) in kg/m². |
wellnessScore |
number | null | undefined |
Overall wellness score on a 0–100 scale. Higher values indicate better wellness. |
vascularAge |
number | null | undefined |
Vascular age in years. |
atheroscleroticCvdRisk |
number | null | undefined |
10-year atherosclerotic cardiovascular disease (ASCVD) risk as a percentage (0–100). |
cardiovascularEventRisk |
number | null | undefined |
10-year risk of a hard cardiovascular event as a percentage (0–100). |
cardiovascularRiskScore |
number | null | undefined |
Framingham cardiovascular risk score in points: the sum of the points assigned to each risk factor under the Framingham general cardiovascular disease point system. Higher totals indicate higher risk. |
hypertensionRisk |
number | null | undefined |
Probability of developing hypertension within 4 years, as a percentage (0–100). |
diabetesRisk |
number | null | undefined |
Probability of developing diabetes within 8 years, as a percentage (0–100). |
fattyLiverDiseaseRisk |
number | null | undefined |
Fatty liver disease (NAFLD) risk category: 0 = Low, 1 = Moderate, 2 = High. |
waistToHeightRatio |
number | null | undefined |
Waist-to-height ratio (WHtR), unitless. |
bodyFatPercentage |
number | null | undefined |
Body fat as a percentage of body weight (0–100). |
bodyRoundnessIndex |
number | null | undefined |
Body roundness index (BRI), unitless. |
aBodyShapeIndex |
number | null | undefined |
A Body Shape Index (ABSI), unitless. |
conicityIndex |
number | null | undefined |
Conicity index (CI), unitless, ranging from 1.00 to about 1.73. |
basalMetabolicRate |
number | null | undefined |
Basal metabolic rate in kcal/day. |
totalDailyEnergyExpenditure |
number | null | undefined |
Total daily energy expenditure (TDEE) in kcal/day. |
results.metrics.bloodPressure
Section titled “results.metrics.bloodPressure”| Field | Type | Description |
|---|---|---|
diastolic |
number | null | undefined |
|
systolic |
number | null | undefined |
failureInfo
Section titled “failureInfo”| Field | Type | Description |
|---|---|---|
failureReason |
string |
Why the scan failed. timeout: the measurement ran past the maximum scan time while its progress was stalled below the completion threshold. results_processing_timeout: the measurement finished but its results were not processed in time. no_measurement_results: the measurement finished but produced no results. other: the measurement failed for any other reason. One of no_measurement_results, other, results_processing_timeout, timeout. |
totalScanDurationMs |
number | undefined |
How long the scan ran before failing, in milliseconds. Only present when failureReason is timeout or results_processing_timeout. |
stallDurationMs |
number | undefined |
Total time the scan made no progress, in milliseconds. Only present when failureReason is timeout or results_processing_timeout. |
finalProgressPercentage |
number | undefined |
Measurement progress when the scan failed, as a percentage (0–100). Only present when failureReason is timeout or results_processing_timeout. |
maxScanTimeThresholdMs |
number | undefined |
Maximum scan time allowed before the scan could time out, in milliseconds. Only present when failureReason is timeout or results_processing_timeout. |
maxStallTimeThresholdMs |
number | undefined |
Maximum time without progress allowed before the scan could time out, in milliseconds. Only present when failureReason is timeout or results_processing_timeout. |