Generate videos from text prompts. Describe what you want to see and the model creates a video matching your description.
Google's Veo models generate high-quality videos with optional audio.
Model Description google/veo-3.1-generate-001Latest model with audio generation google/veo-3.1-fast-generate-001Fast generation google/veo-3.0-generate-001Previous generation, 1080p max google/veo-3.0-fast-generate-001Faster generation, lower quality
Parameter Type Required Description promptstringYes Text description of the video to generate aspectRatiostringNo Aspect ratio ('16:9', '9:16'). Defaults to '16:9' duration4 | 6 | 8No Video length in seconds. Defaults to 8 resolutionstringNo Resolution ('720p', '1080p'). Defaults to '720p' providerOptions.vertex.generateAudiobooleanNo Generate audio alongside the video. Required for Veo 3 models providerOptions.vertex.enhancePromptbooleanNo Use Gemini to enhance prompts. Defaults to true providerOptions.vertex.negativePromptstringNo What to discourage in the generated video providerOptions.vertex.personGeneration'dont_allow' | 'allow_adult' | 'allow_all'No Whether to allow person generation. Defaults to 'allow_adult' providerOptions.vertex.compressionQuality'optimized' | 'lossless'No Compression quality. Defaults to 'optimized' providerOptions.vertex.sampleCountnumberNo Number of output videos (1-4) providerOptions.vertex.seednumberNo Seed for deterministic generation (0-4,294,967,295) providerOptions.vertex.gcsOutputDirectorystringNo Cloud Storage URI to store the generated videos providerOptions.vertex.referenceImagesarrayNo Reference images for style or asset guidance providerOptions.vertex.pollIntervalMsnumberNo How often to check task status. Defaults to 5000 providerOptions.vertex.pollTimeoutMsnumberNo Maximum wait time. Defaults to 600000 (10 minutes)
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'google/veo-3.1-generate-001' ,
prompt : 'A pangolin curled on a mossy stone in a glowing bioluminescent forest' ,
aspectRatio : '16:9' ,
resolution : '1920x1080' ,
providerOptions : {
vertex : {
generateAudio : true ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
KlingAI offers text-to-video with standard and professional quality modes. Audio generation requires v2.6+ models. Duration is 5-10 seconds.
Model Description klingai/kling-v3.0-t2vMulti-shot generation, 15s clips, enhanced consistency klingai/kling-v2.6-t2vAudio-visual co-generation, cinematic motion klingai/kling-v2.5-turbo-t2vFaster generation, lower cost
Parameter Type Required Description promptstringYes Text description of the video to generate. Max 2500 characters. aspectRatiostringNo Aspect ratio ('16:9', '9:16', '1:1'). Defaults to '16:9'. durationnumberNo Video length in seconds. 5 or 10 for v2.x, 3-15 for v3.0. Defaults to 5. providerOptions.klingai.mode'std' | 'pro'No 'std' for standard quality. 'pro' for professional quality. Defaults to 'std'.providerOptions.klingai.negativePromptstringNo What to avoid in the video. Max 2500 characters. providerOptions.klingai.sound'on' | 'off'No Generate audio. Defaults to 'off'. Requires v2.6+. providerOptions.klingai.cfgScalenumberNo Prompt adherence (0-1). Higher = stricter. Defaults to 0.5. Not supported on v2.x. providerOptions.klingai.voiceListarrayNo Voice IDs for speech. Max 2 voices. Requires v3.0+ with sound: 'on'. providerOptions.klingai.multiShotbooleanNo Enable multi-shot generation. Requires v3.0+. See KlingAI multi-shot . providerOptions.klingai.watermarkInfoobjectNo Set { enabled: true } to generate watermarked result. providerOptions.klingai.pollIntervalMsnumberNo How often to check task status. Defaults to 5000. providerOptions.klingai.pollTimeoutMsnumberNo Maximum wait time. Defaults to 600000 (10 minutes).
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'klingai/kling-v2.6-t2v' ,
prompt : 'A chicken flying into the sunset in the style of 90s anime' ,
aspectRatio : '16:9' ,
duration : 5 ,
providerOptions : {
klingai : {
mode : 'std' ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
Control camera movement during video generation.
Parameter Type Required Description providerOptions.klingai.cameraControl.typestringYes Camera movement type. See options below. providerOptions.klingai.cameraControl.configobjectNo Movement configuration. Required when type is 'simple'.
Camera movement types:
Type Description Config required 'simple'Basic movement with one axis Yes 'down_back'Camera descends and moves backward No 'forward_up'Camera moves forward and tilts up No 'right_turn_forward'Rotate right then move forward No 'left_turn_forward'Rotate left then move forward No
Simple camera config options (use only one, set others to 0):
Config Range Description horizontal[-10, 10] Camera translation along x-axis. Negative = left. vertical[-10, 10] Camera translation along y-axis. Negative = down. pan[-10, 10] Camera rotation around y-axis. Negative = left. tilt[-10, 10] Camera rotation around x-axis. Negative = down. roll[-10, 10] Camera rotation around z-axis. Negative = counter-clockwise. zoom[-10, 10] Focal length change. Negative = narrower FOV.
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'klingai/kling-v2.6-t2v' ,
prompt : 'A serene mountain landscape at sunset' ,
aspectRatio : '16:9' ,
providerOptions : {
klingai : {
mode : 'std' ,
cameraControl : {
type : 'simple' ,
config : {
zoom : 5 ,
horizontal : 0 ,
vertical : 0 ,
pan : 0 ,
tilt : 0 ,
roll : 0 ,
} ,
} ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
Generate videos with multiple storyboard shots, each with its own prompt and duration. Requires Kling v3.0+ models.
Parameter Type Required Description providerOptions.klingai.multiShotbooleanYes Set to true to enable multi-shot generation providerOptions.klingai.shotTypestringNo Set to 'customize' for custom shot durations providerOptions.klingai.multiPromptarrayYes Array of shot configurations providerOptions.klingai.multiPrompt[].indexnumberYes Shot order (starting from 1) providerOptions.klingai.multiPrompt[].promptstringYes Text description for this shot providerOptions.klingai.multiPrompt[].durationstringYes Duration in seconds for this shot
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'klingai/kling-v3.0-t2v' ,
prompt : '' ,
aspectRatio : '16:9' ,
duration : 10 ,
providerOptions : {
klingai : {
mode : 'pro' ,
multiShot : true ,
shotType : 'customize' ,
multiPrompt : [
{
index : 1 ,
prompt : 'A sunrise over a calm ocean, warm golden light.' ,
duration : '4' ,
} ,
{
index : 2 ,
prompt : 'A flock of seagulls take flight from the beach.' ,
duration : '3' ,
} ,
{
index : 3 ,
prompt : 'Waves crash against rocky cliffs at sunset.' ,
duration : '3' ,
} ,
] ,
sound : 'on' ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
Wan (by Alibaba) offers text-to-video with native audio generation and prompt enhancement. Use resolution parameter (e.g., '1280x720'), not aspectRatio.
Model Description alibaba/wan-v2.6-t2vLatest model with native audio alibaba/wan-v2.5-t2v-previewPreview model
Parameter Type Required Description promptstringYes Text description of the video to generate resolutionstringNo v2.6: '1280x720' or '1920x1080'. v2.5: also supports '848x480' durationnumberNo v2.6: 2-15s. v2.5: 5s or 10s only. Defaults to 5 providerOptions.alibaba.promptExtendbooleanNo Enhance prompt for better quality. Defaults to true providerOptions.alibaba.negativePromptstringNo What to avoid in the video. Max 500 characters providerOptions.alibaba.audioUrlstringNo URL to audio file for audio-video sync (WAV/MP3, 3-30s, max 15MB). v2.5 only providerOptions.alibaba.shotType'single' | 'multi'No 'multi' enables multi-shot cinematic narrative. v2.6 onlyproviderOptions.alibaba.watermarkbooleanNo Add watermark to the video. Defaults to false providerOptions.alibaba.pollIntervalMsnumberNo How often to check task status. Defaults to 5000 providerOptions.alibaba.pollTimeoutMsnumberNo Maximum wait time. Defaults to 600000 (10 minutes)
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'alibaba/wan-v2.6-t2v' ,
prompt : 'A chicken flying into the sunset in the style of 90s anime' ,
resolution : '1280x720' ,
duration : 5 ,
providerOptions : {
alibaba : {
promptExtend : true ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
Grok Imagine Video (by xAI) generates videos from text prompts with support for multiple aspect ratios and resolutions. Duration ranges from 1-15 seconds.
Model Duration Aspect Ratios Resolution xai/grok-imagine-video1-15s 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 480p, 720p
Parameter Type Required Description promptstringYes Text description of the video to generate aspectRatiostringNo Aspect ratio ('16:9', '9:16', '1:1', '4:3', '3:4', '3:2', '2:3'). Defaults to '16:9' durationnumberNo Video length in seconds (1-15) resolutionstringNo Resolution ('854x480' for 480p, '1280x720' for 720p). Defaults to 480p providerOptions.xai.resolution'480p' | '720p'No Native resolution format. Alternative to standard resolution parameter providerOptions.xai.pollIntervalMsnumberNo How often to check task status. Defaults to 5000 providerOptions.xai.pollTimeoutMsnumberNo Maximum wait time. Defaults to 600000 (10 minutes)
import { experimental_generateVideo as generateVideo } from 'ai' ;
import fs from 'node:fs' ;
const result = await generateVideo ({
model : 'xai/grok-imagine-video' ,
prompt : 'A chicken flying into the sunset in the style of 90s anime' ,
aspectRatio : '16:9' ,
duration : 5 ,
providerOptions : {
xai : {
pollTimeoutMs : 600000 ,
} ,
} ,
});
fs .writeFileSync ( 'output.mp4' , result .videos[ 0 ].uint8Array);
Video generation can take several minutes. Set pollTimeoutMs to at least 10
minutes (600000ms) for reliable operation. Generated video URLs are ephemeral
and should be downloaded promptly.