---
title: Models
description: How to find, price and run an invideo generation model, and the model ids to use for each job, from video to voice to 3D.
---
invideo runs the leading generation models for video, images, audio and 3D. Your agent finds one, reads its inputs, prices the run, and then runs it:

```json
{
  "url": "https://invideo.io/@acme/launch-reel/notebook/page-2",
  "model": "seedance_2_5.r2v",
  "inputs": { "prompt": "slow push on the bottle" },
  "dry_run": true
}
```

Edits and exports are free. Generation and transcripts cost credits. Paid stock costs a small credit charge, or one of your workspace's iStock licenses. Your agent runs a dry run first and tells you the price before it spends anything. For prices, see [Credits and what they cost](/account/credits).

## Find, price and run a model

Every model goes through the same four steps, on MCP or on the CLI.

<Steps>
<Step title="Find a model">
Call `find_models` with `output` (`video`, `image`, `audio` or `three_d`) and a `query` in plain words, like "lip sync" or "seedance". Each result has a model id, a name and a price. Without a query, it lists every model by name.
</Step>
<Step title="Read its inputs">
Call `get_model` with the `model` id. It returns the model's description, its price by its inputs, and its inputs as a JSON Schema. Media inputs take sequence URLs from the project, so bring files in with `add_media` first. A voice input takes an id from `search_library`.
</Step>
<Step title="Price it with a dry run">
Call `generate` with `dry_run: true`. It checks the inputs and returns the price, and it starts nothing. Your agent runs a dry run first. For any call that costs 1 credit or more, it tells you the price and waits for your yes. A call under 1 credit runs without asking, and your agent tells you what it cost.
</Step>
<Step title="Run it">
Call `generate` again without `dry_run`, with `max_credits` and an `idempotency_key`. Nothing starts when the estimate is above `max_credits`. The key makes a retry after a timeout find the first generation instead of paying twice. The answer is the thread's URL at once, and the sequences' URLs when they appear.
</Step>
</Steps>

Credit prices by model are on the <a href="https://invideo.io/help/billing/video-model-pricing/" target="_blank">video</a>, <a href="https://invideo.io/help/billing/image-pricing/" target="_blank">image</a> and <a href="https://invideo.io/help/billing/audio-pricing/" target="_blank">audio</a> pricing pages. The dry run is the price of one specific call.

When a model's `price` has `estimate: true`, the final charge can end above it. Follow the run with `read` or `status` on its URLs. Never call `generate` again to check on it.

The URL says where the result goes. A page's URL starts a new thread there. A thread's, a sequence's or a timeline's URL adds to that thread.

### On the CLI

The CLI does the same four steps. A model's own inputs go with `-i key=value`, one each.

```bash
invideo gen models <project-url> --output video --query "lip sync"
invideo gen model <project-url> --model seedance_2_5.r2v
invideo gen run <page-url> --model seedance_2_5.r2v --dry-run \
  -i prompt="slow push on the bottle"
invideo gen run <page-url> --model seedance_2_5.r2v \
  --max-credits <price> --idempotency-key 7f3c9a2e \
  -i prompt="slow push on the bottle"
invideo status <thread-url> --wait
```

Where each value comes from:

- `<project-url>` comes from `invideo project new` or `invideo project list`.
- `<page-url>` is a notebook page, from `invideo notebook new-page <project-url>`, or a page listed by `invideo notebook show <project-url>`. The project URL works too.
- `<price>` is `estimated_credits` in the dry run's answer.
- `<thread-url>` is in the paid run's answer. `invideo status` waits for it and saves nothing.

`-i prompt=@prompt.txt` reads an input from a file. `--input inputs.json` gives all the inputs as one JSON object: the bare inputs that `get_model` lists, with no `inputs` wrapper. The dry run and the paid run pass the same inputs the same way, both with `-i` or both with `--input`.

## When a model retires

Models retire. A model id on this page, in a skill or in a saved prompt is a good pick, not a promise. A retired model is refused as not found.

| Symptom | Fix |
| --- | --- |
| `get_model` or `generate` refuses the model as not found | Models retire. Run `find_models` with the job in words, use the best match, and tell the person which model you used. |

Name the model you used in your summary to the person, so a later run can check it the same way.

## Models by job

The tables give the model ids that fit the jobs on this site. They are not every model. Run `find_models` for the full list, and `get_model` for a model's inputs before the first run. The names come from the model list.

### Text to video

These models make a clip from a prompt alone. Most of them also take an optional first or last frame.

