Skip to content

Create video

Video videos().create(VideoCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())
POST/videos

Create a video

ParametersExpand Collapse
VideoCreateParams params
String prompt

Text prompt that describes the video to generate.

maxLength32000
minLength1
Optional<InputStream> inputReference

Optional image reference that guides generation.

Optional<VideoModel> model

The video generation model to use (allowed values: sora-2, sora-2-pro). Defaults to sora-2.

Optional<VideoSeconds> seconds

Clip duration in seconds (allowed values: 4, 8, 12). Defaults to 4 seconds.

Optional<VideoSize> size

Output resolution formatted as width x height (allowed values: 720x1280, 1280x720, 1024x1792, 1792x1024). Defaults to 720x1280.

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.

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

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

The resolution of the generated video.

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

Current lifecycle status of the video job.

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

Create 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.VideoCreateParams;

public final class Main {
    private Main() {}

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

        VideoCreateParams params = VideoCreateParams.builder()
            .prompt("x")
            .build();
        Video video = client.videos().create(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": "4",
  "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": "4",
  "size": "720x1280",
  "status": "queued"
}