---
title: "Recent days' step counts"
method: GET
path: "/wellness/steps"
tags: ["Recovery"]
---

# Recent days' step counts

`GET /wellness/steps`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/wellness/steps`
- Auth: HTTP bearer

One count per day from one source, never added across devices. Today's count is marked partial. Display only: nothing in the prescription reads steps.

## Query parameters

- `days` integer: How many days back from today.

## Headers

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

## Response `200`

OK

- object
  - `seriesSource` string, nullable, required: The source every day's count comes from now: chosenSource when set, otherwise the source with the most counts (the earliest to report on a tie). Null before any count.
  - `chosenSource` string, nullable, required: The source the athlete chose for steps (PUT /wellness/steps/source), or null while Body Lab picks the one with the most counts.
  - `sources` object[], required: Every source with a count on record, most days first: what the athlete can choose between. Choosing matters only when there are two or more.
    - `source` string, required: A connected service or device that has counted steps (e.g. garmin, apple_health).
    - `days` integer, required: Days it has a count for, across everything on record, not only the days returned.
  - `today` string, date, required: Today on the athlete's calendar, in their time zone.
  - `days` object[], required: Days with a count, newest first; days without are absent. A day the series' source has no count for is absent even if another device counted, so the series stays one device's.
    - `date` string, date, required: The athlete's local day the count belongs to, as its source dated it. A whoop count is a physiological cycle, which runs from one sleep to the next, dated by the end of the sleep that starts it (the wake), not a midnight-to-midnight day.
    - `steps` integer, required: Steps counted that day. A count, so no unit suffix. Days with no count, or a count of 0 (the device wasn't worn), are absent rather than 0.
    - `source` string, required: The connected service or device the count came from (e.g. apple_health). One source for the whole series, `seriesSource`: the one the athlete chose, or while they haven't, the one with the most counts, worked out again as counts arrive. Steps are never typed in, so there is no "manual".
    - `partial` boolean, required: True while the day isn't over in the athlete's time zone (today): the count is so far, and should be left out of any average.

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