| Model id | Name |
| --- | --- |
| `veo_31_lite` | VEO 3.1 Lite |
| `kling_v4.kling_v4_frames` | Kling 4.0: Frames |
| `kling_v3_turbo` | Kling 3.0 Turbo |
| `minimax_h3_max.generate` | MiniMax H3 Max: Generate |
| `minimax_h3_max_turbo` | MiniMax H3 Max Turbo |
| `wan_30_video.wan_30_frame` | Wan 3.0: Frames |
| `gemini_omni_flash_15_preview.start_frame` | Gemini Omni Flash 1.5: Start frame |
| `heygen_video_1.generate` | HeyGen Video: Generate |
| `flux_3.frames` | FLUX 3: Frames |
| `grok_imagine_video.grok_imagine_text_to_video` | Grok Imagine Video: Text to Video |

### Image to video

These models animate a still: a first frame, and for some a last frame too.

| Model id | Name |
| --- | --- |
| `seedance_2_5.frames` | Seedance 2.5: Frames |
| `seedance_2_0.frames` | Seedance 2.0: Frames |
| `seedance_2_0_fast.frames` | Seedance 2.0 Fast: Frames |
| `veo_31.frames` | VEO 3.1: Frames |
| `veo_31_fast_preview.frames` | VEO 3.1 Fast: Frames |
| `wan_27_alibaba.wan_27_i2v` | Wan 2.7: Image to Video |
| `wan_26_alibaba.frames` | Wan 2.6: Image to Video |
| `minimax_h3.frames` | MiniMax H3: Frames |
| `minimax_h3_lite.frames` | MiniMax H3 Lite: Frames |
| `minimax_h3_highspeed.frames` | MiniMax H3 Highspeed: Frames |
| `grok_imagine_video.grok_imagine_image_to_video` | Grok Imagine Video: Image to Video |
| `camera_moves.image` | Camera control: Image to Video |

### Reference to video

These models take reference images, and for some video and audio, and keep a character or a product the same across shots. Prefer them over a frames model when there is more than one reference.

| Model id | Name |
| --- | --- |
| `seedance_2_5.r2v` | Seedance 2.5: Reference to Video |
| `seedance_2_0.r2v` | Seedance 2.0: Reference to Video |
| `seedance_2_5_draft.r2v` | Seedance 2.5 Draft: Reference to Video |
| `veo_31.ingredients` | VEO 3.1: Ingredients |
| `minimax_h3_max.reference` | MiniMax H3 Max: Reference to Video |
| `minimax_h3.r2v` | MiniMax H3: Reference to Video |
| `minimax_h3_lite.r2v` | MiniMax H3 Lite: Reference to Video |
| `minimax_h3_highspeed.r2v` | MiniMax H3 Highspeed: Reference to Video |
| `bach_1_0_pro.r2v` | Bach 1.0 Pro: Reference to Video |
| `heygen_video_1.reference` | HeyGen Video: Reference to Video |
| `kling_video_o1.ingredients` | Kling Video O1: Ingredients |
| `happy_horse_11_alibaba.ingredients` | HappyHorse 1.1: Ingredients |
| `wan_30_video.wan_30_reference` | Wan 3.0: Reference to Video |
| `gemini_omni_flash_15_preview.reference` | Gemini Omni Flash 1.5: Reference to Video |

### Extend or edit a clip

These models continue a clip past its end, or change a clip you already have.

| Model id | Name |
| --- | --- |
| `seedance_2_5.extend` | Seedance 2.5: Extend |
| `veo_31.extend` | VEO 3.1: Extend |
| `ltx_2_3_pro.extend_video` | LTX 2.3 Pro: Extend Video |
| `grok_imagine_video_extend` | Grok Imagine Video Extend |
| `seedance_2_5.edit` | Seedance 2.5: Edit |
| `kling_v4.kling_v4_edit` | Kling 4.0: Video edit |
| `luma_ray_32.edit` | Luma Ray 3.2: Edit |
| `ltx_2_3_pro.retake_video` | LTX 2.3 Pro: Retake Video |

### Reframe

These models make a clip in a new aspect ratio by generating the missing picture. They are generative, not a face-tracking crop.

| Model id | Name |
| --- | --- |
| `ltx_2_3_pro.reframe` | LTX 2.3 Pro: Reframe |
| `luma_ray_32.reframe` | Luma Ray 3.2: Reframe |

### Upscale

Video upscales charge per source second. The `media` ops `video.upscale` and `image.upscale` run the same kind of model on one file. The two Topaz Hyperion models and LTX turn SDR into HDR.

