Customization Parameters

This section describes all available customization parameters that can be passed to the KinesteX SDK to customize the user experience. Parameters are organized by category, with examples showing which have direct SDK support vs. requiring customParams.


Parameter Passing Methods:

  • Direct SDK Support: Pass directly to SDK initialization or view creation methods
  • customParams / customParameters: Additional parameters passed via a custom parameters object
  • HTML/JS postData: All parameters passed as flat object via postMessage API

Required Parameters

These parameters are mandatory for successful SDK initialization.


ParameterTypeDescription
userIdstringUnique identifier for the user. Must be at least 2 characters. Used for tracking progress, analytics, and personalization
companystringCompany name associated with the API key. Determines theme defaults and content access
keystringAPI key for authentication. Required for all API calls and content access

SDK Support: All platforms support these as direct parameters.

Required Parameters Setup
1// Direct SDK support
2let kinestex = KinesteXAIKit(
3    apiKey: "YOUR_API_KEY",
4    companyName: "YOUR_COMPANY",
5    userId: "unique-user-id"
6)

User Profile

Parameters that define user characteristics for personalized content and recommendations.


ParameterTypeDescriptionEffect
agenumberUser's age in yearsAffects workout intensity recommendations and exercise selection
genderstringUser's gender (male, female, other)Affects BMI calculations and content personalization
heightnumberUser's height (in cm or inches based on locale)Used for BMI calculation and exercise calibration
weightnumberUser's weight (in kg or lbs based on locale)Used for BMI calculation and calorie estimations
fitness_levelstringUser's fitness levelDetermines workout difficulty and progression
lifestylestringUser's lifestyle type (e.g., sedentary, active)Affects personalized plan recommendations
body_partsstring[]Target body parts for workoutsFilters and prioritizes exercises targeting specific areas
plan_typestringType of workout planDetermines the structure and focus of generated plans

SDK Support: Most platforms have direct support via UserDetails object or postData fields.

User Profile Configuration
1// Direct SDK support via UserDetails
2let user = UserDetails(
3    age: 30,
4    height: 180,
5    weight: 75,
6    gender: .Male,
7    lifestyle: .Active
8)
9
10kinestex.createView(
11    user: user,
12    // ... other params
13)

Theme & Appearance

Control the visual appearance of the application.


ParameterTypeDefaultDescriptionEffect
style"dark""dark"Applies style to the UIChanges the entire UI color scheme to dark or light modeTheme mode
themeNamestringCompany nameCustom theme identifierLoads a specific theme configuration (e.g., branded themes)

Note: Theme can also be set via URL parameter ?style=dark or ?style=light


SDK Support:

  • Swift: Direct support via IStyle class passed to view creation methods (hex values with #)
  • Flutter: Direct support via IStyle class passed to view creation methods
  • Kotlin: Direct support via IStyle data class passed to view creation methods (hex values without #)
  • React Native/React: Direct support via style object in postData
  • HTML/JS: Direct in postData object
Theme Configuration
1// Direct SDK support via IStyle class
2let customStyle = IStyle(
3    style: "light",
4    themeName: "CustomBrand"
5)
6
7kinestex.createWorkoutView(
8    workout: "Fitness Lite",
9    user: user,
10    style: customStyle,
11    isLoading: $isLoading,
12    onMessageReceived: { /* ... */ }
13)

Language & Localization

Configure the language for all UI text, voice prompts, and content.


ParameterTypeDefaultDescription
languagestring"en"Language code for localization
voiceActorstring-Specific voice actor for audio feedback
content_genderstring-Gender preference for content/instructors shown

Supported Languages:


CodeLanguageRTL Support
enEnglishNo
esSpanishNo
frFrenchNo
deGermanNo
nlDutchNo
itItalianNo
ptPortugueseNo
ruRussianNo
arArabicYes
heHebrewYes
hiHindiNo
bnBengaliNo
idIndonesianNo
daDanishNo
elGreekNo
nlDutchNo
zhChinese (Simplified)No

SDK Support: Requires customParams on most platforms.

Language Configuration
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "language": "es",
5        "content_gender": "female"
6    ],
7    // ... other params
8)

