Skip to content
Primary navigation

Videos

Create video
$ openai videos create
POST/videos
Create an extension of a completed video.
$ openai videos extend
POST/videos/extensions
Create a character from an uploaded video.
$ openai videos create-character
POST/videos/characters
Fetch a character.
$ openai videos get-character
GET/videos/characters/{character_id}
List videos
$ openai videos list
GET/videos
Retrieve video
$ openai videos retrieve
GET/videos/{video_id}
Delete video
$ openai videos delete
DELETE/videos/{video_id}
Remix video
$ openai videos remix
POST/videos/{video_id}/remix
Retrieve video content
$ openai videos download-content
GET/videos/{video_id}/content
ModelsExpand Collapse
image_input_reference_param: object { file_id, image_url }
file_id: optional string
image_url: optional string

A fully qualified URL or base64-encoded data URL.

video: object { id, completed_at, created_at, 10 more }

Structured information describing a generated video job.

id: string

Unique identifier for the video job.

completed_at: number

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

created_at: number

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

error: object { code, message }

Error payload that explains why generation failed, if applicable.

code: string

A machine-readable error code that was returned.

message: string

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

expires_at: number

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

model: string or "sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more

The video generation model that produced the job.

"sora-2"
"sora-2-pro"
"sora-2-2025-10-06"
"sora-2-pro-2025-10-06"
"sora-2-2025-12-08"
object: "video"

The object type, which is always video.

progress: number

Approximate completion percentage for the generation task.

prompt: string

The prompt that was used to generate the video.

remixed_from_video_id: string

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

seconds: string or VideoSeconds

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

"4"
"8"
"12"
size: "720x1280" or "1280x720" or "1024x1792" or "1792x1024"

The resolution of the generated video.

"720x1280"
"1280x720"
"1024x1792"
"1792x1024"
status: "queued" or "in_progress" or "completed" or "failed"

Current lifecycle status of the video job.

"queued"
"in_progress"
"completed"
"failed"
video_create_error: object { code, message }

An error that occurred while generating the response.

code: string

A machine-readable error code that was returned.

message: string

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

video_seconds: "4" or "8" or "12"
"4"
"8"
"12"
video_size: "720x1280" or "1280x720" or "1024x1792" or "1792x1024"
"720x1280"
"1280x720"
"1024x1792"
"1792x1024"