| Model id | Name |
| --- | --- |
| `topaz_starlight_fast_3` | Topaz Starlight Fast 3 |
| `topaz_proteus_4` | Topaz Proteus |
| `byteplus_vod_upscale` | BytePlus VOD Video Upscaler |
| `topaz_video_upscale` | Topaz Video Upscale |
| `seedvr_video_upscale` | SeedVR Video Upscale |
| `veo_31_upscale` | Veo 3.1 Video Upscale |
| `ltx_video_hdr_upscale` | LTX Video SDR to HDR Upscale |
| `topaz_hyperion_2_5_sdr_hdr` | Topaz Hyperion 2.5 (SDR → HDR) |
| `topaz_hyperion_2_sdr_hdr` | Topaz Hyperion 2 (SDR → HDR) |
| `clarity_upscaler` | Clarity Upscaler |
| `magnific_upscaler_precision_v2` | Magnific Upscaler Precision |
| `topaz_bloom_2` | Topaz Bloom 2 |

### Lip sync

These models re-time a speaker's lips to a new audio track.

| Model id | Name |
| --- | --- |
| `sync_lipsync_v3.video` | Sync Lipsync v3: Lip-sync video |
| `kling_lipsync` | Kling Lipsync |
| `heygen_lipsync` | HeyGen Lipsync |
| `veed_lipsync_v2` | Veed Lipsync v2 |
| `pixverse_lipsync` | Pixverse Lipsync |
| `minimax_h3_max.lip_sync` | MiniMax H3 Max: Lip Sync |

### Dubbing and translation

No model dubs a video in one step, so your agent follows a recipe:

1. Get the words and times with `media` `audio.transcript`.
2. Write the translation.
3. Voice it with a text to speech model below.
4. Put the new voice on the video with `media` `video.replaceAudio`.
5. Re-sync the lips with a lip sync model.

The voice changer below swaps the voice on a recording and keeps its timing.

| Model id | Name |
| --- | --- |
| `elevenlabs_speech_to_speech.elevenlabs_sts_multilingual_v2` | ElevenLabs Voice Changer: Multilingual STS V2 |

### Text to speech and voice clone

Speaking models take a voice id from `search_library` in the `<model>_voices` library, where `<model>` is the model's id. A voice id works only with its own model: `seed_tts_2_0` takes a voice from `seed_tts_2_0_voices`, and `elevenlabs_text_to_speech.elevenlabs_tts_v4` takes one from `elevenlabs_text_to_speech_voices`. Workspace voice clones show up in the same libraries. `seed_audio_1_0.ta2a` clones a voice from reference clips. Pass them as `reference_audio_1` to `reference_audio_3`, and tag each speaker `@Audio1` to `@Audio3` in the prompt.

| Model id | Name |
| --- | --- |
| `elevenlabs_text_to_speech.elevenlabs_tts_v4` | ElevenLabs Text to Speech: TTS V4 |
| `elevenlabs_text_to_speech.elevenlabs_tts_multilingual_v2` | ElevenLabs Text to Speech: Multilingual V2 |
| `elevenlabs_text_to_dialogue.generate_v4` | ElevenLabs Text to Dialogue: V4 |
| `seed_tts_2_0` | Seed TTS 2.0 |
| `minimax_speech_28` | Minimax Speech 2.8 |
| `cartesia_sonic_3_6` | Cartesia Sonic 3.6 |
| `gemini_3_1_flash_tts` | Gemini 3.1 Flash TTS |
| `fish_audio_s2_1_pro` | Fish Audio S2.1 Pro |
| `sarvam_bulbul_v3` | Sarvam Bulbul v3 |
| `seed_audio_1_0.ta2a` | Seed Audio 1.0: Text + Audio to Audio |

### Music

These models write a song or an instrumental. Stock music is also in `search_library` under `stock_music`.

| Model id | Name |
| --- | --- |
| `elevenlabs_music_v2_5_song` | ElevenLabs Music V2.5 Song |
| `elevenlabs_music_v2_5_instrumental` | ElevenLabs Music V2.5 Instrumental |
| `minimax_music_3` | Minimax Music 3.0 |
| `lyria_3_pro` | Google Lyria 3 Pro |
| `mureka_9_song` | Mureka 9 song |
| `mureka_9_instrumental` | Mureka 9 Instrumental |
| `mureka_9_soundtrack` | Mureka 9 Soundtrack |

### Sound effects

These models make sound effects from a prompt, or a soundtrack for a silent clip.

| Model id | Name |
| --- | --- |
| `elevenlabs_sfx` | ElevenLabs SFX |
| `pixverse_sfx` | Pixverse SFX |
| `mmaudio_v2.mmaudio_v2_video_to_audio` | MMAudio V2: Video to Audio |
| `mmaudio_v2.mmaudio_v2_text_to_audio` | MMAudio V2: Text to Audio |

### Subtitles

These models transcribe a video and burn styled subtitles into it. For captions you can edit on the timeline, use `audio.transcript` and the `add_captions` op instead.

| Model id | Name |
| --- | --- |
| `invideo_subtitles` | invideo Subtitles |
| `veed_subtitles` | VEED Subtitles |

