Skip to main content
PATCH
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

sessionId
string
required

Workout session id.

Example:

"67f1234567890abcdef1234"

Body

application/json
notes
string
Example:

"Session felt good overall."

clientId
string

Required when a coach completes on a client's behalf. A client token completes its own session and may omit it.

Example:

"67f1234567890abcdef1111"

askForFeedback
boolean
default:false

The "Ask for feedback" toggle. When true AND the caller is a coach, the client is sent a push notification asking them to submit feedback, in their own language (en, nl, fr, de, es). Sent for plan days and freestyle sessions only: the title is the plan name for a plan-linked session, or "Freestyle Workout" for a genuinely ad-hoc one (no plan, WOD or group attachment — the same test the freestyle history feed uses). A WOD or group run sends nothing at all, since neither is described by this copy. Its data payload carries type: "workout_feedback_request", sessionId, clientId, companyId, historyType and dayTitle, so tapping it opens the workout-day history screen. historyType is "plan" or "freestyle" and is ALWAYS present — branch on it rather than inferring the kind from dayTitle. dayTitle is the plan day's name, or the freestyle history feed's own "Freestyle Workout N" label (the client's own session name when they set one); it is omitted when neither applies. Ignored when a client completes their own session, since the copy states the coach completed it. A push failure is logged and never fails the completion.

Example:

true

wodResult
object

Manual score for an exercise-free scored plan day (scoring.acceptsManualResult on the day). Required to complete such a day, whoever completes it (client or coach); without it the call fails with WOD_RESULT_REQUIRED and the session stays open. Group-run and feedback auto-completion apply the same rule, so complete a scored day here first. Rejected with WOD_RESULT_NOT_ALLOWED on any other session (WOD sessions complete via PATCH /app/v1/wod/{id}/complete). The score and the completion are saved in one write. Once the session is completed its score is final: a retry returns the stored score and ignores any new one.

Response

Scored plan day completed; scoring.result is the saved score.

data
object
required

Returned only for an exercise-free scored plan day; every other session keeps the empty 204.

meta
object
required