Skip to main content
POST
Create a Flux 3 video from text, reference images, or first and last frames. Store the returned id to poll the task and download the completed video. POST /v1/videos uses multipart/form-data. Send controls as form fields. For image inputs, use reference image URLs or opening and closing frames. Keep input_reference separate from first_frame and last_frame.

Choose an input mode

Use reference images

The input_reference field accepts publicly accessible HTTPS image URLs only. Send it once for a single image, or repeat it in keyframe order for multiple images. Use one URL per field, up to 10 URLs in total. Describe the motion, camera behavior, and visual details that the generated video should preserve from the reference image. The request samples at the top of this page show single-image and multiple-image inputs. The following request uses two images in their submitted order:

Set the first and last frames

Send first_frame to set the opening image. To also set the closing image, include last_frame and describe the motion between the two frames in prompt. For an opening frame alone, omit last_frame. A closing frame requires both first_frame and last_frame. Each field accepts one publicly accessible HTTPS URL or one PNG or JPEG file. Send each field once, using either a URL or a file. Keep each file at or below 20 MiB (20 × 1024 × 1024 bytes). The frame examples at the top of this page show URL inputs and file uploads, with seconds and size set explicitly.

Set duration and size

Set seconds explicitly to an integer from 5 through 20. Set size to one of these exact WxH preset values: The size value selects the output resolution tier. For text-to-video, encoded dimensions can be adjusted for codec alignment. For image-to-video, the reference image can also determine the final framing and aspect ratio.

Task flow

1

Create the task

Send the multipart form request and store the returned id.
2

Poll the task

Call Retrieve a Flux 3 video until status is completed or failed.
3

Download the result

When the task is completed, call Download Flux 3 video content to save the MP4 file.

Authorizations

Authorization
string
header
required

Bearer authentication. Use your CometAPI API key.

Body

multipart/form-data

Flux 3 multipart request. Choose text, input_reference URLs, or first_frame and last_frame inputs. Keep reference-image and frame inputs separate.

model
string
default:flux-3
required

Model ID for this route. Use flux-3.

Allowed value: "flux-3"
prompt
string
default:A paper boat glides across a still pond while the camera moves forward.
required

Text that describes the scene, motion, camera behavior, and visual details that the video should preserve.

Minimum string length: 1
seconds
integer

Requested clip duration in whole seconds. Set seconds explicitly to an integer from 5 through 20.

Required range: 5 <= x <= 20
size
enum<string>
default:1280x720

Resolution preset in exact WxH form. Use 1280x720 for the 720p tier or 1920x1080 for the 1080p tier. Encoded dimensions can be codec-aligned; image-to-video framing can follow the reference image.

Available options:
1280x720,
1920x1080
input_reference

Reference image URLs. Send one publicly accessible HTTPS image URL per input_reference field. For multiple images, repeat the field in keyframe order, up to 10 URLs. This field accepts URLs only. Keep it separate from first_frame and last_frame.

Pattern: ^https://
first_frame

Opening-frame image as one publicly accessible HTTPS URL or one PNG or JPEG file. Keep each file at or below 20 MiB (20 × 1024 × 1024 bytes). Send the field once, using either a URL or a file. Pair with last_frame to set both boundaries. Keep frame inputs separate from input_reference.

Pattern: ^https://
last_frame

Closing-frame image as one publicly accessible HTTPS URL or one PNG or JPEG file. Keep each file at or below 20 MiB (20 × 1024 × 1024 bytes). Send the field once, using either a URL or a file. To specify the closing image through this endpoint, send last_frame together with first_frame. Keep frame inputs separate from input_reference.

Pattern: ^https://

Response

Task created. Store the returned id and poll GET /v1/videos/{task_id}.

id
string
required

Task ID. Use this value as task_id in retrieve and content requests.

Example:

"<task_id>"

object
string
required

Object type for the asynchronous video task.

Allowed value: "video"
model
string
required

Model ID that the task uses.

Allowed value: "flux-3"
status
enum<string>
required

Task lifecycle status. Poll until the value is completed or failed.

Available options:
queued,
in_progress,
completed,
failed
progress
integer
required

Task progress as a coarse percentage.

Required range: 0 <= x <= 100
created_at
integer<int64>
required

Task creation time as a Unix timestamp in seconds.

task_id
string

Compatibility alias for id. This field can be omitted from retrieve responses.

Example:

"<task_id>"

completed_at
integer<int64>

Task completion time as a Unix timestamp in seconds when the task provides one.

expires_at
integer<int64>

Result expiration time as a Unix timestamp in seconds when the task provides one.

video_url
string<uri>

Video delivery URL. This field appears on completed tasks.

Example:

"https://media.example.com/flux-3-result.mp4"

error
object

Failure details. This field appears when the task fails.

Last modified on September 9, 2026