---
title: "The wind-down the athlete set, and the nights they answered"
method: GET
path: "/training/wind-down"
tags: ["Today"]
---

# The wind-down the athlete set, and the nights they answered

`GET /training/wind-down`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/training/wind-down`
- Auth: HTTP bearer

Adherence and sleep side by side, never joined. There is deliberately no correlation, no difference and no verdict here: whether an evening changed a night's sleep cannot be told for one person, and 'was on the phone late' and 'went to bed late' are one behaviour described twice.

## Query parameters

- `days` integer: How many nights back. Defaults to 28.

## Headers

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

## Response `200`

OK

- object
  - `hour` integer, nullable, required: The hour the athlete chose, on their clock, or null for not set.
  - `met` integer, required: Nights answered yes.
  - `measured` integer, required: Nights answered at all. Silence is not a failure, so it is not in this denominator.
  - `withSleep` integer, required: Nights with a sleep figure.
  - `text` string, required: The sentence to show as written.
  - `caveat` string, required: Shown wherever adherence and sleep appear together, and not optional: it is the difference between recording something and claiming something.
  - `nights` object[], required: Oldest first.
    - `date` string, date, required: The date the night ended on.
    - `woundDown` boolean, nullable, required: Null is a night with no answer.
    - `sleepMinutes` integer, nullable, required: Minutes asleep that night, where a device reported any. Beside the answer, never joined to it.
  - `copy` object, required: The static copy, sent rather than duplicated per client. Every sentence in this feature is written once in @bodylab/engine/sleep, so the web, the phone and an assistant cannot drift into making different claims about a subject where the wrong claim is the whole risk.
    - `title` string, required
    - `note` string, required
    - `why` string, required: Why there is no countdown and no cutoff here.
    - `unset` string, required
    - `bathTitle` string, required
    - `bathBody` string, required
    - `bathCaveat` string, required
    - `noScreenTime` string, required: Why Body Lab cannot read the phone's own screen time, and why that is a promise rather than a gap.

## Other responses

- `401`: Error: UNAUTHORIZED.

---

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