Upload Tracking endpoint (video & image)
Upload or link a video/image, run pose estimation, and receive results via WebView messages.
Sections
Base URL
https://app.posetracker.com/pose_tracker/upload_trackingQuick start
Video upload:
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&exercise=squatImage upload:
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=imageLegacy: full single-page reference (kept temporarily)
Upload Tracking is a PoseTracker endpoint that handles video and image uploads for pose analysis.
Video: upload a file or pass a URL. Run pose estimation in real time. Optionally draw a skeleton overlay, track exercises (reps, progression, recommendations), and export a new video with the overlay.
Image: upload a file or pass a URL. Run pose estimation once. Get keypoints, computed angles, and one image with the skeleton drawn. No exercise tracking.
Base URL
https://app.posetracker.com/pose_tracker/upload_trackingEverything is controlled via query parameters.
You can embed this page in a WebView. It returns results to the host app via sendDataToNative-style messages (see below).
Quick start
Video (user uploads a file)
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&exercise=squatImage (user uploads a file)
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=imageQuery parameters
Required
token (required)
Your PoseTracker API key.
If missing or invalid, the page shows:
Invalid params. Please refer to our API documentation. Missing token=YOUR API_KEYA link to the tracking-endpoint documentation
Example:
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEYSource type and remote media URL
These parameters define what is analyzed (video vs image) and where media comes from (remote URL vs user upload).
source (optional)
video(default)image
Behavior:
source=videoenables overlay + export + exercise tracking (whenexerciseis set).source=imageruns pose estimation once and returns a single overlay image. No tracking features.
videoSrc (optional, video only)
A direct URL to a video to analyze (S3, CDN, etc).
When set, the video loads automatically.
You can hide the upload UI with
showUpload=false.The media server must support CORS (see CORS for remote URLs).
imageSrc (optional, image only)
A direct URL to an image to analyze.
Same behavior and CORS requirements as videoSrc.
Upload UI rules:
source=videoand novideoSrc: show Upload a video button (unlessshowUpload=false).source=imageand noimageSrc: show Upload an image button (unlessshowUpload=false).When
videoSrc/imageSrcis set: the media loads from that URL and analysis starts when ready.
Feature parameters (plan-gated)
These flags control what data and features are enabled. Some are restricted by plan (see Plan restrictions).
Defaults:
skeleton=trueEverything else defaults to
false
keypoints (optional)
trueorfalse(defaultfalse)When
true, keypoint coordinates are sent to the host app.Plan: developer/custom/company only.
angles (optional)
trueorfalse(defaultfalse)When
true, computed body angles are sent to the host app.Plan: developer/custom/company only.
skeleton (optional)
true(default) orfalseControls whether the skeleton is drawn on top of the video/image.
Detection can still run even if skeleton drawing is disabled.
blazepose (optional)
trueorfalse(defaultfalse)When
true, use BlazePose instead of MoveNet.Plan: developer/custom/company only.
export (optional, video only)
trueorfalse(defaultfalse)When
true, the user can export a new video with the skeleton overlay.Plan: developer/custom/company only.
recommendations (optional, video only)
trueorfalse(defaultfalse)Enables posture recommendations during exercise tracking.
Plan: developer/custom/company only.
progression (optional, video only)
trueorfalse(defaultfalse)Enables progression data per repetition.
Plan: developer/custom/company only.
Exercise parameters (video only)
These are only used when source=video and exercise/movement tracking is supported.
exercise (recommended for video tracking)
Movement identifier. Required for rep counter, progression, and recommendations.
Examples:
squatpushuplungeplankbalance_leg_leftbalance_leg_rightbalance_legjumping_jacklow_impact_jack
difficulty (optional)
easy(default)normalpro
Affects validation thresholds for counting repetitions.
UI customization parameters (optional)
Use these to adapt the upload UI and layout to your app.
showUpload
true(default) orfalseShow or hide the upload button.
uploadLabel
Button label. Examples: Upload a video, Upload an image.
uploadButtonClass
CSS class name(s) applied to the upload button.
uploadButtonStyle
Inline-style string (semicolon-separated). Only a safe subset of CSS properties is applied.
Examples of supported properties:
background-colorcolorpaddingborder-radiusfont-size
uploadButtonPosition
topbottomfloating
containerClass
CSS class name(s) applied to the main container.
width / height
Display width/height in pixels.
Messages sent to the host app (WebView / native)
The page emits structured messages so the host app can react (logs, UI, storage).
Message naming and transport depend on your integration. The list below describes the logical message types and payloads.
Common messages (video and image)
initialization
Status while loading media or initializing the pose model.
Typical fields:
messageready(boolean)
environment
Sent after backend init.
Typical fields:
webgl(boolean)
error
Sent for any error (invalid token, CORS issues, model load failures, etc).
Typical fields:
code(example values:video_load_error,image_load_error,cross_origin_video)message
Video-only messages
keypoints (when keypoints=true)
Array of keypoints with:
namex,y,zscore
angles (when angles=true)
Computed angles object.
posture
Current posture / “ready” state for the exercise.
counter
Repetition count. Includes final=true when the video ends.
progression (when progression=true)
Per-rep progression payload.
recommendations (when recommendations=true)
Posture recommendations during the exercise.
keypoints_batch (when keypoints=true)
Time-stamped keypoints for the whole video.
exercise_summary
Final summary (counter, recommendations, progression).
export_ready (when export=true)
Sent when export finishes. Includes:
url(blob URL of the exported video)
Image-only messages
keypoints (when keypoints=true)
Single set of keypoints.
angles (when angles=true)
Single set of computed angles.
image_overlay
Data URL of the image with skeleton drawn.
Example format:
data:image/png;base64,...Plan restrictions
Free plan
These parameters are not allowed:
keypointsanglesblazeposerecommendationsprogressionexport
If any of them are set to true, the page shows an error like:
You cannot use developer featuresA link to the tracking-endpoint documentation
Developer / Custom / Company plans
All feature parameters above are allowed.
CORS for remote URLs
This section applies when using videoSrc or imageSrc hosted on another domain (S3, CDN, etc).
Requirements:
The media server must include appropriate CORS headers.
The response must allow
GETon the media resource.Access-Control-Allow-Originmust include the front origin (for examplehttps://app.posetracker.com).
If CORS is missing or incorrect, the browser may block pixel access. The page reports an error message such as:
video_load_errorimage_load_errorcross_origin_video
Example: S3 CORS configuration
Use a bucket CORS rule that allows GET from https://app.posetracker.com.
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET"],
"AllowedOrigins": ["https://app.posetracker.com"],
"ExposeHeaders": []
}
]Example URLs
Video — upload only (user picks file)
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&exercise=squatVideo — direct URL + keypoints + angles
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&videoSrc=https://your-cdn.com/video.mp4&exercise=pushup&keypoints=true&angles=trueVideo — export with overlay
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&videoSrc=https://your-cdn.com/video.mp4&exercise=lunge&export=true&keypoints=trueImage — direct URL
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=image&imageSrc=https://your-cdn.com/photo.jpg&keypoints=true&angles=trueImage — upload only
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=image&keypoints=true&angles=trueImage — minimal (overlay only, no keypoints/angles messages)
https://app.posetracker.com/pose_tracker/upload_tracking?token=YOUR_API_KEY&source=image&imageSrc=https://your-cdn.com/photo.jpgWhen to use what
Analyze video and count reps:
source=videoUpload or
videoSrc=...exercise=...Optional:
keypoints=true,angles=true
Analyze video and export an overlay video:
source=videoUpload or
videoSrc=...export=trueexercise=...
Analyze image and get keypoints/angles/overlay:
source=imageUpload or
imageSrc=...keypoints=trueangles=true
Last updated