---
title: "One scan with its regions"
method: GET
path: "/body-composition/scans/{id}"
tags: ["Body composition"]
---

# One scan with its regions

`GET /body-composition/scans/{id}`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/body-composition/scans/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required: Opaque identifier.

## Headers

- `X-Client-Platform` string
- `X-Client-Version` string

## Response `200`

OK

- object
  - `id` string, required: Opaque identifier.
  - `localDate` string, date, required: The day of the scan on the athlete's calendar.
  - `scannedAt` string, date-time, nullable, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
  - `source` string, required: How the scan was entered. Known values: manual, withings. Treat unknown values as "other".
  - `provider` string, nullable, required: The company or facility as the report prints it, e.g. BodySpec.
  - `scannerModel` string, nullable, required: The scanner as the report prints it, e.g. "GE Lunar iDXA".
  - `totalMassKg` number, nullable, required: Total mass, kilograms. Also recorded as a weigh-in, where it's given.
  - `fatMassKg` number, nullable, required: Fat mass, kilograms.
  - `leanMassKg` number, nullable, required: Lean (non-bone, non-fat) mass, kilograms.
  - `boneMassKg` number, nullable, required: Bone mineral mass, kilograms.
  - `tissueFatPct` number, nullable, required: Body fat percent of tissue, which excludes bone — the figure most reports headline.
  - `regionFatPct` number, nullable, required: Body fat percent including bone.
  - `androidGynoidRatio` number, nullable, required: Android fat over gynoid fat, where the report gives it.
  - `vatMassKg` number, nullable, required: Visceral adipose tissue mass, kilograms.
  - `vatVolumeCm3` number, nullable, required: Visceral adipose tissue volume, cm³.
  - `bmdGCm2` number, nullable, required: Whole-body bone mineral density, g/cm². A measurement from a whole-body scan, not a diagnostic bone density test, and not a T- or Z-score.
  - `bmcG` number, nullable, required: Bone mineral content, grams.
  - `boneAreaCm2` number, nullable, required: The bone area the density was measured over, cm².
  - `bmdAgeSexPercentile` integer, nullable, required: The report's own comparison of the whole-body bone density with people of the same age and sex, 1-99, as printed. A comparison with a reference group, not a diagnosis.
  - `bmdPeakSexPercentile` integer, nullable, required: The report's own comparison with 30-year-olds of the same sex, 1-99, as printed. A comparison with a reference group, not a diagnosis.
  - `regions` object[], required: Each region the report measured, in the order the report's own list is read.
    - `region` string, required: Which part of the body this row measures. Known values: left_arm, right_arm, left_leg, right_leg, trunk, android, gynoid. Treat unknown values as "other".
    - `fatMassKg` number, nullable, required: Fat mass, kilograms.
    - `leanMassKg` number, nullable, required: Lean (non-bone, non-fat) mass, kilograms.
    - `boneMassKg` number, nullable, required: Bone mineral mass, kilograms.
    - `totalMassKg` number, nullable, required: Total mass, kilograms.
    - `tissueFatPct` number, nullable, required: Body fat percent of tissue, which excludes bone — the figure most reports headline.
    - `regionFatPct` number, nullable, required: Body fat percent including bone.
    - `bmdGCm2` number, nullable, required: Bone mineral density, g/cm². A measurement, not a diagnosis.
    - `bmcG` number, nullable, required: Bone mineral content, grams.
    - `boneAreaCm2` number, nullable, required: The bone area the density was measured over, cm².
  - `comparableToPrevious` boolean, nullable, required: Whether the previous scan was done by the same company on the same scanner model, so the two read as one line. Null for the first scan.
  - `differences` string[], required: Why this scan isn't comparable with the previous one. Empty when it is, or when there's no previous scan.
  - `createdAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.

## Other responses

- `401`: Error: UNAUTHORIZED.
- `404`: Error: NOT_FOUND.

---

[API](https://skmtc.dev/bodylab/apis/body-lab-api.md) · [All operations](https://skmtc.dev/bodylab/apis/body-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bodylab/apis/body-lab-api/revisions/544c201eaf88?raw)
