Videos
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending
.mdto the page URL.
Create video
post /videos
Create a new video generation job from a prompt and optional reference assets.
Body Parameters
prompt: stringText prompt that describes the video to generate.
input_reference: optional ImageInputReferenceParamOptional reference object that guides generation. Provide exactly one of
image_urlorfile_id.file_id: optional stringimage_url: optional stringA fully qualified URL or base64-encoded data URL.
model: optional VideoModelThe video generation model to use (allowed values: sora-2, sora-2-pro). Defaults to
sora-2.string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"sora-2""sora-2-pro""sora-2-2025-10-06""sora-2-pro-2025-10-06""sora-2-2025-12-08"
seconds: optional VideoSecondsClip duration in seconds (allowed values: 4, 8, 12). Defaults to 4 seconds.
"4""8""12"
size: optional VideoSizeOutput resolution formatted as width x height (allowed values: 720x1280, 1280x720, 1024x1792, 1792x1024). Defaults to 720x1280.
"720x1280""1280x720""1024x1792""1792x1024"
Returns
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
Example
curl https://api.openai.com/v1/videos \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "x"
}'Response
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}Example
curl https://api.openai.com/v1/videos \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=sora-2" \
-F "prompt=A calico cat playing a piano on stage"Response
{
"id": "video_123",
"object": "video",
"model": "sora-2",
"status": "queued",
"progress": 0,
"created_at": 1712697600,
"size": "1024x1792",
"seconds": "8",
"quality": "standard"
}Create a character from an uploaded video.
post /videos/characters
Create a character from an uploaded video.
Returns
id: string or nullIdentifier for the character creation cameo.
created_at: numberUnix timestamp (in seconds) when the character was created.
name: string or nullDisplay name for the character.
Example
curl https://api.openai.com/v1/videos/characters \
-H 'Content-Type: multipart/form-data' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F name=x \
-F 'video=@/path/to/video'Response
{
"id": "id",
"created_at": 0,
"name": "name"
}Delete video
delete /videos/\{video_id\}
Permanently delete a completed or failed video and its stored assets.
Path Parameters
video_id: string
Returns
id: stringIdentifier of the deleted video.
deleted: booleanIndicates that the video resource was deleted.
object: "video.deleted"The object type that signals the deletion response.
"video.deleted"
Example
curl https://api.openai.com/v1/videos/$VIDEO_ID \
-X DELETE \
-H "Authorization: Bearer $OPENAI_API_KEY"Response
{
"id": "id",
"deleted": true,
"object": "video.deleted"
}Retrieve video content
get /videos/\{video_id\}/content
Download the generated video bytes or a derived preview asset.
Streams the rendered video content for the specified video job.
Path Parameters
video_id: string
Query Parameters
variant: optional "video" or "thumbnail" or "spritesheet"Which downloadable asset to return. Defaults to the MP4 video.
"video""thumbnail""spritesheet"
Example
curl https://api.openai.com/v1/videos/$VIDEO_ID/content \
-H "Authorization: Bearer $OPENAI_API_KEY"Create a new video generation job by editing a source video or existing generated video.
post /videos/edits
Create a new video generation job by editing a source video or existing generated video.
Body Parameters
prompt: stringText prompt that describes how to edit the source video.
video: object \{ id \}Reference to the completed video to edit.
id: stringThe identifier of the completed video.
Returns
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
Example
curl https://api.openai.com/v1/videos/edits \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "x",
"video": {
"id": "video_123"
}
}'Response
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}Create an extension of a completed video.
post /videos/extensions
Create an extension of a completed video.
Body Parameters
prompt: stringUpdated text prompt that directs the extension generation.
seconds: VideoSecondsLength of the newly generated extension segment in seconds (allowed values: 4, 8, 12, 16, 20).
"4""8""12"
video: object \{ id \}Reference to the completed video to extend.
id: stringThe identifier of the completed video.
Returns
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
Example
curl https://api.openai.com/v1/videos/extensions \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "x",
"seconds": "4",
"video": {
"id": "video_123"
}
}'Response
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}Fetch a character.
get /videos/characters/\{character_id\}
Fetch a character.
Path Parameters
character_id: string
Returns
id: string or nullIdentifier for the character creation cameo.
created_at: numberUnix timestamp (in seconds) when the character was created.
name: string or nullDisplay name for the character.
Example
curl https://api.openai.com/v1/videos/characters/$CHARACTER_ID \
-H "Authorization: Bearer $OPENAI_API_KEY"Response
{
"id": "id",
"created_at": 0,
"name": "name"
}List videos
get /videos
List recently generated videos for the current project.
Query Parameters
after: optional stringIdentifier for the last item from the previous pagination request
limit: optional numberNumber of items to retrieve
order: optional "asc" or "desc"Sort order of results by timestamp. Use
ascfor ascending order ordescfor descending order."asc""desc"
Returns
data: array of VideoA list of items
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
first_id: string or nullThe ID of the first item in the list.
has_more: booleanWhether there are more items available.
last_id: string or nullThe ID of the last item in the list.
object: "list"The type of object returned, must be
list."list"
Example
curl https://api.openai.com/v1/videos \
-H "Authorization: Bearer $OPENAI_API_KEY"Response
{
"data": [
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}
],
"first_id": "first_id",
"has_more": true,
"last_id": "last_id",
"object": "list"
}Example
curl https://api.openai.com/v1/videos \
-H "Authorization: Bearer $OPENAI_API_KEY"Response
{
"data": [
{
"id": "video_123",
"object": "video",
"model": "sora-2",
"status": "completed"
}
],
"object": "list"
}Remix video
post /videos/\{video_id\}/remix
Create a remix of a completed video using a refreshed prompt.
Path Parameters
video_id: string
Body Parameters
prompt: stringUpdated text prompt that directs the remix generation.
Returns
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
Example
curl https://api.openai.com/v1/videos/$VIDEO_ID/remix \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"prompt": "x"
}'Response
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}Example
curl -X POST https://api.openai.com/v1/videos/video_123/remix \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Extend the scene with the cat taking a bow to the cheering audience"
}'Response
{
"id": "video_456",
"object": "video",
"model": "sora-2",
"status": "queued",
"progress": 0,
"created_at": 1712698600,
"size": "720x1280",
"seconds": "8",
"remixed_from_video_id": "video_123"
}Retrieve video
get /videos/\{video_id\}
Fetch the latest metadata for a generated video.
Path Parameters
video_id: string
Returns
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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"
Example
curl https://api.openai.com/v1/videos/$VIDEO_ID \
-H "Authorization: Bearer $OPENAI_API_KEY"Response
{
"id": "id",
"completed_at": 0,
"created_at": 0,
"error": {
"code": "code",
"message": "message",
"misalignment": {
"detailed_explanation": "detailed_explanation",
"error_type": "potentially_unintended_data_transfer",
"steer": {
"message": "message"
}
}
},
"expires_at": 0,
"model": "sora-2",
"object": "video",
"progress": 0,
"prompt": "prompt",
"remixed_from_video_id": "remixed_from_video_id",
"seconds": "string",
"size": "720x1280",
"status": "queued"
}Domain Types
Image Input Reference Param
ImageInputReferenceParam object \{ file_id, image_url \}file_id: optional stringimage_url: optional stringA fully qualified URL or base64-encoded data URL.
Video
Video object \{ id, completed_at, created_at, 10 more \}Structured information describing a generated video job.
id: stringUnique identifier for the video job.
completed_at: number or nullUnix timestamp (seconds) for when the job completed, if finished.
created_at: numberUnix timestamp (seconds) for when the job was created.
error: VideoCreateError or nullError payload that explains why generation failed, if applicable.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
expires_at: number or nullUnix timestamp (seconds) for when the downloadable assets expire, if set.
model: VideoModelThe video generation model that produced the job.
string"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"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."video"
progress: numberApproximate completion percentage for the generation task.
prompt: string or nullThe prompt that was used to generate the video.
remixed_from_video_id: string or nullIdentifier of the source video if this video is a remix.
seconds: stringDuration of the generated clip in seconds. For extensions, this is the stitched total duration.
size: VideoSizeThe 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 Character Response
VideoCreateCharacterResponse object \{ id, created_at, name \}id: string or nullIdentifier for the character creation cameo.
created_at: numberUnix timestamp (in seconds) when the character was created.
name: string or nullDisplay name for the character.
Video Create Error
VideoCreateError object \{ code, message, misalignment \}An error that occurred while generating the response.
code: stringA machine-readable error code that was returned.
message: stringA human-readable description of the error that was returned.
misalignment: optional object \{ detailed_explanation, error_type, steer \}detailed_explanation: optional stringThe public explanation for this block.
error_type: optional string or "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
stringSafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"An optional classification; clients must accept additional values.
"potentially_unintended_data_transfer""potentially_unintended_data_access""potentially_unintended_destructive_activity""other"
steer: optional object \{ message \}An optional public continuation instruction.
message: stringThe public continuation instruction.
Video Delete Response
VideoDeleteResponse object \{ id, deleted, object \}Confirmation payload returned after deleting a video.
id: stringIdentifier of the deleted video.
deleted: booleanIndicates that the video resource was deleted.
object: "video.deleted"The object type that signals the deletion response.
"video.deleted"
Video Get Character Response
VideoGetCharacterResponse object \{ id, created_at, name \}id: string or nullIdentifier for the character creation cameo.
created_at: numberUnix timestamp (in seconds) when the character was created.
name: string or nullDisplay name for the character.
Video Model
VideoModel = string or "sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 morestring"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 2 more"sora-2""sora-2-pro""sora-2-2025-10-06""sora-2-pro-2025-10-06""sora-2-2025-12-08"
Video Seconds
VideoSeconds = "4" or "8" or "12""4""8""12"
Video Size
VideoSize = "720x1280" or "1280x720" or "1024x1792" or "1792x1024""720x1280""1280x720""1024x1792""1792x1024"