Skip to main content
This guide walks through the complete analysis lifecycle: uploading a video, monitoring progress, and retrieving different levels of result data.

Video requirements

Before uploading, make sure your video meets these constraints:

Orientation

Required orientation depends on the analysis type and running condition (see the treadmill parameter below). Submitting a video with the wrong orientation will produce poor results or cause the analysis to fail.
See example videos for the full orientation matrix, typical resolutions, and reference input/output clips per scenario.

Analysis types

Choose the analysis type based on the camera position:
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
See example videos for sample input and output videos of each analysis type.

Parameters

Lifecycle

Status progression

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 API keys and webhooks

Result levels

Once the status is success, you can access three levels of data:
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. Each segment’s texts object includes recap, consequences, and correction for both side view and back view (side view may also include coach_tips).Each biomechanical segment includes score_number, measured_value, and score ranges such as range_good, range_okay, and sometimes range_bad. measured_value and all range values are expressed in degrees. Range boundaries can overlap: for example, with range_good: [0, 102] and range_okay: [102, 111], values up to 102 are good and values strictly greater than 102 are okay.For side view, total_score is a weighted calculation, not a simple average of the segment scores.
Need to render a gauge or scale? See measurement scales for the full min/max boundaries and display recommendations for each segment.
Use this when you need a complete snapshot of the analysis.
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.
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: