Skip to content
Primary navigation

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

Video videos().edit(VideoEditParamsparams, RequestOptionsrequestOptions = RequestOptions.none())
POST/videos/edits

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

ParametersExpand Collapse
VideoEditParams params
String prompt

Text prompt that describes how to edit the source video.

maxLength32000
minLength1
Video video

Reference to the completed video to edit.

String
class VideoReferenceInputParam:

Reference to the completed video.

String id

The identifier of the completed video.

ReturnsExpand Collapse
class Video:

Structured information describing a generated video job.

String id

Unique identifier for the video job.

Optional<Long> completedAt

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

long createdAt

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

Optional<VideoCreateError> error

Error payload that explains why generation failed, if applicable.

String code

A machine-readable error code that was returned.

String message

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

Optional<Long> expiresAt

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

VideoModel model

The video generation model that produced the job.

One of the following:
SORA_2("sora-2")
SORA_2_PRO("sora-2-pro")
SORA_2_2025_10_06("sora-2-2025-10-06")
SORA_2_PRO_2025_10_06("sora-2-pro-2025-10-06")
SORA_2_2025_12_08("sora-2-2025-12-08")
JsonValue; object_ "video"constant"video"constant

The object type, which is always video.

long progress

Approximate completion percentage for the generation task.

Optional<String> prompt

The prompt that was used to generate the video.

Optional<String> remixedFromVideoId

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

VideoSeconds seconds

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

One of the following:
_4("4")
_8("8")
_12("12")

The resolution of the generated video.

One of the following:
_720X1280("720x1280")
_1280X720("1280x720")
_1024X1792("1024x1792")
_1792X1024("1792x1024")
Status status

Current lifecycle status of the video job.

One of the following:
QUEUED("queued")
IN_PROGRESS("in_progress")
COMPLETED("completed")
FAILED("failed")

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

package com.openai.example;

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.videos.Video;
import com.openai.models.videos.VideoEditParams;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.fromEnv();

        VideoEditParams params = VideoEditParams.builder()
            .prompt("x")
            .video(ByteArrayInputStream("Example data".getBytes()))
            .build();
        Video video = client.videos().edit(params);
    }
}
{
  "id": "id",
  "completed_at": 0,
  "created_at": 0,
  "error": {
    "code": "code",
    "message": "message"
  },
  "expires_at": 0,
  "model": "string",
  "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"
  },
  "expires_at": 0,
  "model": "string",
  "object": "video",
  "progress": 0,
  "prompt": "prompt",
  "remixed_from_video_id": "remixed_from_video_id",
  "seconds": "string",
  "size": "720x1280",
  "status": "queued"
}