Skip to main content
GET
Get analysis results

Authorizations

Authorization
string
header
required

Recommended. Pass your API key as a Bearer token in the Authorization header: Authorization: Bearer YOUR_API_KEY.

Path Parameters

analysis_id
string
required

Analysis ID returned by the start endpoint.

Response

Analysis completed or pending.

video_id
string
Example:

"3dde3402-94d7-462e-a784-9306207108dd"

status
string
Example:

"success"

percentage
integer
Example:

100

thumbnail
string

Signed URL to the analysis thumbnail image (expires after 1 hour).

Example:

"https://storage.googleapis.com/ochy-7871a.appspot.com/partners/.../output/<analysis_id>_thumbnail.jpg?<signed-url-parameters>"

output_video
string

Signed URL to the annotated output video (expires after 1 hour).

Example:

"https://storage.googleapis.com/ochy-7871a.appspot.com/partners/.../output/encoded_analyzed_<analysis_id>.mp4?<signed-url-parameters>"

biomechanical_analysis
object

Full biomechanical analysis results. Shape varies by analysis type.

Side view includes: analysis_content (arm, back_cycle, foot, forward_cycle, head, trunk -- each with score_number, measured_value, range_good, range_okay, and texts with position, search_key, title, recap, exercice, plus consequences, correction, and coach_tips inlined next to recap), running_styles (array of detected styles; objects may include animal, animal_explanation, title, summary, explanation, percentage; title is the unique identifier and is always one of Hop, Bounce, Push, Stick, Sit; asset URLs are omitted), and total_score.

Back view includes: analysis_content (knee_adduction, pelvic_drop, pronation -- each with left/right containing range_bad, range_good, range_okay, score_number, measured_value, and texts with explanation, position, recap, search_key, side, title where applicable, plus consequences and correction inlined next to recap), and total_score. For back view, the explanation field is currently not available for pelvic_drop.

measured_value, range_good, range_okay, and range_bad are always expressed in degrees. Range boundaries may overlap because scoring uses implicit inclusion/exclusion rules. For example, with range_good: [0, 102] and range_okay: [102, 111], values up to 102 are considered good, and values strictly greater than 102 are considered okay.

For both views, consequences and correction come from segmented_explanation flattened into texts; the nested segmented_explanation key is never returned. Those two fields may be an empty string, a string, or an array of strings depending on the metric and result.

For side view, total_score is not a simple average of the individual score_number values. It is based on a weighted calculation.