---
title: "GET /api/public/training-plans/{planId}"
method: GET
path: "/api/public/training-plans/{planId}"
tags: ["Training Plans"]
---

# GET /api/public/training-plans/{planId}

`GET /api/public/training-plans/{planId}`

Get a training plan by id.

## Path parameters

- `planId` string, required

## Response `200`

Successful response

- object — Successful response
  - `data` object
    - `id` string
    - `coach` string
    - `escorts` string[]
    - `title` string
    - `notes` string
    - `level` 'Beginner' | 'Intermediate' | 'Advanced'
    - `maxDuration` number — Target session length in minutes.
    - `isTemplate` boolean — True when the plan is a reusable template.
    - `workouts` object[]
      - `trainingName` string — Display name of the day, e.g. "Day A — Push".
      - `trainingType` 'A' | 'B' | 'C' | 'D' | 'E' | 'FullBody' | 'CrossFit' | 'Tabata' | 'HIIT' | 'EMOM' | 'AMRAP' | 'Circuit' | 'ForTime' — Day label, e.g. "A", "B", "FullBody".
      - `exerciseOrder` 'Sequential' | 'Circuit' | 'Superset' | 'Complex' — How exercises are performed. Defaults to Sequential.
      - `notes` string — Free-text note for the whole day.
      - `timeBasedDetails` object — Timing configuration for circuit-style days (Tabata, HIIT, EMOM, AMRAP). Seconds unless noted.
        - `totalRounds` number
        - `timeLimit` number
        - `workInterval` number
        - `restInterval` number
        - `restBetweenRounds` number
      - `exercises` object[]
        - `exerciseDetails` object — The exercise catalog entry. On write, pass exerciseDetails as the catalog id string (from GET /exercises).
          - `id` string
          - `name` string
        - `setsNumber` string — Number of sets, e.g. "3".
        - `repsNumber` string — Reps per set, e.g. "10" or "8-12".
        - `restTime` string — Rest between sets in seconds, e.g. "90".
        - `isDurationBased` boolean — True for timed exercises (e.g. plank) instead of reps.
        - `setDuration` string — Duration per set in seconds when isDurationBased is true.
        - `weightPercentage` number — Working weight as % of 1RM, e.g. 75.
        - `customNotes` string — Free-text note shown to the trainee for this exercise.
        - `weight` number — Working weight in kg for the exercise.
        - `sets` object[] — Per-set prescription. Takes precedence over setsNumber/repsNumber when present.
          - `setNumber` number — 1-based position of the set.
          - `reps` string — Reps for this set, e.g. "8".
          - `weight` number — Working weight for this set.
          - `restTime` string — Rest after this set in seconds.
          - `intensityValue` number — Intensity for this set, read against intensityType.
          - `dropSet` 'DropSet' | 'DoubleDropSet' | 'TripleDropSet'
          - `isWarmupSet` boolean — Warmup sets are not counted towards working volume.
        - `superSet` boolean — True when this exercise belongs to a superset.
        - `superSetGroup` string — Shared identifier grouping the exercises performed together in one superset.
        - `dropSet` 'DropSet' | 'DoubleDropSet' | 'TripleDropSet'
        - `restPause` boolean — Rest-pause technique.
        - `cluster` boolean — Cluster-set technique.
        - `trackingType` 'weight_reps' | 'reps_only' | 'duration' | 'completion' — What the trainee logs for this exercise.
        - `intensityType` 'Percentage' | 'RPE' | 'RIR' — How intensityValue is interpreted.
        - `intensityValue` number — Intensity target.
        - `tempo` object — Tempo in seconds per phase of the lift.
          - `eccentric` number
          - `hold` number
          - `concentric` number
          - `rest` number
        - `distance` number — Distance for cardio exercises.
        - `distanceUnit` 'meters' | 'km' | 'miles' | 'yards'
        - `specificAlternativeExercises` string[] — Catalog ids the trainee may swap in for this exercise.
    - `createdAt` string, date-time

## Other responses

- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `404` — Default Response
- `409` — Default Response
- `429` — Default Response
- `500` — Default Response

---

[API](https://skmtc.dev/coach-platform/apis/coach-platform-api.md) · [All operations](https://skmtc.dev/coach-platform/apis/coach-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/coach-platform/coach-platform-api/revisions/3d18b514ae8c/schema)
