Request flow
Submit a short clip, then poll the job or receive a webhook when results are ready. Each successful analysis returns the deliverables you requested.
# 1. Submit a clip (10–15s, single or multi-angle)
POST /motion/analyze
Authorization: Bearer <YOUR_API_KEY>
Content-Type: multipart/form-data
video=@dog-walking.mp4
options={ "outputs": ["overlay", "keypoints", "metrics", "timeline", "summary"] }
# -> 202 Accepted
{ "job_id": "mot_8f3a...", "status": "queued" }
# 2. Poll the job (or receive a webhook)
GET /motion/jobs/mot_8f3a...
# -> 200 OK
{
"status": "succeeded",
"results": {
"overlay_url": "https://.../overlay.mp4",
"gait_data_url": "https://.../gait_data.json",
"metrics": { "...": "see schema below" },
"summary": "..."
}
}Deliverables
Skeleton overlay videoThe clip with the tracked skeleton drawn on top.
gait_data.jsonFrame-level keypoint and skeleton data.
metrics_v1.jsonThe biomechanics metrics documented on this page.
Stride timelinePer-cycle timing and length for every stride.
Flagged cyclesCycles marked as abnormally short or long.
Report-ready summaryA normalized summary for apps, dashboards or clinical reports.
Unit suffixes
_sSeconds._degDegrees._blBody-length normalized. Spatial values divided by body length so different sizes compare directly._cvCoefficient of variation. Lower means steadier._asymmetryLeft/right difference index. Closer to 0 means more balanced.weight_indexPosture-derived weight-bearing proxy. Not equivalent to force-plate data.Browse the fields
Search by name or tap a group to filter. Every field is the exact key returned in metrics_v1.json.
13
metric families
96
fields across four limbs
4
limbs tracked
All 96 fields across 13 groups.
{limb} expand to all four limbs (front_left, front_right, back_left, back_right), so a single per-limb row is four real fields. Counts above reflect the fully expanded schema.Scale & orientation
scale4 fieldsscale.body_length_pxpxBody length in pixels, used to normalize spatial metrics.scale.motion_axis_angle_degdegDirection of travel relative to the frame.scale.motion_axis_stability0–1How stable the walking direction is across the clip.scale.shoulder_height_blblShoulder height, normalized to body length.Tracking quality
quality4 fieldsquality.mean_keypoint_confidence0–1Average keypoint confidence across the clip.quality.low_confidence_ratio0–1Share of keypoints below the confidence threshold.quality.critical_keypoint_completeness0–1Completeness of the keypoints required for metrics.quality.usable_frame_ratio0–1Share of frames usable for analysis.Stance & swing
stance22 fieldsPer-limb fields repeat for each limb: front_left, front_right, back_left, back_right.
stance.{limb}_stance_fraction0–1Fraction of the stride spent in stance.stance.{limb}_stance_time_ssMean stance duration.stance.{limb}_swing_time_ssMean swing duration.stance.{limb}_stance_swing_ratioratioStance time divided by swing time.stance.front_stance_time_asymmetryasymLeft/right stance-time asymmetry, front limbs.stance.back_stance_time_asymmetryasymLeft/right stance-time asymmetry, hind limbs.stance.front_stance_fraction_asymmetryasymLeft/right stance-fraction asymmetry, front limbs.stance.back_stance_fraction_asymmetryasymLeft/right stance-fraction asymmetry, hind limbs.stance.front_stance_swing_ratio_asymmetryasymLeft/right stance/swing-ratio asymmetry, front limbs.stance.back_stance_swing_ratio_asymmetryasymLeft/right stance/swing-ratio asymmetry, hind limbs.Stride & cadence
stride21 fieldsPer-limb fields repeat for each limb: front_left, front_right, back_left, back_right.
stride.{limb}_stride_time_ssMean stride period.stride.{limb}_stride_length_blblMean stride length, normalized to body length.stride.{limb}_stride_length_cvcvStride-length variability (lower is steadier).stride.{limb}_stride_countcountNumber of strides detected.stride.cadence_hzHzStride frequency in cycles per second.stride.cadence_steps_per_minspmStride frequency in steps per minute.stride.front_stride_length_asymmetryasymLeft/right stride-length asymmetry, front limbs.stride.back_stride_length_asymmetryasymLeft/right stride-length asymmetry, hind limbs.stride.mean_stride_length_blblMean stride length across limbs.Stride timeline
stride_timeline3 fieldsStructured arrays rather than scalar fields.
stride_timeline.cycles[]arrayEach stride cycle: limb, start/end frame, start/end time, duration, stride length and stance window.stride_timeline.total_cyclescountTotal number of detected stride cycles.stride_timeline.flagged_cycles[]arrayCycles flagged as anomalous (short_stride or long_stride).Joint angles
joint_angles18 fieldsPer-limb fields repeat for each limb: front_left, front_right, back_left, back_right.
joint_angles.{limb}_knee_angle_mean_degdegMean knee angle.joint_angles.{limb}_knee_rom_degdegKnee range of motion.joint_angles.{limb}_knee_angle_min_degdegMinimum knee angle.joint_angles.{limb}_knee_angle_max_degdegMaximum knee angle.joint_angles.front_knee_rom_asymmetryasymLeft/right knee ROM asymmetry, front limbs.joint_angles.back_knee_rom_asymmetryasymLeft/right knee ROM asymmetry, hind limbs.Head nod
head_nod3 fieldsA classic visual marker of front-limb pain.
head_nod.head_nod_asymmetry_blblMagnitude of head-nod asymmetry.head_nod.head_nod_signed_blblSigned head-nod asymmetry (direction).head_nod.head_nod_sideenumleft_front_painful, right_front_painful or symmetric.Hip hike
hip_hike3 fieldsA classic visual marker of hind-limb pain.
hip_hike.hip_hike_asymmetry_blblMagnitude of hip-hike asymmetry.hip_hike.hip_hike_signed_blblSigned hip-hike asymmetry (direction).hip_hike.hip_hike_sideenumleft_back_painful, right_back_painful or symmetric.Velocity
velocity4 fieldsvelocity.mean_velocity_bl_sbl/sMean travel velocity in body lengths per second.velocity.max_velocity_bl_sbl/sPeak travel velocity.velocity.velocity_cvcvVelocity variability (lower is steadier).velocity.steady_state_fraction0–1Share of the clip at a steady walking speed.Back sway
back_sway2 fieldsback_sway.back_lateral_sway_blblSide-to-side sway of the back line.back_sway.back_vertical_oscillation_blblUp-and-down oscillation of the back line.Step geometry
step4 fieldsstep.front_step_separation_blblFront-limb step separation along travel.step.front_step_width_blblFront-limb lateral step width.step.back_step_separation_blblHind-limb step separation along travel.step.back_step_width_blblHind-limb lateral step width.Paw-lift symmetry
symmetry2 fieldssymmetry.front_paw_lift_range_asymmetryasymLeft/right paw-lift range asymmetry, front limbs.symmetry.back_paw_lift_range_asymmetryasymLeft/right paw-lift range asymmetry, hind limbs.Weight bearing
weight_bearing6 fieldsA posture-derived proxy, not force-plate pressure data.
weight_bearing.front_left_weight_indexindexWeight-bearing proxy, front-left limb.weight_bearing.front_right_weight_indexindexWeight-bearing proxy, front-right limb.weight_bearing.back_left_weight_indexindexWeight-bearing proxy, back-left limb.weight_bearing.back_right_weight_indexindexWeight-bearing proxy, back-right limb.weight_bearing.front_weight_index_asymmetryasymLeft/right weight asymmetry, front limbs.weight_bearing.back_weight_index_asymmetryasymLeft/right weight asymmetry, hind limbs.Limitations
Which fields populate depends on video angle, clarity, occlusion, walking speed and keypoint confidence. The API is built for mobility screening, trend monitoring, rehab and post-op tracking, and decision support. It is not a standalone diagnostic device, and the weight_index family is a posture-derived proxy rather than force-plate measurement.