### Text animation and lyric videos

These models put animated text on a video, or make a lyric video from a song.

| Model id | Name |
| --- | --- |
| `dynamic_text.styles` | Dynamic Text: Styles |
| `dynamic_text.diy` | Dynamic Text: DIY |
| `uc_remotion_text` | UC Remotion Text |
| `uc_blurred_background_text` | UC Blurred Background Text |
| `lyrical_videos.audio` | Lyrical Videos: Lyrics from audio |
| `lyrical_videos.video` | Lyrical Videos: Lyrics from video |

### Background removal

These models cut the subject out of a video or an image. The `media` ops `video.removeBackground` and `image.removeBackground` run them on one file.

| Model id | Name |
| --- | --- |
| `bria_video_bg_remove` | Bria Video Background Removal |
| `veed_video_bg_remove.veed_bg_standard` | VEED Video Background Removal: Standard |
| `pixelcut_video_bg_remove` | Pixelcut Video Background Removal |
| `ben_v2_video_bg_remove` | BEN v2 Video Background Removal |
| `bria_bg_remove` | Bria BG Remove |
| `birefnet_bg_remove` | BiRefNet BG Remove |

### Segmentation and tracking

These models find an object or a person in a video and follow it, for a mask. Use the mask with the `track_matte_key` effect and `set_matte_source`.

| Model id | Name |
| --- | --- |
| `sam_3_1_video` | SAM 3.1 Video Segmentation |
| `object_track` | Object Mask |

### Clean plate

These models remove an object or a person and fill in what was behind it.

| Model id | Name |
| --- | --- |
| `ltx_2_3_clean_plate` | LTX 2.3 Clean Plate |
| `ideogram_remove_object` | Ideogram Remove Object |
| `qwen_image_edit_remove_element` | Qwen Edit Remove Element |

### Avatars and talking photos

These models make a talking head from a photo and an audio clip or a script.

| Model id | Name |
| --- | --- |
| `heygen_photo_avatar` | HeyGen Photo Avatar |
| `kling_avatar.pro` | Kling Avatar: Pro |
| `kling_avatar.std` | Kling Avatar: Std |
| `pruna_p_video_2_pro_avatar` | P-Video 2 Pro Avatar |
| `sync_lipsync_v3.image` | Sync Lipsync v3: Animate portrait |
| `omni_human_2` | OmniHuman 2.0 |

### Images

These models make or edit stills: thumbnails, product shots, storyboards and first frames for image to video.

| Model id | Name |
| --- | --- |
| `nanobanana_pro` | Nano Banana Pro |
| `nano_banana_2_1` | Nano Banana 2.1 |
| `gpt_image_2` | GPT Image 2 |
| `seedream_5_0_pro` | Seedream 5.0 Pro |
| `flux_3_image.generate` | FLUX 3: Generate |
| `flux_3_image.edit` | FLUX 3: Edit |
| `ideogram_4_5.generate` | Ideogram 4.5: Generate |
| `flux_kontext_pro` | Flux Kontext Pro |

### Vectorize

These models make a vector graphic, or turn an image into one.

| Model id | Name |
| --- | --- |
| `ideogram_vector_1.vectorize` | Ideogram Vector 1: Vectorize |
| `ideogram_vector_1.generate` | Ideogram Vector 1: Generate |
| `recraft_v41.recraft_v41_text_to_vector` | Recraft 4.1: Text to Vector |

### 3D

Find these with `find_models` and `output: "three_d"`. `read` on a 3D sequence gives a preview and model files. Pass that sequence URL to the remesh, retexture and rig models.

| Model id | Name |
| --- | --- |
| `meshy.text_to_3d` | Meshy: Text to 3D |
| `meshy.image_to_3d` | Meshy: Image to 3D |
| `meshy.multi_image_to_3d` | Meshy: Multi-image to 3D |
| `meshy.remesh` | Meshy: Remesh |
| `meshy.retexture` | Meshy: Retexture |
| `meshy.rig` | Meshy: Rig |
| `meshy.rig_and_animate` | Meshy: Rig & animate |

## When to use something else

Some jobs need no model, or a different tool. The `media` tool makes many new files without a model: trims, speed changes, loops, frames and resizes. The dry run shows its price before anything starts. Captions you edit on the timeline come from `audio.transcript` and the `add_captions` op. Edits and exports never use a model.

## Related

- [MCP tools](/reference/mcp-tools)
- [Know the cost before you spend](/how-to/cost-before-you-spend)
- [Credits and what they cost](/account/credits)
- [Generate a missing shot or extend a clip](/how-to/film/generate-a-missing-shot)
- [CLI commands and flags](/reference/cli)