Skip to content

Body Composition & Weight API

Body Composition data from every wearable, in one schema

Weight, BMI, body fat, lean mass and skeletal muscle mass from connected scales and platforms.

Body Composition visualisation

5/6

providers connectable today

9

webhook event types

Canonical unit

kilograms, metres, percentage

What body composition looks like through one API

Body composition comes almost entirely from connected scales, and it carries a structural problem the other metrics do not: a household scale is used by more than one person. Providers attempt to attribute readings to a profile using weight proximity and impedance signatures, and they get it wrong often enough that products need an explicit policy for outliers.

WearLink normalises to kilograms, metres and percentages, and emits each component as its own series so a product that only needs weight is not forced to parse an eleven-field composition object. Waist circumference and skeletal muscle mass are carried where the platform supplies them, typically from manual entry or a smart scale rather than a wearable.

Because these readings are episodic rather than continuous — a user steps on a scale some mornings and not others — the API returns what exists rather than interpolating a daily series. Building a trend line is your decision, and it should be, since the right smoothing depends on what you are showing.

Where providers disagree

Impedance-based body fat is an estimate, and a variable one

Bioelectrical impedance readings shift with hydration, recent food, recent exercise and even foot moisture. Day-to-day changes in body-fat percentage frequently reflect fluid, not fat. Present trends over weeks; a daily body-fat chart will look alarming and mean nothing.

Multi-user scales misattribute readings

A shared household scale will occasionally assign one person's weight to another's profile. If your product does anything consequential with weight, filter physiologically implausible jumps rather than trusting attribution.

Manual entries mix with device readings

Apple Health and Health Connect return both device-measured and hand-typed values in the same stream. Manual entries are frequently stale or estimated. The source attribution on each sample lets you separate them; the raw stream does not.

Stale height silently corrupts BMI and lean mass

BMI and several derived composition figures depend on height, which a user enters once during setup and effectively never updates. For adults the error is usually small; for adolescent users, or for anyone who mistyped units at signup, it is not, and it propagates into every derived value without ever looking wrong. Some platforms also carry height as its own series with its own timestamp, so a device-reported weight can be combined with a height entered years earlier. Check the age of the height sample before trusting anything derived from it.

Webhook events for body composition

Summary: body_composition.created

Series streams:

  • series.weight.created
  • series.height.created
  • series.body_mass_index.created
  • series.body_fat_percentage.created
  • series.body_fat_mass.created
  • series.lean_body_mass.created
  • series.skeletal_muscle_mass.created
  • series.waist_circumference.created

The full catalogue is in the event catalogue.

FAQ

Body Composition — frequently asked questions

Which connected scales work with WearLink?
Withings on the cloud side, plus anything writing into Apple Health, Health Connect or Samsung Health — which covers most consumer smart scales indirectly. Fitbit and Garmin also report composition from their own scale hardware.
Can I tell a manual weight entry from a scale reading?
Yes — source attribution is preserved on each sample, so hand-typed values can be filtered or flagged rather than silently treated as measurements.
Why does body fat percentage jump between days?
Impedance measurement is sensitive to hydration and recent activity. The physiological change is real but it is fluid, not fat mass. Smooth over weeks.

Get body composition from every device your users own

Free for up to 3 connected users. No credit card. Your first API key is issued the moment you sign up.