---
title: "Heaviest weight lifted over time, per exercise"
method: GET
path: "/training/strength-trend"
tags: ["Strength"]
---

# Heaviest weight lifted over time, per exercise

`GET /training/strength-trend`

## Request

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

The heaviest working set of each session, session by session, plus the heaviest ever recorded for the lift. Every number is a weight the athlete actually lifted: nothing is estimated here, and a client should not present it as a one-rep max. Only exercises lifted in at least two sessions in the window are a trend; the rest are counted in `omitted`. The window stops at a year because that is as far back as the athlete's sets are read for strength.

## Query parameters

- `days` integer: How many days back from today.
- `limit` integer: How many exercises, most-trained first.

## Headers

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

## Response `200`

OK

- object
  - `exercises` object[], required
    - `exerciseId` string, required: Opaque identifier.
    - `name` string, required
    - `movementPattern` string, required: As in the exercise catalogue, so a client can group lifts without fetching it.
    - `points` object[], required: Oldest first, one per session. A session with no weighted working set has no point.
      - `date` string, date, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
      - `sessionId` string, required: Opaque identifier.
      - `weightKg` number, required: The heaviest weight recorded on a working set that session. Warm-ups, assisted and unweighted sets are not candidates.
      - `reps` integer, required: The reps that set was done for, so a client can say what the set was rather than only how heavy.
      - `rir` number, nullable, required
    - `best` object, required: The heaviest weight recorded for this exercise anywhere in the year-long window — a real set, not a maximum computed from the points. An easy block's sessions sitting below it is the athlete's real situation rather than a disagreement. It is not the number weights are prescribed from: that is an estimated one-rep max, which accounts for reps left in reserve and is usually higher than anything ever lifted.
      - `weightKg` number, required
      - `setOn` string, date, required: The day it was first lifted, which may be older than the oldest point returned.
  - `omitted` integer, required: Exercises with a trend that weren't returned, so a client can say how many it isn't showing.

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