---
title: "Get Video Details"
method: GET
path: "/v2/videos/{video_id}"
tags: ["Video Emotion API"]
---

# Get Video Details

`GET /v2/videos/{video_id}`

Retrieve all details for a specific video directly from the database.

Returns a complete standardized response with all possible fields.
Fields that don't exist in the database are returned as null.

**Access Control:**
- Authenticated users can access their own videos
- Admins can access all videos
- Sample videos and shared videos are publicly accessible

## Path parameters

- `video_id` string, required — The unique ID of the video.

## Response `200`

Successful Response

- VideoDetailResponseV2 — Complete V2 response model for video details with all possible fields. Returns null for fields that don't exist in the database, except diarization/text_emotion/transcription, which default to true when absent (enabled-by-default speech stages, matching the upload contract). Fields are ordered alphabetically.
  - `annotated_video` string, nullable — Annotated video URL
  - `annotated_video_mp4` string, nullable — Annotated video MP4 URL
  - `annotated_video_percentage` string, nullable — Annotated video progress
  - `annotated_video_status` string, nullable — Annotated video status
  - `audio_csv_url` string, nullable — Audio-specific CSV analysis URL
  - `audio_id` string, nullable — Associated audio analysis ID
  - `audio_transcription` string, nullable — Audio transcription text
  - `bulk_upload_id` string, nullable — Bulk upload batch ID
  - `check_audio` boolean, nullable — Whether audio should be checked
  - `completed_at` string, nullable — Completion timestamp
  - `compressed_frames_data_url` string, nullable — Compressed frames data URL
  - `compressed_frames_last_updated_at` string, nullable — Compressed frames last update timestamp
  - `compressed_frames_schema_version` string, nullable — Schema version for compressed frames
  - `created_at` string, nullable — Creation timestamp
  - `csv_analysis_url` string, nullable — CSV analysis file URL
  - `csv_status` string, nullable — CSV generation status
  - `description` string, nullable — Video description
  - `dropbox_url` string, nullable — Dropbox URL if applicable
  - `duration` number, nullable — Video duration in seconds
  - `emotions_list` string[], nullable — List of emotion labels
  - `end_millis` number, nullable — End time in milliseconds
  - `face_deletion_status` string, nullable — Face deletion status
  - `face_duplicate_count` integer, nullable — Count of duplicate faces detected
  - `face_emotions` object, nullable — Face emotions per face ID
  - `faces` object[], nullable — Detected faces with emotions
  - `fps` number, nullable — Frames per second
  - `frame_upload_progress` integer, nullable — Frame upload progress percentage
  - `frame_upload_status` string, nullable — Frame upload status
  - `frames_with_faces_count` integer, nullable — Frames with detected faces
  - `height` number, nullable — Video height in pixels
  - `highlight_segments` object[], nullable — Highlight video segments
  - `highlight_status` string, nullable — Highlight video status
  - `highlight_url` string, nullable — Highlight video URL
  - `id` string, nullable — Unique video identifier
  - `is_user` boolean, nullable — Whether uploaded by user
  - `media_source` string, nullable — Source type: youtube, dropbox, public_url, file_upload
  - `media_source_url` string, nullable — Original URL as provided
  - `message` string, nullable — Status message
  - `model_id` string, nullable — Model used for processing
  - `orientation` string, nullable — Video orientation (PORTRAIT/LANDSCAPE)
  - `overall_emotions` object, nullable — Overall emotion scores for video
  - `pdf_generation_timestamp` string, nullable — PDF generation timestamp
  - `pdf_status` string, nullable — PDF report status
  - `pdf_url` string, nullable — PDF report URL
  - `predefined_qa` object[], nullable — Predefined Q&A data
  - `personality_data` object[], nullable — Personality analysis data
  - `personality_processing` string, nullable — Personality processing progress
  - `personality_status` string, nullable — Personality analysis status
  - `process_status` union — Processing progress
    - number
    - object
  - `processed_seconds` number, nullable — Processing time in seconds
  - `processing_fps` integer, nullable — Reduced processing frame-rate tier (15/10/5/1), or null for full/native fps
  - `project_id` string, nullable — Associated project ID
  - `project_type` string, nullable — Type of the associated project (recruitment/product_testing/...), null for library videos
  - `psychologist_review` string, nullable — Psychologist review content
  - `psychologist_review_status` string, nullable — Psychologist review status
  - `share_status` boolean, nullable — Whether video is shared
  - `diarization` boolean, nullable — Whether diarization was enabled at upload time (defaults to true if absent from the stored document)
  - `has_transcript` boolean, nullable — Whether a transcript exists (or is being produced): our ASR ran, OR one was supplied and applied. Drive the transcript UI off THIS, not `transcription` — an imported call has transcription=false and a real transcript, so that flag hides one that is right there.
  - `speech_status` union — Speech transcription status
    - string
    - boolean
  - `start_millis` number, nullable — Start time in milliseconds
  - `text_emotion` boolean, nullable — Whether text emotion analysis was enabled at upload time (defaults to true if absent from the stored document)
  - `transcription` boolean, nullable — Whether transcription/ASR was enabled at upload time (defaults to true if absent from the stored document)
  - `status` string, nullable — Processing status
  - `summary` union — Video summary or summary object
    - string
    - object
  - `tags` union[], nullable — Generalized media tags (demographic, survey, label, system). Discriminated union over value_type — see /v2/tag-keys for dimension metadata.
    - union
      - StringTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'string', required
        - `value_text` string, required
      - EnumTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'enum', required
        - `value_text` string, required
      - IntegerTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'integer', required
        - `value_int` integer, required
      - BoolTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'boolean', required
        - `value_bool` boolean, required
      - DateTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'date', required
        - `value_date` string, date-time, required
      - GeoTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'location_admin', required
        - `value_geo` GeoValue, required — Administrative-level location. lat/lng intentionally omitted in v1.
          - `country` string, nullable
          - `state` string, nullable
          - `city` string, nullable
      - SetTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'set', required
        - `value_text` string, required
      - NoneTag
        - `id` string, required
        - `key` string, required
        - `source` string, required
        - `created_at` string, date-time, required
        - `created_by` string, nullable
        - `value_type` 'none', required
  - `tags_map` object, nullable — Legacy tags_map (sample flag only). No new keys here — use the `tags` field instead.
  - `text_id` string, nullable — Associated text analysis ID
  - `thumbnail` string, nullable — Thumbnail image URL
  - `title` string, nullable — Video title
  - `total_frames_count` integer, nullable — Total frames count
  - `ui_request` boolean, nullable — Whether request came from UI
  - `url` string, nullable — Original video URL
  - `user_id` string, nullable — Owner user ID
  - `video_csv_url` string, nullable — Video-specific CSV analysis URL
  - `width` number, nullable — Video width in pixels
  - `youtube_url` string, nullable — YouTube URL if applicable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/imentiv/apis/welcome-to-imentiv-ai.md) · [All operations](https://skmtc.net/imentiv/apis/welcome-to-imentiv-ai/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/imentiv/welcome-to-imentiv-ai/revisions/74ceee4a5c98/schema)
