---
title: "Logged strength sessions, newest first"
method: GET
path: "/strength-sessions"
tags: ["Strength"]
---

# Logged strength sessions, newest first

`GET /strength-sessions`

## Request

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

## Query parameters

- `limit` integer

## Headers

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

## Response `200`

OK

- object[]
  - `id` string, required: Opaque identifier.
  - `activityId` string, nullable, required: Opaque identifier.
  - `performedAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
  - `durationS` number, nullable, required
  - `sessionRpe` number, nullable, required
  - `notes` string, nullable, required
  - `load` number, nullable, required
  - `sets` object[], required
    - `id` string, required: Opaque identifier.
    - `exerciseId` string, required: Opaque identifier.
    - `setIndex` integer, required
    - `reps` integer, required
    - `weightKg` number, nullable, required: Negative is assistance.
    - `rir` number, nullable, required
    - `isWarmup` boolean, required
    - `exercise` object, required
      - `id` string, required: Opaque identifier.
      - `name` string, required
      - `notes` string, nullable, required
      - `movementPattern` string, required: Movement pattern. Known values: squat, hinge, lunge, horizontal_push, vertical_push, horizontal_pull, vertical_pull, carry, core, calf, isolation, jump, olympic, conditioning. Treat unknown values as "other".
      - `loadType` string, required: Equipment. Known values: barbell, dumbbell, kettlebell, machine, bodyweight, band. Treat unknown values as "other".
      - `isUnilateral` boolean, required
      - `implementCount` integer, required
      - `allowsAssistance` boolean, required: Negative weight (assistance) is meaningful, e.g. an assisted pull-up.
      - `defaultUnit` 'reps' | 'seconds', required
      - `howToUrl` string, nullable, required
      - `aliases` string[], required: Other names the movement goes by — "OHP", "RDL", "skull crusher". No alias names two exercises, so one that matches is an answer rather than a guess.
      - `primaryMuscles` string[], required: What the movement is chosen for. calves covers the whole lower leg.
      - `requires` array[], required: What has to exist to do it at all: every inner list must be met, each by any one of its items. [["barbell"],["rack"]] is a barbell and a rack; [["dumbbells","kettlebells"]] is either. [] needs nothing. When `offered` is false this is only the nearest statement the equipment list can make, not a complete one.
        - string[]
      - `loadableBy` string[], required: What can add load to it. Empty when nothing can: the movement is done for reps or time, never with a weight.
      - `offered` boolean, required: Whether Body Lab ever offers it, in a swap or a prescription. False for a movement whose equipment isn't on the list an athlete can say they own — parallel bars, a sled, an incline bench — so it may be scheduled and logged, but Body Lab won't hand it to someone who may not have the thing.

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