Skip to content
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation

Create a video edit

POST/videos/edits

Create a new video generation job by editing a source video or existing generated video.

Body ParametersJSONExpand Collapse
prompt: string

Text prompt that describes how to edit the source video.

minLength1
maxLength32000
video: object { id }

Reference to the completed video to edit.

id: string

The identifier of the completed video.

ReturnsExpand Collapse
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 or null

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

formatunixtime
created_at: number

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

formatunixtime
error: VideoCreateError { code, message, misalignment } or null

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.

misalignment: optional object { detailed_explanation, error_type, steer }
detailed_explanation: optional string

The 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.

One of the following:
string
SafetyAlertErrorType = "potentially_unintended_data_transfer" or "potentially_unintended_data_access" or "potentially_unintended_destructive_activity" or "other"

An optional classification; clients must accept additional values.

One of the following:
"potentially_unintended_data_transfer"
"potentially_unintended_data_access"
"potentially_unintended_destructive_activity"
"other"
steer: optional object { message }

An optional public continuation instruction.

message: string

The public continuation instruction.

expires_at: number or null

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

formatunixtime
model: VideoModel

The video generation model that produced the job.

One of the following:
string
"sora-2" or "sora-2-pro" or "sora-2-2025-10-06" or 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"
object: "video"

The object type, which is always video.

progress: number

Approximate completion percentage for the generation task.

prompt: string or null

The prompt that was used to generate the video.

remixed_from_video_id: string or null

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

seconds: string

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

size: VideoSize

The resolution of the generated video.

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

Current lifecycle status of the video job.

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

Create a video edit

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"
          }
        }'
{
  "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"
}
Returns Examples
{
  "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"
}