Use a current public model ID from Models or
GET /models. Example IDs and options must match the selected model’s advertised capabilities and limits.Choose a video model
Open API Models, choose the Video input filter and open a model. Its Video input section shows the current limits. These settings vary by model; a model that accepts images may not accept video. You can also checkGET /models or GET /models/{model}. A supported model has capabilities.video: true and a video_inputobject containing max_duration_seconds, max_file_size_mb and allowed_formats. Unsupported models return video_input: null.
Send a video
In a user message, makecontent an array with a text part and a video_url part. Send at most one video across the entire request, including conversation history. This example uses MP4 on a model that accepts that format.
Direct URLs and inline data
A URL must be a publicly accessible HTTPS link to the video file itself. Watch pages, embedded players, private hosts and URLs requiring redirects are not supported. The file must be readable without a login or custom request headers. Alternatively, send the video as a base64 data URL with its matching media type:video/quicktime, for WebM use video/webm, and for MPEG use video/mpeg. The model’s allowed formats still apply. Replace the example’s shortened base64 with the complete file; base64 increases the JSON request size.
Duration, size and billing
The actual file size, format and duration are checked before generation. Changing the filename, media type or a claimed duration does not bypass the model’s limits. Shorten or compress a clip that exceeds the values shown in its model details. Video contributes to the model’s input token usage. Reported usage determines billing; when exact usage is unavailable, the API uses an estimate markedtokens_estimated in the usage record. Streaming and reasoning options continue to work as documented for the model.
Video is processed only for the request and is not retained in your billing or analytics records. See Privacy.