Workout Configuration

Parameters for configuring workout behavior and progression.


ParameterTypeDescriptionEffect
planCstringPlan configuration identifierSpecifies which workout plan to load
exercisesstring[]Array of exercise identifiersDefines the specific exercises to include in a session
currentExercisestringCurrent exercise identifierSets the active exercise for camera component
completed_exercisesstring[]Previously completed exercisesAllows resuming a workout from a specific point
start_from_exercisestringExercise to start fromSkips to a specific exercise in the workout
start_from_restbooleanStart from rest periodIf true, begins at rest screen before the specified exercise
resetPlanProgressbooleanReset all plan progressClears all saved progress for the user's plans
on_start_urlstringURL to call on workout startWebhook URL triggered when workout begins

Note: Exercise IDs can be retrieved from the Content API.

Workout Configuration
1// Direct support for some, customParams for others
2kinestex.createCameraView(
3    exercises: ["Squats", "Lunges", "Pushups"], // direct
4    currentExercise: $currentExercise, // direct
5    customParams: [
6        "start_from_exercise": "Lunges",
7        "start_from_rest": true,
8        "resetPlanProgress": false
9    ]
10)

Camera & Pose Detection

Fine-tune the camera and pose detection system.


ParameterTypeDefaultDescriptionEffect
shouldAskCamerabooleantruePrompt for camera permissionShows camera permission dialog before starting
shouldShowCameraSelectorbooleanfalseShow camera selection UIAllows user to choose between available cameras
shouldShowOpenCameraSettingsbooleanfalseShow settings buttonDisplays button to open device camera settings
cameraIdstring-Specific camera device IDForces use of a specific camera
cameraLabelstring-Camera label for displayShows custom label for the selected camera
minPoseDetectionConfidencenumber0.5Minimum detection confidence (0-1)Lower values detect poses more easily but may be less accurate
minTrackingConfidencenumber0.5Minimum tracking confidence (0-1)Affects how persistently poses are tracked between frames
minPosePresenceConfidencenumber0.5Minimum presence confidence (0-1)Threshold for determining if a person is in frame
mediapipeModel"full" "heavy" "light""full"MediaPipe model variantlight: Faster, less accurate. full: Balanced. heavy: Most accurate, slower
defaultDelegate"GPU" "CPU"AutoProcessing delegateForces GPU or CPU processing for pose detection
landmarkColorstring"#14FF00"Pose landmark colorChanges the color of skeleton overlay (hex color)
showSilhouettebooleantrueShow body silhouetteDisplays silhouette guide overlay during exercises
includePoseDataboolean-Include raw pose dataSends pose landmark data in postMessage events
includePoseBordersbooleantrueShow pose boundary guidesDisplays borders indicating optimal pose positioning
includeRealtimeAccuracyboolean-Send real-time accuracyBroadcasts accuracy scores in real-time via postMessage
videoFit"contain""cover"Camera feed display modeWhen set to "contain", shows the full camera frame instead of zooming in to fill the area. Useful for maximizing available space for motion tracking

Note: defaultDelegate can also be set via URL parameter ?delegate=GPU or ?delegate=CPU

Camera & Pose Detection Settings
1// Via customParams
2kinestex.createCameraView(
3    exercises: exerciseList,
4    currentExercise: $currentExercise,
5    customParams: [
6        "landmarkColor": "#FF5500",
7        "showSilhouette": true,
8        "mediapipeModel": "heavy",
9        "defaultDelegate": "GPU",
10        "includePoseData": true,
11        "includeRealtimeAccuracy": true,
12        "shouldShowCameraSelector": true,
13        "videoFit": "contain" // show full camera frame
14    ]
15)

UI Controls

