Stay Ahead with KinesteX AI Motion Tracking. White-labeled motion tracking SDK with ready-made or custom AI experiences, boosting your app’s user engagement and revenue Jump to an example in your programming language:
0b36f063-376b-4c30-a543-9112c4dc7e92.mp4 KinesteX offers a powerful motion tracking SDK that seamlessly integrates into your platform.
Choose between ready-made workouts, plans, challenges, AI assessments, or create custom experiences with our advanced motion tracking.
Our white-label solution supports any camera-enabled device across Android, iOS, web, and gaming platforms, with SDKs for React Native, Flutter, Kotlin, Swift, Java, PWA, and JavaScript for quick integration.
KinesteX’s real-time AI motion tracking boosts engagement, retention, and revenue while providing valuable data insights to create personalized, growth-driving experiences
PostMessage Events Documentation PostMessage events are sent to parent windows/webviews for integration with native apps and external systems, they work in real-time, safely, and can even send data back to you offline!
Event Type Data Fields Description kinestex_launcheddata: string (format: "dd mm yyyy hh:mm:ss")When KinesteX application is launched kinestex_loadeddate: string (ISO format)When KinesteX is fully loaded and ready exit_kinestexdate: Date, time_spent: string (format: "hh:mm:ss")User exits KinesteX with total time spent main_page_openeddate: string (ISO format)Main/home page is opened
Event Type Data Fields Description workout_openedtitle: string, id: string, date: string (format: "dd mm yyyy hh:mm:ss")Workout details page opened workout_startedid: string, date: string (format: "dd mm yyyy hh:mm:ss")Workout session started workout_started (alt)workoutId: stringAlternative workout start event workout_completedworkout: string, date: string (format: "dd mm yyyy hh:mm:ss")Workout finished and user exits overview workout_overviewdata: object - see belowComplete workout summary statistics
Workout Overview Data Structure { workout_title : string , // Workout name workout_id : string , // Unique workout ID target_duration_seconds : number , // Target workout duration completed_reps_count : number , // Total completed reps target_reps_count : number , // Total target reps calories_burned : number , // Calories burned (2 decimal places) completion_percentage : number , // Workout completion % (2 decimal places) total_mistakes : number , // Total mistake count accuracy_score : number , // Overall accuracy (0-100) efficiency_score : number , // Efficiency metric (0-100) total_exercise : number , // Number of exercises actual_hold_time_seconds : number , // Time in correct position (timer-based) target_hold_time_seconds : number // Target hold time (timer-based exercises) } Event Type Data Fields Description exercise_completeddata: object - see belowIndividual exercise completed exercise_overviewdata: array of exercise objectsAll exercises summary
Exercise Completed Data Structure { exercise_title : string , // Exercise name time_spent : number , // Seconds spent repeats : number , // Reps completed total_reps : number , // Required reps total_duration : number , // Countdown time calories : number , // Calories burned exercise_id : string , // Exercise ID mistakes : Array < { // Mistakes made mistake : string , count : number } > , average_accuracy ?: number // Average accuracy (0-1, optional) } Exercise Overview Item Structure { exercise_title : string , // exercise name exercise_id : string , // Unique exercise ID time_spent : number , // Time on exercise in seconds perfect_hold_position : number , // Time in correct position (timer-based) repeats : number , // Reps completed total_required_reps : number , // Target reps total_required_time : number , // Target time in seconds calories : number , // Calories burned (2 decimal places) mistakes : Array < { // Detailed mistake breakdown mistake : string , // Mistake description count : number // Occurrence count } > , mistake_count : number , // Total mistakes for exercise accuracy_reps ?: number [ ] , // Optional: Per-rep accuracy scores average_accuracy ?: number // Optional: Average accuracy (0-100) } Event Type Data Fields Description left_camera_framedate: string (format: "dd mm yyyy hh:mm:ss")User left camera view returned_camera_framedate: string (format: "dd mm yyyy hh:mm:ss")User returned to camera view check_frame_completedmessage: string ("Person stepped into frame")Frame check completed camera_selector_openedmessage: array (available cameras)Camera selector opened camera_selectedid: string, label: string, isMirrorCamera: booleanCamera selected by user
Event Type Data Fields Description plan_unlockedid: string, img: string, title: string, date: string (format: "dd mm yyyy hh:mm:ss")Plan unlocked/selected personalized_plan_exitworkout: string, date: string (format: "dd mm yyyy hh:mm:ss")Exit from personalized plan
Event Type Data Fields Description challenge_startedexerciseId: stringChallenge exercise started challenge_completedrepCount: number, mistakes: numberChallenge completed challenge_exitworkout: string, date: string (format: "dd mm yyyy hh:mm:ss")Exit from challenge
Event Type Data Fields Description highlighted_userdata: object - see belowUser's leaderboard position
Highlighted User Data Structure { username : string , // User's username score : number , // User's score position : number // Leaderboard position (1-based) } Event Type Data Fields Description kinestex_home_exitworkout: string, date: string (format: "dd mm yyyy hh:mm:ss")Exit from KinesteX home
Event Type Data Fields Description error_occurreddata: stringGeneral error message error_occurredmessage: stringAlternative error format error_occurreddata: string, error: anyError with details warningdata: stringWarning message
Event Type Data Fields Description total_active_secondsnumberSent every 5 seconds with active workout time (not sent when user leaves camera frame)
Assessment Data Documentation assessment_overview : Sent when the results page loadsassessment_completed : Sent when user clicks restart or finish buttonsCommon Fields (All Assessments) Field Type Description type"assessment_overview" | "assessment_completed"Event type identifier assessmentTypestringAssessment identifier (e.g., "tug", "sls", "balloonpop") dateDateTimestamp when the assessment was completed timenumberTotal assessment time in seconds stepsnumber | undefinedEstimated step count (for walking assessments)
TUG (Timed Up and Go) Assessment Assessment Type : "tug"
Field Type Description timenumberTotal completion time in seconds stepsnumberEstimated step count during the test standingUpTimenumberTime to stand up from seated position (seconds) sittingDownTimenumberTime to sit down at end of test (seconds) walkingForwardTimenumberTime walking to the 3m marker (seconds) walkingBackwardTimenumberTime walking back to the chair (seconds) turningTimenumberTime spent turning at the marker (seconds) backBendingAngleSittingnumber[]Array of back angle measurements during sitting countdown (degrees) backBendingAngleStandingnumber[]Array of back angle measurements during movement (degrees) averageSpeedMs_tugnumberAverage walking speed in m/s. Formula: 6m / time avgBackBendingSittingnumber | nullAverage back bending angle while sitting (degrees) avgBackBendingStandingnumber | nullAverage back bending angle while standing/moving (degrees)
Gait Speed Test Assessment Assessment Type : "gaitspeedtest"
Field Type Description timenumberTotal test time in seconds stepsnumberEstimated step count during the walk standingTimenumberTime spent in standing phase (seconds) walkingTimenumberActive walking time (seconds) averageGaitSpeednumberGait speed in m/s. Formula: 4m / time
SLS (Single Leg Stand) Assessment Assessment Type : "sls"
Field Type Description rightTimenumberDuration standing on right leg (seconds) leftTimenumberDuration standing on left leg (seconds) symmetryScore_slsnumber | nullLeg symmetry percentage (0-100). Formula: (min(right, left) / max(right, left)) * 100 riskLevel_sls"low" | "moderate" | "high"Balance risk assessment
Risk Level Calculation (SLS) Low : Min time ≥20s AND good symmetry (difference ≤5s)Moderate : Min time ≥10s AND average time ≥15sHigh : All other casesSTS (Sit-to-Stand 30 Second) Assessment Assessment Type : "sts"
Field Type Description repsnumberTotal repetitions completed in 30 seconds averageSittingTimenumberAverage time in sitting position per rep (seconds) averageStandingTimenumberAverage time in standing position per rep (seconds) avgTimePerRep_stsnumber | nullAverage seconds per repetition. Formula: 30 / reps repTimeVariance_minRepTimenumber | nullFastest rep time (seconds) repTimeVariance_maxRepTimenumber | nullSlowest rep time (seconds) repTimeVariance_minRepIndexnumber | nullWhich rep number was fastest (1-indexed) repTimeVariance_maxRepIndexnumber | nullWhich rep number was slowest (1-indexed)
Five Times STS Assessment Assessment Type : "fivetimessts"
Field Type Description timenumberTotal completion time for 5 repetitions (seconds) averageSittingTimenumberAverage time in sitting position (seconds) averageStandingTimenumberAverage time in standing position (seconds)
FRT (Functional Reach Test) Assessment Assessment Type : "frt"
Field Type Description reachnumberMaximum forward reach distance (cm) maxHeelLiftnumberMaximum heel lift detected during test (cm) heelLiftCountnumberCount of heel lift violations legLiftCountnumberCount of leg lift violations testCompletedbooleanWhether test finished normally (true) or was terminated early (false) endReasonstring | nullReason for early termination if applicable riskLevel_frt"low" | "moderate" | "high" | nullFall risk assessment
"Feet moved out of zone""User left zone""User turned forward""Arm dropped completely""Reference lost""Unhandled state"Risk Level Calculation (FRT) High : Test not completed OR reach ≤15cmModerate : Reach 15-25cmLow : Reach >25cmSBSS (Side-by-Side Stand) Assessment Assessment Type : "sbss"
Field Type Description timeInProperPosition_sbssnumberTime maintained in correct stance (seconds, max 10s) maxShoulderShift_sbssnumberMaximum lateral shoulder shift (% of shoulder width) maxHipShift_sbssnumberMaximum lateral hip shift (% of hip width) feetMoved_sbssbooleanWhether feet moved during the test riskLevel_sbss"low" | "moderate" | "high"Balance risk assessment
Risk Level Calculation (SBSS) High : Feet moved OR (time <7s AND sway ≥30%)Moderate : Time ≥7s AND sway <30%Low : Time ≥9.5s AND sway <15%STSS (Semi-Tandem Stand) Assessment Assessment Type : "stss"
Field Type Description timeInProperPosition_stssnumberTime maintained in correct stance (seconds, max 10s) maxShoulderShift_stssnumberMaximum lateral shoulder shift (% of shoulder width) maxHipShift_stssnumberMaximum lateral hip shift (% of hip width projection) feetMoved_stssbooleanWhether feet moved during the test riskLevel_stss"low" | "moderate" | "high"Balance risk assessment
Risk Level Calculation (STSS) Same as SBSS calculation.
Full Tandem Stand Assessment Assessment Type : "fulltandem"
Field Type Description timenumberTotal test time (seconds) timeInProperPosition_fulltandemnumberTime in correct heel-to-toe stance (seconds, max 10s) maxShoulderShift_fulltandemnumberMaximum lateral shoulder shift (% of shoulder width) maxHipShift_fulltandemnumberMaximum lateral hip shift (% of hip width) feetMoved_fulltandembooleanWhether feet moved during the test testFailed_fulltandembooleanWhether the test was failed/terminated early terminationReason_fulltandemstring | nullReason for early termination if applicable riskLevel_fulltandem"low" | "moderate" | "high"Balance risk assessment
Risk Level Calculation (Full Tandem) Low : Time ≥10s AND no feet movementModerate : Time ≥5sHigh : Time <5sAssessment Type : "balloonpop"
Field Type Description gameScorenumberTotal balloons popped averageReactionTimestringAverage time to pop a balloon (seconds) maxIdleTimestringMaximum time without any action (seconds) averageSpeed_balloonpopnumberBalloons popped per second. Formula: gameScore / 30 masteryTitle_balloonpopstringAchievement tier identifier
Mastery Titles (Balloon Pop) Score Range Title Key ≥30 pop_tastic_hero≥25 magic_popper≥20 super_duper_popper≥15 sparkly_popper≥10 giggly_popper≥5 bouncy_bubbler<5 tiny_popper
Assessment Type : "colorchase"
Field Type Description gameScorenumberTotal score achieved levelReachednumberHighest level completed totalDurationstringTotal game duration (seconds) averageReactionTimestringAverage reaction time per tap (seconds) maxIdleTimestringMaximum time between taps (seconds) masteryTitle_colorchasestringAchievement tier identifier
Mastery Titles (Color Chase) Level Range Title Key ≥10 color_chase_legend≥8 magic_color_wizard≥6 super_color_star≥4 shiny_sequencer≥2 rainbow_chaser≥1 color_buddy<1 little_color_finder
Assessment Type : "aliensquatshooter"
Field Type Description gameScorenumberTotal aliens destroyed squatsPerformednumberNumber of squats completed totalDurationstringTotal game duration (seconds) averageSquatRatestringSquats per second maxTimeBetweenSquatsstringMaximum idle time between squats (seconds) averageAlienDestroyTimestringAverage time to destroy each alien (seconds) masteryTitle_aliensquatshooterstringAchievement tier identifier
Mastery Titles (Alien Squat Shooter) Score Range Title Key ≥25 alien_annihilator≥20 cosmic_blaster≥15 star_shooter≥10 galactic_gunner≥5 space_squatter<5 rookie_defender
Health Benefits (Games Only) Included in payload for all game types (balloonpop, colorchase, aliensquatshooter).
Field Type Description healthBenefits.heartDiseaseReductionnumberEstimated heart disease risk reduction % (max 15) healthBenefits.diabetesReductionnumberEstimated diabetes risk reduction % (max 20) healthBenefits.obesityReductionnumberEstimated obesity risk reduction % (max 10) healthBenefits.depressionReductionnumberEstimated depression risk reduction % (max 15)
Health Benefit Calculation reduction = min((gameScore / 100) * maxReduction, maxReduction)
Value Meaning "low"Good performance, minimal fall/balance risk "moderate"Some limitations detected, may benefit from training "high"Significant limitations, balance training recommended
{
"type" : " assessment_completed" ,
"assessmentType" : " tug" ,
"date" : " 2025-12-09T10:30:00.000Z" ,
"time" : 12.5 ,
"steps" : 18 ,
"standingUpTime" : 1.8 ,
"sittingDownTime" : 2.1 ,
"walkingForwardTime" : 3.2 ,
"walkingBackwardTime" : 3.1 ,
"turningTime" : 2.3 ,
"backBendingAngleSitting" : [15.2 , 14.8 , 15.1 ],
"backBendingAngleStanding" : [8.5 , 9.2 , 8.8 ],
"averageSpeedMs_tug" : 0.48 ,
"avgBackBendingSitting" : 15.0 ,
"avgBackBendingStanding" : 8.8 ,
"standingTime" : null ,
"walkingTime" : null ,
"averageGaitSpeed" : 0.32 ,
"rightTime" : 0 ,
"leftTime" : 0 ,
"symmetryScore_sls" : null ,
"riskLevel_sls" : " high" ,
"reps" : 0 ,
"avgTimePerRep_sts" : null ,
"repTimeVariance_minRepTime" : null ,
"repTimeVariance_maxRepTime" : null ,
"repTimeVariance_minRepIndex" : null ,
"repTimeVariance_maxRepIndex" : null ,
"averageSittingTime" : null ,
"averageStandingTime" : null ,
"reach" : 0 ,
"maxHeelLift" : null ,
"heelLiftCount" : null ,
"legLiftCount" : null ,
"testCompleted" : true ,
"endReason" : null ,
"riskLevel_frt" : " high" ,
"maxShoulderShift_sbss" : 0 ,
"maxHipShift_sbss" : 0 ,
"feetMoved_sbss" : false ,
"timeInProperPosition_sbss" : 12.5 ,
"riskLevel_sbss" : " low" ,
"maxShoulderShift_stss" : 0 ,
"maxHipShift_stss" : 0 ,
"feetMoved_stss" : false ,
"timeInProperPosition_stss" : 12.5 ,
"riskLevel_stss" : " low" ,
"maxShoulderShift_fulltandem" : 0 ,
"maxHipShift_fulltandem" : 0 ,
"feetMoved_fulltandem" : false ,
"testFailed_fulltandem" : false ,
"terminationReason_fulltandem" : null ,
"timeInProperPosition_fulltandem" : 12.5 ,
"riskLevel_fulltandem" : " low" ,
"gameScore" : 0 ,
"averageReactionTime" : " 0" ,
"maxIdleTime" : " 0" ,
"averageSpeed_balloonpop" : 0 ,
"masteryTitle_balloonpop" : " tiny_popper" ,
"levelReached" : 0 ,
"totalDuration" : " 0" ,
"masteryTitle_colorchase" : " little_color_finder" ,
"squatsPerformed" : 0 ,
"averageSquatRate" : " 0.00" ,
"maxTimeBetweenSquats" : " 0.00" ,
"averageAlienDestroyTime" : " 0.00" ,
"masteryTitle_aliensquatshooter" : " rookie_defender" ,
"healthBenefits" : {
"heartDiseaseReduction" : 0 ,
"diabetesReduction" : 0 ,
"obesityReduction" : 0 ,
"depressionReduction" : 0
}
} All fields are included in every payload regardless of assessment type. Fields not relevant to the current assessment will have default/null values.
kinestex_launched → Application startsworkout_opened → User views workout detailsworkout_started → Workout beginsreturned_camera_frame / left_camera_frame → Frame trackingMultiple exercise_completed → Each exercise finished workout_overview → Summary statisticsexercise_overview → All exercises summaryworkout_completed → User exits statisticsexit_kinestex → Application closedchallenge_started → Challenge beginsexercise_completed → Exercise finishedchallenge_completed → Challenge completechallenge_exit → Exit from challengeTo get demo access and your api key, please fill out a form on our website Or, alternatively:
Send us an email to support@kinestex.com In the email subject write: B2B Demo Access In the email body include any supporting details (company / project name, site, programming language your project is written in, etc.) Once you have contacted us, you may Refer to packages based on your programming language:
For any questions, please contact: support@kinestex.com