Skip to main content
Exercises require full-engine mode: a valid apiToken, successful handshake, and loaded remote engine bundle. Without a key, use keypoints only. Authoritative lists after configure:

Start / stop

StartExerciseOptions

FSM catalog (typical V3 ids)

Exact ids come from the server manifest (exercises[].id). Hosts and demos usually call V3 keys; Strapi may still ship legacy face_* ids — both work via aliases. Always prefer getAvailableExercises() for the live plan list (premium gating can differ by plan).

Aliases

SDK resolves legacy → canonical before lookup: Unknown id → error / throw with code invalid_exercise.

Custom: jump_analysis & air_time_jump

Shipped in the engine bundle (≥ 1.2.0), not the movement manifest. Require full-engine like any exercise. Missing height on jump_analysisjump_analysis_missing_height.

Session flow

  1. Placement — joints inside the padding box; onPosture hints (direction: in-frame, face-camera, profile-camera).
  2. Countdown — then posture.ready === true.
  3. Measuring — short warm-up, then jump detection.

Jump events

Core exercise streams

During an FSM session (always, not feature-flagged):
  • onCountercount + optional formScore (score, average, grade A–F)
  • onPosture — placement readiness
  • onFormScore — convenience stream (prefer nested onCounter.formScore for the counted rep)
  • onExerciseSummary — after stopExercise() / session end
Opt-in (paid + flags): angles, recommendations, progression, keypoints-during-exercise — see Features & plans.