Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Public API access token issued by /public/v1/oauth/token. Example: Authorization: Bearer fspt_.... Each resource request rechecks the token company's current provider access. Disabling access blocks existing tokens with 403 auth.provider_unavailable.

Headers

Idempotency-Key
string
required

Required for Public API write requests. Reusing the same key with the same method, path, and body replays the stored successful response; reusing it with a different request returns 409 idempotency.conflict.

Required string length: 1 - 200
Example:

"booking-create-20260714-001"

Body

multipart/form-data
name
string
required

Multipart JSON string for WorkoutLocalizedTextArray.

Example:

"[{\"lang\":\"en\",\"value\":\"4-Day Strength Block\"},{\"lang\":\"nl\",\"value\":\"4-Daags Krachtblok\"}]"

description
string
required

Multipart JSON string for WorkoutLocalizedTextArray.

Example:

"[{\"lang\":\"en\",\"value\":\"Progressive upper/lower split.\"},{\"lang\":\"nl\",\"value\":\"Progressieve upper/lower split.\"}]"

category
enum<string>
Available options:
Agility & Speed,
Strength,
Hypertrophy,
Strength - Dynamic,
Strength - Explosive,
Strength - Static,
Cardio,
Cardio - Duration,
Cardio - Interval,
HIIT,
Crossfit,
Mobility,
Stretching,
Core,
Coordination & Balance,
Movement Prep,
Functional Training,
Recovery,
Sports,
Martial Arts,
Yoga,
Other,
GROUP_WORKOUT_TEMPLATE,
Plyometric,
Cycling,
Cardio - interval,
Mobilisation,
Stabilisation,
Daily Living,
Target zone,
Respiration,
Breathing,
Massage,
Outdoor sports,
Indoor sports,
Dance,
Group Lessons,
Martial arts,
Material Arts,
Fight skills,
Mind and body,
,
default
Example:

"Strength"

goal
enum<string>
Available options:
Weight Loss,
Hypertrophy,
Endurance,
Flexibility,
General Fitness,
Strength
Example:

"Strength"

periodizationType
enum<string>
Available options:
Linear,
Non-Linear,
Block,
Undulating,
None
Example:

"Linear"

difficulty
enum<string>
Available options:
Beginner,
Intermediate,
Advanced
Example:

"Intermediate"

intensity
enum<string>
Available options:
Low,
Medium,
High
Example:

"High"

visibility
enum<string>
Available options:
Everyone,
Company,
Fitsociety
Example:

"Company"

status
enum<string>
Available options:
Active,
Inactive,
Draft
Example:

"Draft"

templateType
enum<string>
Available options:
Template,
Assigned
Example:

"Template"

duration
string

Multipart JSON string for WorkoutPlanDuration.

Example:

"{\"startDate\":\"2026-04-15\",\"endDate\":\"2026-06-15\",\"hasEndDate\":true}"

schedule
string

Multipart JSON string for WorkoutProgrammeTemplateSchedule. Multi-week library templates always store a blank start date; the assignment supplies the real start date.

Example:

"{\"mode\":\"multi_week\",\"releasePolicy\":\"weekly_from_start\",\"startDate\":\"\"}"

useDefaultExerciseSettings
enum<string>

Whether new exercises use plan-level defaults. Send false with defaultExerciseValues set to the JSON literal null to disable defaults.

Available options:
true,
false
Example:

"true"

defaultExerciseValues
string

Multipart JSON string for WorkoutDefaultExerciseValues, or the JSON literal null when useDefaultExerciseSettings is false.

Example:

"{\"sets\":4,\"reps\":8,\"rest\":120,\"weight\":0,\"repTempo\":\"3010\",\"duration\":0}"

images
string

Multipart JSON string for WorkoutImageAsset[]. Combine with uploaded imageFiles when you want to attach uploaded media.

Example:

"[{\"url\":\"https://cdn.example.com/workouts/plan-cover.jpg\",\"width\":1280,\"height\":720}]"

videos
string

Multipart JSON string for WorkoutVideoAsset[]. Combine with uploaded videoFiles when you want to attach uploaded media.

Example:

"[{\"url\":\"https://cdn.example.com/workouts/plan-demo.mp4\",\"platform\":\"s3\",\"videoId\":\"\",\"thumbnail\":\"https://cdn.example.com/workouts/plan-demo-thumb.jpg\",\"duration\":95,\"width\":1920,\"height\":1080}]"

imageFiles
file[]

Preferred binary fields are imageFiles and videoFiles. Legacy binary aliases images and videos remain accepted by the backend for backward compatibility. Structured array/object fields must be sent as JSON strings. Max 5 image files.

Maximum array length: 5
videoFiles
file[]

Preferred binary fields are imageFiles and videoFiles. Legacy binary aliases images and videos remain accepted by the backend for backward compatibility. Structured array/object fields must be sent as JSON strings. Max 3 video files.

Maximum array length: 3

Response

Workout plan created. Runtime still returns the standard response envelope without a data property.