---
title: "Record a body composition scan"
method: POST
path: "/body-composition/scans"
tags: ["Body composition"]
---

# Record a body composition scan

`POST /body-composition/scans`

## Request

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

Records one scan as its report gives it. Every value is optional; a scan needs at least one measurement. A total mass is also recorded as a weigh-in for that day, which fills a day nothing else weighed and never replaces the athlete's own entry or their scale.

## Headers

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

## Request body

- object
  - `localDate` string, date, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
  - `scannedAt` string, date-time, nullable: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
  - `provider` string, nullable
  - `scannerModel` string, nullable
  - `totalMassKg` number, nullable
  - `fatMassKg` number, nullable
  - `leanMassKg` number, nullable
  - `boneMassKg` number, nullable
  - `tissueFatPct` number, nullable
  - `regionFatPct` number, nullable
  - `androidGynoidRatio` number, nullable
  - `vatMassKg` number, nullable
  - `vatVolumeCm3` number, nullable
  - `bmdGCm2` number, nullable
  - `bmcG` number, nullable
  - `boneAreaCm2` number, nullable
  - `bmdAgeSexPercentile` integer, nullable
  - `bmdPeakSexPercentile` integer, nullable
  - `regions` object[]
    - `region` string, required: Which part of the body, one of: left_arm, right_arm, left_leg, right_leg, trunk, android, gynoid.
    - `fatMassKg` number, nullable
    - `leanMassKg` number, nullable
    - `boneMassKg` number, nullable
    - `totalMassKg` number, nullable
    - `tissueFatPct` number, nullable
    - `regionFatPct` number, nullable
    - `bmdGCm2` number, nullable
    - `bmcG` number, nullable
    - `boneAreaCm2` number, nullable

## Response `201`

OK

- object
  - `id` string, required: Opaque identifier.

## Other responses

- `401`: Error: UNAUTHORIZED.
- `409`: Error: DUPLICATE_SCAN.

---

[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)
