Skip to content
Primary navigation

Videos

Create video
videos.create(VideoCreateParams**kwargs) -> Video
POST/videos
Create an extension of a completed video.
videos.extend(VideoExtendParams**kwargs) -> Video
POST/videos/extensions
Create a character from an uploaded video.
videos.create_character(VideoCreateCharacterParams**kwargs) -> VideoCreateCharacterResponse
POST/videos/characters
Fetch a character.
videos.get_character(strcharacter_id) -> VideoGetCharacterResponse
GET/videos/characters/{character_id}
List videos
videos.list(VideoListParams**kwargs) -> SyncConversationCursorPage[Video]
GET/videos
Retrieve video
videos.retrieve(strvideo_id) -> Video
GET/videos/{video_id}
Delete video
videos.delete(strvideo_id) -> VideoDeleteResponse
DELETE/videos/{video_id}
Remix video
videos.remix(strvideo_id, VideoRemixParams**kwargs) -> Video
POST/videos/{video_id}/remix
Retrieve video content
videos.download_content(strvideo_id, VideoDownloadContentParams**kwargs) -> BinaryResponseContent
GET/videos/{video_id}/content
ModelsExpand Collapse
class ImageInputReferenceParam:
file_id: Optional[str]
image_url: Optional[str]

A fully qualified URL or base64-encoded data URL.

maxLength20971520
class Video:

Structured information describing a generated video job.

id: str

Unique identifier for the video job.

completed_at: Optional[int]

Unix timestamp (seconds) for when the job completed, if finished.

created_at: int

Unix timestamp (seconds) for when the job was created.

error: Optional[VideoCreateError]

Error payload that explains why generation failed, if applicable.

expires_at: Optional[int]

Unix timestamp (seconds) for when the downloadable assets expire, if set.

model: VideoModel

The video generation model that produced the job.

object: Literal["video"]

The object type, which is always video.

progress: int

Approximate completion percentage for the generation task.

prompt: Optional[str]

The prompt that was used to generate the video.

remixed_from_video_id: Optional[str]

Identifier of the source video if this video is a remix.

seconds: Union[str, VideoSeconds]

Duration of the generated clip in seconds. For extensions, this is the stitched total duration.

One of the following:
str
Literal["4", "8", "12"]
One of the following:
"4"
"8"
"12"
size: VideoSize

The resolution of the generated video.

status: Literal["queued", "in_progress", "completed", "failed"]

Current lifecycle status of the video job.

One of the following:
"queued"
"in_progress"
"completed"
"failed"
class VideoCreateError:

An error that occurred while generating the response.

code: str

A machine-readable error code that was returned.

message: str

A human-readable description of the error that was returned.

Union[str, Literal["sora-2", "sora-2-pro", "sora-2-2025-10-06", 2 more]]
One of the following:
str
Literal["sora-2", "sora-2-pro", "sora-2-2025-10-06", 2 more]
One of the following:
"sora-2"
"sora-2-pro"
"sora-2-2025-10-06"
"sora-2-pro-2025-10-06"
"sora-2-2025-12-08"
Literal["4", "8", "12"]
One of the following:
"4"
"8"
"12"
Literal["720x1280", "1280x720", "1024x1792", "1792x1024"]
One of the following:
"720x1280"
"1280x720"
"1024x1792"
"1792x1024"