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"

Path Parameters

clientId
string
required

Client in the company bound to the Public API token.

Pattern: ^[a-fA-F0-9]{24}$

Query Parameters

skipExercise
string

Exclude this exercise id from the results (and from pagination totals). Typically the exercise being replaced. May also be sent in the request body. Invalid or missing ids are ignored.

Example:

"67f1234567890abcdef1234"

Body

application/json
page
integer
Required range: x >= 1
Example:

1

limit
integer
Required range: 1 <= x <= 100
Example:

20

Example:

"bench press"

favourites
boolean
Example:

false

levels

Filter by difficulty. Values: Beginner, Intermediate, Advance.

Example:

"Beginner,Intermediate"

muscleGroups

Matches on primaryMuscle OR secondaryMuscles. Allowed values: Chest, Back, Lats, Traps, Shoulders …

Example:

"Chest,Shoulders"

equipments

Equipment key values from availableFilters.equipments.

Example:

"barbell,dumbbell"

categories

Filters on primaryCategory. Allowed values: Agility & Speed, Strength, Hypertrophy, Strength - Dynamic, Strength - Explosive …

Example:

"Strength,Cardio"

coaches
string[]

Filter to exercises added by specific coaches. Restricts to addedByRole: Coach.

Example:
skipExercise
string

Exclude this exercise id from the results (and pagination totals). Typically the exercise being replaced. May also be passed as the skipExercise query param. Invalid/missing ids are ignored.

Example:

"67f1234567890abcdef1234"

excludeExerciseIds

Exclude one or more exercises from the results (movements already selected/prescribed). Comma-separated string or array of exercise ObjectIds. Aliases also accepted: excludeExerciseId / exerciseIds / exerciseId; also readable from the query string. Invalid id → 400 WORKOUTEXERCISE_EXERCISEID_INVALID. Echoed back in selectedFilters.excludeExerciseIds.

Example:

"6925d2764ac340a53e012927,6925d2764ac340a53e012928"

clientOwn
boolean

When true, return ONLY the client's own exercises (addedByRole: Client, addedBy = client) — the 'My Exercises' subset. Overrides the coaches filter.

Example:

false

exerciseToTop
string

Pin a single exercise to page 1 / index 0. Only pinned if it also satisfies the active filters + visibility (else omitted entirely). De-duplicated from the rest of the list. May also be passed as the exerciseToTop query param. Invalid id → 400 WORKOUTEXERCISE_EXERCISEID_INVALID.

Example:

"67f1234567890abcdef1234"

Response

Paginated exercise list with available and selected filters.

data
object
required
meta
object
required