Generate Video
generate_videoSubmit a VIDEO render job — modelId must be a video model (kind=video; e.g. veo-3.1, kling-3.0, ws-pika-2.2). For images use generate_image (NOT this tool — image models like flux-1-schnell/recraft-v3 are not video). Returns { jobId, projectId }. jobId == shotId — poll status via get_job until status='succeeded', then retrieve outputUrl. Always call pick_reference_images first if the user has not supplied a reference image; pass the chosen URL as reference_image_url. For AVATAR / LIP-SYNC models (omnihuman, heygen-photo-avatar, muapi-latentsync): pass the source photo as reference_image_url AND the spoken audio track as audio_url (a public mp3/wav URL) — the avatar's lips track THAT audio instead of provider-generated TTS. For muapi-latentsync, reference_image_url is the source VIDEO url. Per-model knobs (e.g. HeyGen avatarId/voiceId/engine) ride on providerOptions. Pass project_id from create_project to group all shots from a run into one project. Scope required: generate:video.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| modelId | Yes | ||
| audio_url | No | ||
| project_id | No | ||
| shot_index | No | ||
| aspectRatio | No | ||
| durationSec | Yes | ||
| imageModelId | No | ||
| authPreference | No | ||
| imagePromptHint | No | ||
| providerOptions | No | ||
| reference_image_url | No |