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

planId
string
required

Workout plan id.

Example:

"67f1234567890abcdef1234"

Body

application/json
name
object[]
required
Minimum array length: 1
Example:
description
object[]
required
Minimum array length: 1
Example:
scoringType
enum<string>
default:standard

Scoring mechanism. Must not be standard when descriptionOnly is true.

Available options:
standard,
forTime,
amrap,
emom,
tabata,
maxLoad
Example:

"forTime"

targetValue
number | null
Required range: x >= 0
Example:

null

descriptionOnly
boolean
default:false

Marks an exercise-free scored day: the full workout lives in description (required), exercises must stay empty, scoringType must not be standard, and amrap/emom/tabata require their full timeDomain. Completing the day requires a manual wodResult. Enforced on every write path, including client day edits. Moments that merely have no exercises are NOT scored unless this is true.

Example:

true

timeDomain
object | null

Clock prescription, same contract as a WOD timeDomain. Allowed fields depend on scoringType: amrap → windowSeconds (required); forTime → timeCapSeconds, rounds (defaults to 1); emom → intervalSeconds, intervalCount (both required); tabata → workSeconds, restSeconds, intervalCount (all required); standard/maxLoad → none.

scoreValidation
object | null

Optional result caps. timeCapSeconds and expectedIntervals are derived from timeDomain when one is set.

dayOrder
number
Example:

1

order
number
Example:

0

weekNumber
integer

Programme week. Omitted legacy moments are week 1.

Required range: x >= 1
Example:

1

sessionOrder
integer

Session position within the programme week.

Required range: x >= 1
Example:

1

date
string
Example:

"2026-04-15"

exercises
object[]
schedulePlacement
object

Response

Created plan moment.

data
object
required
meta
object
required