Control visibility and behavior of UI elements.


ParameterTypeDefaultDescriptionEffect
isHideHeaderMainbooleanfalseHide main headerRemoves the top navigation header
hideFeelingDialogbooleanfalseHide feeling dialogSkips the post-workout feeling prompt
hideMusicIconboolean-Hide music controlRemoves the music toggle button
hideMistakesFeedbackboolean-Hide mistake feedbackDisables on-screen form correction prompts
showModalWarmUpboolean-Show warm-up modalDisplays warm-up recommendation before workout
showSettingsboolean-Show settings buttonDisplays settings access in the UI
isDrawingPoseboolean-Enable pose drawingActivates skeleton visualization on camera feed
isOnboardingbooleantrueEnable onboarding flowShows/hides the initial onboarding experience
hideCompletionOverlaybooleanfalseHide workout completion overlaySkips the workout completion summary screen shown at the end of a workout
preventGestureControlbooleanfalseDisable gesture controlPrevents users from pausing and resuming workouts using hand gestures
disableGuidebooleanfalseDisable onboarding guideSuppresses the guide entirely for embedded contexts where onboarding isn't needed
disableCookiesbooleanfalseDisable all cookiesAutomatically declines all cookies, hides the cookie management button and consent link. Useful for GDPR compliance or privacy-sensitive environments
hideStatisticsHeaderbooleanfalseHide statistics headerHides the header on the workout statistics/results screen
nativeParentScrollbooleanfalseNative scroll delegationDelegates scroll behavior of the statistics screen to the native parent container instead of using internal scroll. Enable if your native app manages its own scrolling
UI Controls Configuration
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "isHideHeaderMain": true,
5        "hideFeelingDialog": true,
6        "hideMusicIcon": true,
7        "hideMistakesFeedback": false,
8        "isOnboarding": false,
9        "hideCompletionOverlay": true,
10        "preventGestureControl": true,
11        "disableGuide": true,
12        "disableCookies": true,
13        "hideStatisticsHeader": false,
14        "nativeParentScroll": false
15    ]
16)

Challenge Mode

Configure challenge-specific parameters for direct challenge launches.


ParameterTypeDescriptionEffect
exercisestringChallenge exercise identifierSpecifies which exercise to use for the challenge
countdownnumberCountdown duration in secondsSets the preparation countdown before challenge starts
repsnumberTarget repetition countSets the goal number of reps for the challenge
gameTotalRoundsnumberTotal number of rounds (Color Chase only)Controls how many rounds the Color Chase game lasts. Default is 10. Rounds beyond 10 are procedurally generated with increasing difficulty

Balloon Pop — rounds mode (special case):


When you launch the Balloon Pop game and pass BOTH reps and countdown, the game switches from the default 30-second timer mode into a rounds mode:


  • reps = number of rounds
  • countdown = number of balloons spawned per round

The game ends after all rounds are completed. The HUD shows a round counter instead of a timer, and the difficulty stage indicator is hidden.


ConfigurationBehavior
reps: 4, countdown: 24 rounds × 2 balloons = 8 total pops
reps: 3, countdown: 33 rounds × 3 balloons = 9 total pops
reps: 6, countdown: 16 rounds × 1 balloon = 6 total pops (very easy)
reps not providedDefault timer mode (30s, escalating difficulty)
Challenge Mode Configuration
1// Via customParams for challenge integration
2kinestex.createChallengeView(
3    exercise: exerciseId, // direct
4    customParams: [
5        "countdown": 5,
6        "reps": 20,
7        // Color Chase only:
8        "gameTotalRounds": 15
9        // Balloon Pop rounds-mode example:
10        // "reps": 4, "countdown": 2  → 4 rounds × 2 balloons
11    ]
12)

Complete UX Customization

Customize the Complete UX (Main View) home page experience.


ParameterTypeDescriptionEffect
challenges_homearrayCustom challenges/games for home screenDefines the two challenge/game options shown on the Complete UX home page

