Video Analysis

Upload a video and receive **two analyses in parallel**: 1. **Video Analysis** — scores (likeability, authenticity, clarity, confidence), strengths, areas for improvement, time-series scores, labeled moments, and detailed feedback. 2. **Biometric Analysis** — triage classification, emotion detection, governance (action flags, recommended actions), and a scientific interpretation narrative. --- ### Response behavior This endpoint has two response paths depending on how long the pipeline takes: **`200 OK` — synchronous result** The full analysis is returned immediately in the response body. Typical for short videos where the pipeline completes within the synchronous window. **`202 Accepted` — asynchronous result** The pipeline is still running. The response body contains a `pollingUrl` and `sessionId`. Poll `GET /api/v1/full-analysis/{sessionId}` until `status == "complete"`, then read `result`. > **Expect `202` in production.** Most real-world videos take longer than the synchronous > window. Always implement polling — do not assume a `200` will be returned. #### Polling flow ``` POST /api/v1/full-analysis → 202 { sessionId, pollingUrl } loop: GET /api/v1/full-analysis/{sessionId} → { status: "processing", progress: { phase, kpnPackagesSent, ... } } wait 3–5 seconds until status == "complete": → { status: "complete", result: { video_analysis, biometric_analysis, transcript } } ```

Authentication

AuthorizationBearer

Your API key (e.g. ng_xxx…). The Try it and generated code send it as Authorization: Bearer <key>. Alternatively use the X-API-Key header with the raw key.

Request

This endpoint expects a multipart form containing a file.
sessionIdstringOptional
Optional session identifier
videofileRequired

Video file to analyze (MP4, WebM, MOV, AVI, MKV)

transcriptstringOptional

Optional session transcript. If empty or omitted, the API auto-generates one using Deepgram speech-to-text.

contextPhrasestringOptionalDefaults to professional communication coaching session

Scenario description for contextual profiling (e.g. “job interview practice”, “sales pitch rehearsal”).

mediapipeSamplesstringOptional
Optional JSON array of MediaPipe face landmark samples

Response

Combined analysis result from AI and engine
sessionIdstring
The session identifier echoed back.
video_analysisobject
Full AI video analysis.
engine_analysisobject or null
Biometric analysis. Null if engine is not configured or the pipeline fails.
engine_kpisobject or null
The 5 biometric KPIs derived from the transcript and sent to engine.
transcriptstring or null

Transcript used (user-provided or Deepgram-generated).

videoUrlstring or null

Pre-signed S3 URL to view the uploaded video (expires in 1 hour).

Errors

401
Unauthorized Error
422
Unprocessable Entity Error
500
Internal Server Error