URL Parameters
Almost every customization parameter can also be passed via the URL query string — useful for standalone links and web embeds where postMessage isn't convenient. Applies to: All integrations.
Two URL modes:
1. Single encoded payload (recommended for complex configs): ?data=<base64-encoded JSON> — the entire parameter object, base64-encoded. When present, it replaces all other individual query params.
2. Individual plain parameters: ?age=25&gender=male&style=dark&showSilhouette=false — each parameter as a plain key/value. Values are automatically type-converted: known boolean parameters accept true/false/1/0, known numeric parameters are parsed as numbers, and values that look like JSON (starting with [ or {) are JSON-parsed.
Precedence: values sent via postMessage override URL values (URL acts as defaults) — with two exceptions that work the other way around:
| URL Parameter | Equivalent Config | Example | Precedence |
| style | style | ?style=light | URL wins over postMessage |
| delegate | defaultDelegate | ?delegate=GPU | URL wins over postMessage |
| debug | showDebugRecording | ?debug=true | Combined with postMessage value (either enables) |
Type-converted parameter names (when passed individually in the URL):
- Booleans:
isHideHeaderMain,isDrawingPose,resetPlanProgress,hideFeelingDialog,hideOtherGender,includeRealtimeAccuracy,showSilhouette,showDebugRecording,showFormGuidance,streamFormGuidance,includePoseBorders,showLeaderboard,shouldAskCamera,shouldShowCameraSelector,showSettings,motionTrackingSettingOn,motionTrackingEnabled,start_from_rest,enableM4a,nativeParentScroll,isHorizontalMode - Numbers:
age,height,weight,countdown,reps,minPoseDetectionConfidence,minTrackingConfidence,minPosePresenceConfidence,tugMinRequiredSpace
Parameters not in these lists arrive as strings (or JSON-parsed objects/arrays) — the same scoping rules from their sections apply.
Exception — `includePoseData`: this parameter is a string array and cannot be passed as an individual URL query param (the value would not survive URL type conversion). Pass it via postMessage or inside the ?data=<base64 JSON> payload instead.