Skip to main content
Use usePoseTracker inside PoseTrackerProvider to subscribe to typed events. Without an API key you get keypoints-only mode. WebView hosts listen to postMessage instead — WebView messages.

Keypoints (free)

KeypointsEvent shape:

Input sources

Default is live camera. For uploaded media, the host app picks a file and passes:
Web: pt.setSource({ type: 'image' | 'video', src }) then start() / analyze(). Full guide (CORS, content://, React, script tag): Media sources.

Useful WebViewPoseView props

Full table: WebViewPoseView.

More typed callbacks

Available on usePoseTracker({ ... }) when the paid engine is active (API key):
  • onCountercount, optional formScore (score, average, grade)
  • onAngles, onPosture, onProgression, onRecommendations
  • onFormScore, onExerciseSummary
  • Jump events (onJumpResult, …)
Without a key, business events are not emitted — only keypoints (and init / error / quality signals). Full catalog (shapes + error codes): Events.

Classic onMessage (optional)

For WebView parity with snake_case payloads (current_count, form_score):
Prefer typed callbacks for new apps.

Next

Optional API key + exercise · Events catalog · SDK quickstart
For LLMs: Free keypoints via usePoseTracker({ onKeypoints }) on the SDK. WebView equivalent is type: "keypoints" with joints in data. https://docs.posetracker.com/keypoints
Last modified on September 14, 2026