What the blood pressure biomarkers measure
| Biomarker | What it is |
|---|---|
blood_pressure_systolic | The day’s average of the upper reading |
blood_pressure_diastolic | The day’s average of the lower reading |
| Field | blood_pressure_systolic, blood_pressure_diastolic |
|---|---|
| Unit | mmHg |
| Reported | Daily average, on days with at least one reading |
| Window | Midnight to midnight, profile local time |
| Wearable required | Yes, a connected cuff or a manual entry |
| API | GET /api/v1/profile/biomarker/{externalId}?categories=vitals plus one types parameter per field and a date range |
| Webhook | BiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id. |
Data sources
| Platform | Record | Notes |
|---|---|---|
| iOS, HealthKit | bloodPressureSystolic, bloodPressureDiastolic | Written by cuff apps such as Withings and Omron, and by the user in the Health app |
| Android, Health Connect | BloodPressureRecord | Same cuff apps, Samsung Health, and manual entries |
| Direct integrations | Provider-dependent | |
| Phone only | Manual 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
- 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.
- 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.
Related scores and insights
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-02A 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.
Related guides
- Blood glucose for the other logged vital
- Biomarkers vs data logs for per-reading access
- Data dictionary in the developer docs
References
- 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