September 3, 2026 · 3 min read

Blood pressure

Where cuff readings come from, how a day's readings are averaged, why the data is sparse and partly manual, and what to build.

What the blood pressure biomarkers measure

BiomarkerWhat it is
blood_pressure_systolicThe day’s average of the upper reading
blood_pressure_diastolicThe day’s average of the lower reading
Fieldblood_pressure_systolic, blood_pressure_diastolic
UnitmmHg
ReportedDaily average, on days with at least one reading
WindowMidnight to midnight, profile local time
Wearable requiredYes, a connected cuff or a manual entry
APIGET /api/v1/profile/biomarker/{externalId}?categories=vitals plus one types parameter per field and a date range
WebhookBiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id.

Data sources

PlatformRecordNotes
iOS, HealthKitbloodPressureSystolic, bloodPressureDiastolicWritten by cuff apps such as Withings and Omron, and by the user in the Health app
Android, Health ConnectBloodPressureRecordSame cuff apps, Samsung Health, and manual entries
Direct integrationsProvider-dependent
Phone onlyManual entries only

Readings carry a recording method, automatic or manual. An account that wants to exclude manually typed readings can ask Sahha to filter them.

How Sahha calculates blood pressure

  1. Pick one source for the day within the blood category, which also covers glucose. One source wins per day; readings from different apps are never blended.
  2. Average that source’s readings of each kind with an end time inside the local day.

Absence means no reading that day. This is the normal state for most users most days.

Interpreting the value

A daily average hides the reading context. Morning and evening readings differ, and clinical guidance is built on repeated seated readings under set conditions [1]. The biomarker is a summary, not a clinical series. For per-reading detail with timestamps, use data logs.

Trends over weeks are the useful view. A single day’s value is one or two cuff readings. The 30-day average of systolic is what a clinician would want to see.

Blood pressure is not a score factor and has no trend or comparison insight.

Use cases

A last-reading card. Show the most recent day’s systolic over diastolic with its date, and how many readings the user has logged in the last 30 days. Do not draw a daily line through mostly empty days.

GET /api/v1/profile/biomarker/{externalId}?categories=vitals&types=blood_pressure_systolic&types=blood_pressure_diastolic&startDateTime=2026-08-03&endDateTime=2026-09-02

A reminder loop. For users who own a cuff, the absence of a reading for a set number of days is the trigger. The biomarker’s absence is the feature.

Limitations

  • Sparse and user-driven. Coverage depends entirely on whether the user owns and uses a cuff.
  • Manual entries are included by default. Typed readings are as valid to the pipeline as cuff readings unless filtered.
  • Not diagnostic. Present category thresholds only if your product has clinical oversight.
  • Absence is not zero.

References

  1. Whelton PK, Carey RM, Aronow WS, et al. 2017 ACC/AHA/AAPA/ABC/ACPM/AGS/APhA/ASH/ASPC/NMA/PCNA guideline for the prevention, detection, evaluation, and management of high blood pressure in adults. Hypertension. 2018;71(6):e13-e115. https://doi.org/10.1161/HYP.0000000000000065

Related