Video requirements
Before uploading, make sure your video meets these constraints:| Constraint | Requirement |
|---|---|
| File size | 30 MB maximum |
| Duration | 10 seconds maximum |
| Format | MP4, MOV, AVI, or WEBM |
| Resolution | 1080p recommended (max 1080p height) |
| Frame rate | 30 fps minimum, 60 fps recommended |
Orientation
The required orientation depends on the analysis type and running condition. Submitting a video with the wrong orientation will produce poor results or cause the analysis to fail.| Analysis type | Condition | Orientation | Typical resolution |
|---|---|---|---|
| Side view | Overground (treadmill=false) | Landscape (16:9) | 1920 x 1080 |
| Side view | Treadmill (treadmill=true) | Portrait (9:16) | 1080 x 1920 |
| Back view | Any | Portrait (9:16) | 1080 x 1920 |
Analysis types
Choose the analysis type based on the camera position:- Side view
- Back view
Camera is positioned to the side of the runner. Set
analysis_type=side_view.Produces:- Overall biomechanical score (0 — 1)
- Running metrics: speed, step length, cadence, ground contact time, time of flight, duty factor
- Overstride analysis with angle and score
- Foot landing classification per step (rearfoot, midfoot, forefoot)
- Joint angles: ankle, knee, hip, shoulder, elbow
- Running style classification with confidence percentage
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
video | file | Yes | — | Video file to analyze |
analysis_type | string | Yes | side_view | side_view or back_view |
height | number | No | 1.70 | Runner height in meters |
weight | number | No | 70 | Runner weight in kilograms |
pace | string | Conditional | — | Running pace MM:SS. Required when treadmill=true. Auto-calculated for overground running. |
language | string | No | en | Result language: en, fr, de, zh, ko, pt, es, it, ja |
treadmill | boolean | No | false | Whether the runner is on a treadmill |
full_body | boolean | No | true | Full body analysis (back view only). Set false for pronation only. |
subject_id | string | No | — | Subject ID to link the analysis to. See subject management. |
Lifecycle
Status progression
| Status | HTTP code | Meaning |
|---|---|---|
pending | 200 | Analysis is queued, waiting for a processing slot. |
analyzing | 202 | Processing is underway. The percentage field shows progress. |
success | 200 | Analysis is complete. Full results are available. |
failed | 400 | Analysis could not be completed. No results available. |
Polling strategy
Poll the results endpoint every 3 — 5 seconds. Most analyses complete within 10 — 30 seconds depending on video length and server load.Webhooks (optional)
You can register an HTTPS endpoint and enable notifications per analysis to receive progress and completion events without polling. See Analysis webhooksResult levels
Once the status issuccess, you can access three levels of data:
Full results (GET /analysis/{id}/results)
Full results (GET /analysis/{id}/results)
The results endpoint returns everything in a single call: status, signed URLs
(thumbnail and annotated video), and the
biomechanical_analysis object containing
scores, metrics, and classifications.Use this when you need a complete snapshot of the analysis.Calculated data (GET /analysis/{id}/results/calculated_data)
Calculated data (GET /analysis/{id}/results/calculated_data)
Structured numerical metrics without media URLs. Ideal when you need to process
or display specific values.Side view includes:
metrics, overstride, foot_landing, joint_angles,
running_styles, and total_score.Back view includes: gait_cycle with stance means per leg (pronation,
knee adduction, pelvic drop) and step-by-step data.Raw data (GET /analysis/{id}/results/raw_data)
Raw data (GET /analysis/{id}/results/raw_data)
Frame-by-frame position data for every anatomical landmark detected. Includes
video_input_information (resolution, FPS, duration) and a frames object
keyed by frame number.Use this for custom visualizations, overlays, or your own biomechanical models.Error handling
Common errors during the analysis workflow:| Error | Code | Status | When |
|---|---|---|---|
| File too large | file_too_large | 413 | Video exceeds 30 MB |
| Video too long | — | 400 | Video exceeds 10 seconds |
| Invalid file type | invalid_file_type | 400 | Unsupported extension (not MP4, MOV, AVI, or WEBM) |
| Not completed | — | 400 | Requesting calculated/raw data before success |
| Insufficient credits | insufficient_credits | 402 | No credits remaining |
| Not found | — | 404 | Invalid analysis_id |