---
search:
  tags:
    - Ingest
    - POST
seo:
  description: >-
    Machine endpoint for the Bluetooth scale listener. Authenticated with the
    ingest bearer… Reference for the POST /api/ingest/weight endpoint in the
    skcal API.
sidebar:
  label: Ingest a scale reading
  badge: POST
title: Ingest a scale reading
type: openapi-operation
---
Machine endpoint for the Bluetooth scale listener. Authenticated with the ingest bearer token and attributed to a configured owner rather than the Access identity.

`POST /api/ingest/weight`

**Request body** (`application/json`, required)

The scale reading to ingest.

- `weightKg` (number, required) — Scale-reported body weight in kilograms.
- `bodyFatPct` (number | null) — Optional scale-reported body-fat percentage.
- `userEmail` (string<email>) — Owner to attribute the reading to; falls back to the configured ingest user.
- `raw` (object) — Opaque raw payload from the scale, stored for debugging.

Request body example:

```json
{
  "weightKg": 72.6,
  "bodyFatPct": 17.4,
  "userEmail": "nick@mintlify.com",
  "raw": {
    "device": "withings-body+",
    "battery": 82
  }
}
```

**Responses**

- `200` — The scale reading was ingested and stored.
- `400` — The request body or parameters failed validation.
- `401` — Missing or incorrect ingest bearer token.
- `503` — A required secret (model key or ingest token) is not configured.

Response example, 200:

```json
{
  "ok": true
}
```
