---
title: "Strength routines on the calendar, by date"
method: GET
path: "/strength-routines"
tags: ["Strength"]
---

# Strength routines on the calendar, by date

`GET /strength-routines`

## Request

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

Each with its exercises in order, as stated: a weight is what the routine said, and one it left to Body Lab is null here and filled on the day. Withdrawn routines are left out unless asked for. They're commitments too, so `GET /commitments` lists them as well, by kind.

## Query parameters

- `from` string, date, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
- `to` string, date, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
- `includeWithdrawn` boolean

## Headers

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

## Response `200`

OK

- object
  - `routines` object[], required
    - `id` string, required: Opaque identifier.
    - `forDate` string, date, required: A day on the athlete's own calendar: YYYY-MM-DD, no time zone.
    - `name` string, required
    - `durationS` integer, required
    - `withdrawnAt` string, date-time, nullable, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
    - `scheduledBy` string, nullable, required: The connected app that put this on the calendar, as its OAuth client id — the `clientId` that `GET /schedule/apps` names and `POST /schedule/apps/withdraw` takes. Null when the athlete entered it themselves, in any of their own apps.
    - `createdAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
    - `exercises` object[], required
      - `exerciseId` string, required: Opaque identifier.
      - `name` string, required: The catalogue's name for it.
      - `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".
      - `perSide` 'leg' | 'side', nullable, required: Reps are per leg or per side.
      - `sets` integer, required
      - `reps` integer, required: Reps, or seconds when unit is seconds.
      - `unit` 'reps' | 'seconds', required
      - `weightKg` number, nullable, required: As stated: total load in kilograms, negative for assistance. Null when the routine left the weight to Body Lab.
      - `percentOfMax` number, nullable, required
      - `rir` number, nullable, required
      - `restS` integer, nullable, required: As stated, or null for Body Lab's own rest for that kind of exercise.
      - `supersetGroup` string, nullable, required
      - `cue` string, nullable, required

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