Training Plans

Create a training plan. Provide traineeId (or escortId) to attach it to a coaching period, or omit both to leave it unassigned. Set isTemplate to save it as a reusable template. The workouts array holds an ordered list of workout days; each day has a trainingName and an exercises array. Each exercise references a catalog id via exerciseDetails (get ids from GET /exercises).

BREAKING CHANGE: the plan name is now "title". The previous "name" field has been removed, so a request sending "name" is rejected with 400 "must have required property title". This matches the field name used in every read response. The same rename applies to PATCH /training-plans/{planId}.

To build a plan from an existing one, do not read it and re-create it: that silently drops per-set prescriptions, supersets, tempo and intensity. Use POST /training-plans/{planId}/duplicate instead.

post/api/public/training-plans

Headers

Idempotency-Keystring

Optional. Send a unique key (e.g. a UUID) to make this POST safe to retry. The same key within 24h returns the original result instead of creating a duplicate.

Request body

traineeIdstring

Owning trainee id. Omit both traineeId and escortId to leave the plan unassigned.

isTemplateboolean

Save as a reusable template. A template cannot be assigned, so omit traineeId and escortId.

escortIdstring

Optional coaching period id

titlestring required

Plan title shown to the trainee

descriptionstring
level'Beginner' | 'Intermediate' | 'Advanced'

Difficulty level of the plan.

maxDurationnumber

Target session length in minutes.

Response

Created

Changes

No recorded changes to this endpoint across all 1 revision of this API.