Implementation:Elevenlabs Elevenlabs python ProjectVideoResponseModel
| Metadata | Value |
|---|---|
| source | Elevenlabs_Elevenlabs_python |
| domain | Projects, Video, Dubbing |
| last_updated | 2026-02-15 |
Overview
Description: ProjectVideoResponseModel is a Pydantic model that represents a video asset within an ElevenLabs project. It contains comprehensive video metadata including identity (video ID, filename), media properties (width, height, codec, duration), timing information (offset, start/end times), audio processing state (volume, muting, speech import progress, dub audio progress), thumbnail data (interval, size, sheets), URL references (signed URLs for the video and preview), and canvas placement information.
Usage: This model is returned by the ElevenLabs Projects API when working with video assets in dubbing or content projects. It provides all the information needed to display, preview, and manage video content within a project, including tracking the progress of speech import and audio dubbing operations.
Code Reference
Source file: src/elevenlabs/types/project_video_response_model.py
Class signature:
class ProjectVideoResponseModel(UncheckedBaseModel):
...
Import statement:
from elevenlabs.types import ProjectVideoResponseModel
I/O Contract
| Field | Type | Required | Description |
|---|---|---|---|
| video_id | str | Yes | Unique identifier for the video |
| filename | str | Yes | Name of the video file |
| signed_url | Optional[str] | No | Signed URL for accessing the video |
| signed_preview_url | Optional[str] | No | Signed URL for accessing the video preview |
| offset_ms | int | Yes | Offset of the video in milliseconds |
| duration_ms | int | Yes | Duration of the video in milliseconds |
| volume_gain_db | float | Yes | Volume gain in decibels |
| muted | bool | Yes | Whether the video audio is muted |
| width | int | Yes | Video width in pixels |
| height | int | Yes | Video height in pixels |
| codec | str | Yes | Video codec used |
| order | str | Yes | Ordering key for the video in the project |
| preview_job_progress | float | Yes | Progress of the preview generation job (0.0 to 1.0) |
| created_at_ms | int | Yes | Creation timestamp in milliseconds |
| updated_at_ms | int | Yes | Last update timestamp in milliseconds |
| error | Optional[str] | No | Error message if video processing failed |
| thumbnail_interval_seconds | float | Yes | Interval between thumbnail frames in seconds |
| thumbnail_size | List[int] | Yes | Dimensions of thumbnails [width, height] |
| thumbnail_sheets | List[ProjectVideoThumbnailSheetResponseModel] | Yes | List of thumbnail sheet data |
| start_time_ms | int | Yes | Start time of the video in milliseconds |
| end_time_ms | int | Yes | End time of the video in milliseconds |
| asset_preview_signed_url | Optional[str] | No | Signed URL for the asset preview |
| source_video_id | Optional[str] | No | ID of the source video if derived |
| source_asset_id | Optional[str] | No | ID of the source asset if derived |
| pending_block_ids | List[str] | Yes | List of pending processing block IDs |
| import_speech_progress | Optional[float] | No | Progress of speech import (0.0 to 1.0) |
| speech_imported | Optional[bool] | No | Whether speech has been imported |
| dub_audio_progress | Optional[float] | No | Progress of audio dubbing (0.0 to 1.0) |
| audio_track_ready | Optional[bool] | No | Whether the audio track is ready |
| current_snapshot_id | Optional[str] | No | ID of the current snapshot |
| canvas_placement | Optional[CanvasPlacement] | No | Placement of the video on the canvas |
| track_id | Optional[str] | No | ID of the associated track |
Usage Examples
from elevenlabs.types import ProjectVideoResponseModel
# Working with a video response from the API
video = ProjectVideoResponseModel(
video_id="vid_abc123",
filename="demo_video.mp4",
offset_ms=0,
duration_ms=60000,
volume_gain_db=0.0,
muted=False,
width=1920,
height=1080,
codec="h264",
order="0001",
preview_job_progress=1.0,
created_at_ms=1700000000000,
updated_at_ms=1700000000000,
thumbnail_interval_seconds=5.0,
thumbnail_size=[320, 180],
thumbnail_sheets=[],
start_time_ms=0,
end_time_ms=60000,
pending_block_ids=[],
)
# Check video properties
print(f"Video: {video.filename} ({video.width}x{video.height})")
print(f"Duration: {video.duration_ms / 1000}s")
print(f"Codec: {video.codec}")
# Monitor dubbing progress
if video.dub_audio_progress is not None:
print(f"Dubbing progress: {video.dub_audio_progress * 100}%")