challenges_home Configuration:


The challenges_home parameter allows you to customize the challenges and games displayed on the home screen of the Complete UX experience. You must pass exactly 2 objects in the array.


Array Object Structure:

PropertyTypeRequiredDescription
idstringYesExercise ID for challenges, or game ID for games
namestringYesDisplay name shown in the UI
isGamebooleanYesSet to true for games, false for challenges

Available Games:

  • balloonpop - Balloon Pop game
  • aliensquatshooter - Alien Squat Shooter game
  • colorchase - Color Chase game

Combination Options:

  • Two challenges (both with isGame: false)
  • Two games (both with isGame: true)
  • One challenge + one game (mixed isGame values)

Note: You can pass any exercise ID as a challenge. When specifying a game, ensure isGame is set to true.

Complete UX Home Page Customization
1// Customize challenges on Complete UX home page
2let exerciseId = "your-exercise-id" // Get from Content API
3let exerciseName = "Your Exercise Name"
4
5kinestex.createMainView(
6    customParams: [
7        "challenges_home": [
8            ["id": exerciseId, "name": exerciseName, "isGame": false],
9            ["id": "balloonpop", "name": "Balloon Pop", "isGame": true]
10        ]
11    ]
12)

Leaderboard

Configure leaderboard functionality.


ParameterTypeDefaultDescriptionEffect
showLeaderboardboolean-Show leaderboard UIEnables/disables leaderboard visibility
usernamestring-Display name for leaderboardSets the user's name shown on leaderboards
autoSubmitLeaderboardbooleanfalseSilent leaderboard submission (Challenge only)When true, Challenge results are submitted to the leaderboard without showing the submission modal. The display name is read from the previously stored leaderboard_username (or falls back to the user ID)

Note: Username is automatically saved to localStorage for future sessions.


`autoSubmitLeaderboard` use case: Use this only for Challenge integrations where you want every completion silently posted to the leaderboard (e.g., when your host app already manages display names and doesn't want a second prompt). Leave it unset (or false) to keep the standard modal-based flow.

Leaderboard Configuration
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "showLeaderboard": true,
5        "username": "FitnessPro123",
6        "autoSubmitLeaderboard": true // Challenge-only: skip submit modal
7    ]
8)

Loading Screen

Customize the loading screen appearance (includes native overlay color that is displayed during initial loading phase).


ParameterTypeDefaultDescriptionEffect
loadingStickmanColorstringTheme defaultStickman animation colorChanges the color of the loading animation character
loadingBackgroundColorstringTheme defaultBackground colorSets the loading screen background color
loadingTextColorstringTheme defaultText colorSets the color of loading text and messages

