September 3, 2026 · 4 min read

Weight, height, and BMI

Where readings come from, why these are point-in-time values rather than daily totals, where BMI actually comes from, and what to build.

What the biomarkers measure

BiomarkerWhat it isUnit
weightThe latest weight reading on the dayKilograms
heightThe latest height reading on the dayMetres
body_mass_indexThe latest BMI reading on the day, as written by the sourcekg/m²
Fieldweight, height, body_mass_index
Unitkg, m, kg/m²
ReportedOn days with a reading. The latest reading of the day is kept.
WindowMidnight to midnight, profile local time
Wearable requiredNo
APIGET /api/v1/profile/biomarker/{externalId}?categories=body plus one types parameter per field and a date range
WebhookBiomarkerCreatedIntegrationEvent. Entries update in place, upsert on id.

These are point-in-time measurements, not daily aggregates. The data dictionary lists their periodicity as none for that reason. To get a profile’s current weight, query a wide date range and take the most recent entry.

Data sources

PlatformWeightHeightBMI
iOS, HealthKitbodyMass, from smart-scale apps such as Withings, Renpho, and Garmin Index, and manual entriesheight, usually entered oncebodyMassIndex, written by scale apps that compute it
Android, Health ConnectWeightRecord, from scale apps and Samsung HealthHeightRecordNo record. Not available.
Direct integrationsWHOOP supplies height and weight from its body measurements
Phone onlyManual entriesManual entriesiOS manual entry only

How Sahha calculates weight, height, and BMI

  1. Pick one source for the day within the body category. A source that reports body fat outranks one that reports lean mass, which outranks one that reports only weight, so a smart scale wins over a manual entry. One source wins per day.
  2. Keep the latest reading from that source on the day. Multiple weigh-ins on one day collapse to the last.
  3. Convert units. Height arrives in centimetres and is stored in metres.

Absence means no reading that day.

Interpreting the value

Weight is noisy day to day. A kilogram of swing between mornings is water and food, not fat. A 7-day rolling average of weigh-ins is the standard presentation, and the one users trust.

Height is a fact, not a series. Store the latest and stop.

BMI needs a wearer of a compatible scale, or your own arithmetic. Because Sahha reads BMI rather than computing it, coverage is thin. Weight divided by height squared from the latest readings of each gives you a value for everyone with both.

None of the three is a score factor or has a trend or comparison insight. Weight and height are inputs to two other biomarkers:

  • Resting energy. When no device reports basal energy, Sahha computes it from the latest weight and height plus age and gender. See energy burned.
  • Estimated active energy multiplies MET-hours by the latest weight from the last 30 days, or 70 kg if none exists.

Keeping weight current therefore improves the energy biomarkers for every user without a wearable.

Use cases

A weight trend with a rolling average. Plot weigh-ins as dots and a 7-day average as the line. Query 90 days and let sparse users see sparse dots.

GET /api/v1/profile/biomarker/{externalId}?categories=body&types=weight&startDateTime=2026-06-05&endDateTime=2026-09-03

A profile completeness prompt. A user with no height or no weight in the last 30 days has less accurate energy biomarkers. One prompt fixes both.

Limitations

  • Point in time. Do not sum or average across days as if they were totals.
  • BMI is iOS-only in practice.
  • Manual entries count as readings from the phone source and lose to any scale.
  • Absence is not zero.

Related