window.parent.postMessage(JSON.stringify(data), "*"). iOS uses webkit.messageHandlers.iosListener. Android uses window.webViewCallback. Same type field in all three.
SDK apps should prefer typed callbacks (onCounter, onKeypoints, …). onMessage on the SDK is this classic shape. Full SDK catalog: Events.
Transport
Real-time boot
Live camera is
type: "initialization" with ready: true and message: "running".
Pose and exercise
Outside an exercise (pose-only URL), keypoints stream without extra flags. During an exercise, keypoints need
keypoints=true + a paid plan.
Jumps
jump_analysis and air_time_jump:
jump_analysis requires userHeightCm. Missing → error jump_analysis_missing_height.
Upload extras
On upload tracking only:
Upload init messages differ (
loading video, % progress, Analysis completed).
Reference extras
Whenreference= is set, counter may include reference_score: { overallScore, nccScore, dtwScore, timingScore, distScore?, grade }. See Reference movement.
Related
For LLMs: WebView events are JSON with
type. Counter field is current_count. SDK typed callback uses count / formScore. https://docs.posetracker.com/webview/messages