SDK Support:

  • Swift: Direct support via IStyle class (hex values with #)
  • Flutter: Direct support via IStyle class (hex values without #)
  • Kotlin: Direct support via IStyle data class (hex values without #)
  • React Native/React: Direct support via style object (hex values without #)
  • HTML/JS: Direct in postData object

Native Loading Overlay (Swift):


The SDK displays a native overlay on top of the WebView until content is fully loaded, preventing users from seeing a blank screen.


  • Overlay automatically hides when KinestexLoaded message is received
  • Overlay color priority:

1. Uses loadingBackgroundColor if set (hex color with #)

2. Uses white (#FFFFFF) if style = "light"

3. Uses black (#000000) if style = "dark" (default)


Style Properties:


PropertyTypeDefaultDescription
styleString?"dark"Base theme style ("dark" or "light")
themeNameString?nullCustom theme name
loadingStickmanColorString?nullColor for the loading animation stickman (hex without #)
loadingBackgroundColorString?nullBackground color during loading (hex without #)
loadingTextColorString?nullText color during loading (hex without #)
Loading Screen Customization
1// Direct SDK support via IStyle class
2let customStyle = IStyle(
3    style: "dark",
4    loadingBackgroundColor: "#1A1A2E",
5    loadingStickmanColor: "#FF6B00",
6    loadingTextColor: "#FFFFFF"
7)
8
9kinestex.createWorkoutView(
10    workout: "Fitness Lite",
11    user: user,
12    style: customStyle,
13    isLoading: $isLoading,
14    onMessageReceived: { /* ... */ }
15)

Motion Tracking Settings

Control AI-powered motion tracking behavior.


ParameterTypeDefaultDescriptionEffect
motionTrackingSettingOnboolean-Show motion tracking toggleDisplays the AI tracking on/off setting
motionTrackingEnabledboolean-Enable motion trackingSession-level override for AI tracking (clears localStorage preference)
motionDataEnabledbooleantrueRecord per-frame motion dataWhen set to false, the SDK does NOT collect per-frame pose landmark data during the session. Session replay will be empty for affected sessions, but all other workout functionality is unaffected

Note: When motionTrackingEnabled is explicitly set, it clears any saved user preference and uses the provided value for the session.


`motionDataEnabled` — only use this if you know why it's necessary. This flag exists for memory-constrained scenarios (e.g., long workouts with many unique exercise videos on older iOS devices where peak memory pressure can cause the WebView to crash). Disabling motion data reduces memory usage at the cost of losing session replay. The recorder state resets on every verification, so the flag does not leak across sessions. Default behavior is unchanged if you omit the parameter.

Motion Tracking Settings
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "motionTrackingSettingOn": true,
5        "motionTrackingEnabled": true,
6        "motionDataEnabled": false // Only set when memory-constrained
7    ]
8)

Debug & Development

Parameters for debugging and development purposes.


ParameterTypeDefaultDescriptionEffect
showDebugRecordingbooleanfalseShow debug recording UIDisplays recording controls for debugging
showNetworkDebugToolboolean-Show network debug panelDisplays network request monitoring tool
newModelIdstring-Test model identifierLoads a specific ML model version for testing

Note: showDebugRecording can also be enabled via URL parameter ?debug=true

Debug & Development Settings
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "showDebugRecording": true,
5        "showNetworkDebugTool": true,
6        "newModelId": "pose_model_v2_beta"
7    ]
8)

Custom Workout

Configure custom workout sequences. For complete custom workout implementation, see Custom Integration.


ParameterTypeDescriptionEffect
customWorkoutExercisesarrayArray of exercise configurationsDefines a custom sequence of exercises with their parameters
restSpeechesstring[]Rest period audio identifiersCustom audio to play during rest periods
currentRestSpeechstringCurrent rest speech identifierSets the active rest period audio
videoURLstringCustom video URLURL for custom exercise demonstration video

Custom Workout Flow:

1. Pass customWorkoutExercises during initial verification

2. Send workout_activity_action: "start" message to begin the workout

3. The system will navigate to the workout flow automatically

Custom Workout Parameters
1// Via customParams for additional settings
2let customExercises = [
3    WorkoutSequenceExercise(
4        exerciseId: "exercise-id-1",
5        reps: 15,
6        duration: nil,
7        includeRestPeriod: true,
8        restDuration: 20
9    )
10]
11
12kinestex.createCustomWorkoutView(
13    customWorkouts: customExercises, // direct
14    customParams: [
15        "restSpeeches": ["rest_speech_1", "rest_speech_2"],
16        "videoURL": "https://example.com/demo.mp4"
17    ]
18)

Workout Activity Actions

Control workout state programmatically via postMessage using the workout_activity_action property.


ActionDescription
pause_workoutPauses the workout (video, timer, and tracking)
resume_workoutResumes a paused workout
mute_workoutMutes all audio (speech, sounds, and music)
unmute_workoutUnmutes all audio
mute_speechMutes only speech feedback (sounds still play)
unmute_speechUnmutes speech feedback

Note: These actions are sent via postMessage to the KinesteX iframe/webview after the workout has started.

Workout Activity Actions
1// Send workout activity action using @State binding
2// First, declare the state variable and pass it to the view:
3// @State var workoutAction: [String: Any]? = nil
4// kinestex.createWorkoutView(..., workoutAction: $workoutAction, ...)
5
6// Pause the workout
7workoutAction = ["workout_activity_action": "pause_workout"]
8
9// Resume the workout
10workoutAction = ["workout_activity_action": "resume_workout"]
11
12// Mute all audio
13workoutAction = ["workout_activity_action": "mute_workout"]
14
15// Unmute all audio
16workoutAction = ["workout_activity_action": "unmute_workout"]
17
18// Mute only speech (sounds still play)
19workoutAction = ["workout_activity_action": "mute_speech"]
20
21// Unmute speech
22workoutAction = ["workout_activity_action": "unmute_speech"]

Assessment Configuration

Parameters specific to assessment modes (TUG test, balance tests, etc.). For complete assessment data structures, see Data Points.


ParameterTypeDefaultDescriptionEffect
tugMinRequiredSpacenumber-Minimum space requirementSets the required distance (in meters) for TUG assessment

Note: For balance assessments (semitandemstand, fulltandem, sidebysidestand), the system automatically uses the "heavy" MediaPipe model for better accuracy.

Assessment Configuration
1// Via customParams for TUG assessment
2kinestex.createAssessmentView(
3    exercise: "tugtest", // direct
4    customParams: [
5        "tugMinRequiredSpace": 3
6    ]
7)

Audio Configuration

Control audio playback settings.


ParameterTypeDefaultDescriptionEffect
enableM4abooleanfalseForce M4A audio formatForces the audio system to use M4A format instead of default
Audio Configuration
1// Via customParams
2kinestex.createView(
3    customParams: [
4        "enableM4a": true
5    ]
6)

Session & Data Saving

Control session saving and data upload behavior.


ParameterTypeDefaultDescriptionEffect
shouldSendStatsbooleanfalseEnable session savingWhen enabled, workout sessions are automatically saved to the backend upon completion — including per-exercise stats, accuracy scores, calories, and motion recording data
Session Saving Configuration
1// Via customParams
2kinestex.createWorkoutView(
3    workout: "Full Body Burn",
4    customParams: [
5        "shouldSendStats": true
6    ]
7)

Plan Context

Pass plan progression context so the SDK associates a directly-launched workout with the correct plan. After the workout finishes, the SDK posts plan_progression_saved (or plan_progression_failed on error). See Plans & Programs events.


ParameterTypeDescription
planIdstringThe ID of the plan the workout belongs to
planTypestringType of plan (e.g., goal-based plan type, or "personalized")
progressWorkoutIdstringThe plan-day workout ID used to record progression

When to use: Only when you launch a workout directly via the SDK (not through the in-app plan UI) and want it to count toward plan progression. The in-app plan flow handles this automatically — you don't need to pass these fields if the user navigates from the plan dashboard.


Note: If you launch a workout without these fields, it is treated as a standalone session and won't update plan progression.

Plan Context Configuration
1// Pass plan context when launching a workout directly
2kinestex.createWorkoutView(
3    workout: "Day 3 Workout",
4    customParams: [
5        "planId": "plan_abc123",
6        "planType": "personalized",
7        "progressWorkoutId": "plan_day_3"
8    ]
9)

Plan Onboarding Prefill

Pre-fill or skip onboarding survey questions for personalized plans. All fields are optional — only provided fields will be pre-filled and their corresponding screens will be skipped. If all answers are provided for a goal-based plan, the user goes straight to results.


Availability: This parameter is used with \createCustomComponentView\ (Swift, Kotlin, Flutter) or the \CUSTOM_COMPONENT\ integration option (React Native) with \route: "plan-onboarding"\.


ParameterTypeDescription
routestringMust be \"plan-onboarding"\ for this feature to work
planOnboardingPrefillobjectObject containing prefill values for onboarding survey
planOnboardingPrefill.goalstringUser's fitness goal (e.g., "weight_loss")
planOnboardingPrefill.healthIssuesstring[]List of health issues (e.g., ["back_pain"])
planOnboardingPrefill.injuriesstring[]List of injuries (empty array for none)
planOnboardingPrefill.durationnumberPreferred workout duration in minutes
planOnboardingPrefill.lifestylestringUser's activity level (e.g., "sedentary", "active")
planOnboardingPrefill.assessmentOnlybooleanWhen \true\, all survey screens (goal, health issues, injuries, duration, lifestyle) are skipped and the user lands directly on the fitness assessment. Any previously stored plan ID is cleared so a fresh personalized plan is generated after the assessment completes. All other prefill fields are ignored when this is set

\`assessmentOnly\` use case: Use this for reassessment flows — when the user already has a profile (goal, lifestyle, etc.) recorded in your host app and you only want them to perform a fresh fitness assessment to regenerate their personalized plan. Don't combine it with the other prefill fields; they will be ignored.


\`remind_me_later_clicked\` event: When the user is on the Assessment screen inside the plan-onboarding flow and taps "Remind me later", the SDK posts a \remind_me_later_clicked\ PostMessage so your host app can dismiss the SDK and schedule a follow-up prompt. This event is only fired from the plan-onboarding page.

Plan Onboarding Prefill Configuration
1// Use createCustomComponentView with route "plan-onboarding"
2kinestex.createCustomComponentView(
3    route: "plan-onboarding",
4    customParams: [
5        "planOnboardingPrefill": [
6            "goal": "weight_loss",
7            "healthIssues": ["back_pain"],
8            "injuries": [],
9            "duration": 30,
10            "lifestyle": "sedentary"
11        ]
12    ]
13)
14
15// Reassessment-only flow (skips the entire survey)
16kinestex.createCustomComponentView(
17    route: "plan-onboarding",
18    customParams: [
19        "planOnboardingPrefill": [
20            "assessmentOnly": true
21        ]
22    ]
23)

URL Parameters

Some parameters can also be passed via URL query string for HTML/JS integrations:


URL ParameterEquivalent ConfigExample
stylestyle?style=light
delegatedefaultDelegate?delegate=GPU
debugshowDebugRecording?debug=true

URL parameters serve as defaults and can be overridden by parameters passed in the postMessage data.

Complete Example

Here's a comprehensive example combining multiple parameter categories:

Complete Configuration Example
1// Complete configuration example
2let kinestex = KinesteXAIKit(
3    apiKey: "YOUR_API_KEY",
4    companyName: "MyFitnessApp",
5    userId: "user_12345"
6)
7
8let user = UserDetails(
9    age: 28,
10    height: 165,
11    weight: 60,
12    gender: .Female,
13    lifestyle: .Active
14)
15
16// Theme & Loading via IStyle class (hex values with #)
17let customStyle = IStyle(
18    style: "dark",
19    loadingBackgroundColor: "#1A1A2E",
20    loadingStickmanColor: "#00FF88",
21    loadingTextColor: "#FFFFFF"
22)
23
24kinestex.createWorkoutView(
25    workout: "Fitness Lite",
26    user: user,
27    style: customStyle,
28    isLoading: $isLoading,
29    // Other customization via customParams
30    customParams: [
31        // Language
32        "language": "es",
33
34        // UI Controls
35        "isOnboarding": false,
36        "hideFeelingDialog": true,
37
38        // Camera
39        "landmarkColor": "#00FF88",
40        "showSilhouette": true,
41        "shouldShowCameraSelector": true,
42
43        // Leaderboard
44        "showLeaderboard": true,
45        "username": "FitUser28"
46    ],
47    onMessageReceived: { message in
48        // Handle messages
49    }
50)

Need Help?

Our team is ready to assist with your integration.

Contact Support