API Reference
Output schema & fields
The Motion Intelligence API returns metrics flat-namespaced as family.field. This page documents all 13 families. Endpoints and credentials are issued with your API key at onboarding.
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.
The request below shows the documented shape. Confirm the issued endpoint, version and supported capture guidance with your integration credentials.
# 1. Submit a supported short clip
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.
Threshold-flagged cyclesCycles outside configured short- or long-stride thresholds, surfaced for review rather than diagnosis.
Structured summaryA structured summary for apps or professional review workflows, without a diagnostic conclusion.
Unit suffixes
_sSeconds._degDegrees._blBody-length-normalized spatial value. Useful for within-subject review under similar capture conditions; it does not make breeds or recording setups directly equivalent._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
94
fields across four limbs
4
limbs tracked
All 94 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 outside configured short- or long-stride thresholds for review.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_nod2 fieldsHead-motion asymmetry measurements. These values do not localise pain or establish a diagnosis.
head_nod.head_nod_asymmetry_blblMagnitude of head-nod asymmetry.head_nod.head_nod_signed_blblSigned head-nod asymmetry (direction).Hip hike
hip_hike2 fieldsHip-motion asymmetry measurements. These values do not localise pain or establish a diagnosis.
hip_hike.hip_hike_asymmetry_blblMagnitude of hip-hike asymmetry.hip_hike.hip_hike_signed_blblSigned hip-hike asymmetry (direction).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
Peqaboo does not diagnose lameness, locate pain, assign clinical severity or prove treatment results. Footage quality affects the output. Seek veterinary care for pain, sudden change, injury or urgent concerns.
Video-derived measurements must not be treated as pain localisation, a lameness diagnosis, proof of treatment response or an independent clinical conclusion. Interpretation should include the animal's history, examination and other relevant evidence.