Scan results
What a scan produces, field by field, with units. You get this as a ScanResult on the device (from startScan), and — if results delivery is on — as the same fields in JSON at your backend.
Measurements
| Field | Unit | Notes |
|---|---|---|
bodyFatPercent | % | Always present |
bmi | kg/m² | Optional |
leanMuscleMassKg | kg | Optional |
boneMineralContentKg | kg | Optional |
duration | seconds | Capture time; optional |
Girths
| Field | Unit |
|---|---|
neckCm | cm |
waistCm | cm (natural waist) |
lowerWaistCm | cm (belly / lower waist) |
hipCm | cm |
Advanced indicators
| Field | Unit | Notes |
|---|---|---|
waistHipRatio | ratio | |
waistHeightRatio | ratio | |
centralAdiposityIndex | index | |
fatMassIndex | kg/m² | |
skeletalMuscleIndex | kg/m² | Optional |
musclePreservationIndex | % | Optional; needs prior scans |
The whole shape
Optional fields may be absent (null in JSON, nil in Swift). The point cloud stays on the device — it is never in the delivered payload.
{
"scanId": "scan_a7a4cc15-...",
"occurredAt": "2026-09-16T15:01:03Z",
"modelVersion": "2026.09.2",
"subject": { "gender": "female", "ageYears": 37, "heightCm": 165.1, "weightKg": 58.97 },
"measurements": {
"bodyFatPercent": 28.9,
"bmi": 21.6,
"leanMuscleMassKg": 39.2,
"boneMineralContentKg": 2.61,
"girths": { "neckCm": 34.2, "waistCm": 80.9, "lowerWaistCm": 81.4, "hipCm": 94.2 },
"advanced": {
"waistHipRatio": 0.86, "waistHeightRatio": 0.49,
"centralAdiposityIndex": 0.3, "fatMassIndex": 6.3,
"skeletalMuscleIndex": 14.4, "musclePreservationIndex": null
},
"duration": 48.2
}
}To receive this at your backend, see Results delivery.