> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.

# Image-to-Video

Choose a backend for image-to-video generation. See the [Diffusion Overview](/dynamo/dev/diffusion/overview) for installation and shared configuration.

<Tabs>
<Tab title="vLLM-Omni">

<Anchor id="vllm-omni" />

Image-to-video (I2V) uses the same `/v1/videos` endpoint as [text-to-video](/dynamo/dev/diffusion/text-to-video#vllm-omni), with an additional `input_reference` field that provides the source image. Run a vLLM-Omni worker with `--output-modalities video`.

## Tested Models

| Model | Notes |
|---|---|
| `Wan-AI/Wan2.2-TI2V-5B-Diffusers` | Default model |
| `Wan-AI/Wan2.2-I2V-A14B-Diffusers` | Dual-expert MoE ([model card](https://huggingface.co/Wan-AI/Wan2.2-I2V-A14B-Diffusers)) |

To run a non-default model, pass `--model` to the launch script:

```bash
bash examples/backends/vllm/launch/agg_omni_i2v.sh --model Wan-AI/Wan2.2-I2V-A14B-Diffusers
```

## Launch

Launch with the provided script using `Wan-AI/Wan2.2-TI2V-5B-Diffusers`:

```bash
bash examples/backends/vllm/launch/agg_omni_i2v.sh
```

## Generate a Video from an Image

```bash
curl -s http://localhost:8000/v1/videos \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Wan-AI/Wan2.2-TI2V-5B-Diffusers",
    "prompt": "A bear playing with yarn, smooth motion",
    "input_reference": "https://example.com/bear.png",
    "size": "832x480",
    "response_format": "url",
    "nvext": {
      "num_inference_steps": 40,
      "num_frames": 33,
      "guidance_scale": 1.0,
      "boundary_ratio": 0.875,
      "guidance_scale_2": 1.0,
      "seed": 42
    }
  }'
```

The `input_reference` field accepts:
- **HTTP/HTTPS URL**: `"https://example.com/image.png"`
- **Base64 data URI**: `"data:image/png;base64,iVBORw0KGgo..."`
- **Local file path**: `"/path/to/image.png"` or `"file:///path/to/image.png"`

## Request Parameters (`nvext`)

I2V accepts all [text-to-video `nvext` fields](/dynamo/dev/diffusion/text-to-video#request-parameters-nvext), plus two fields that control the dual-expert MoE denoising schedule in Wan2.x models:

<ParamField path="nvext.boundary_ratio" type="float" default="0.875">
  MoE expert switching boundary (I2V).
</ParamField>
<ParamField path="nvext.guidance_scale_2" type="float" default="1.0">
  CFG scale for the low-noise expert (I2V).
</ParamField>

## See Also

- [Text-to-Video with vLLM-Omni](/dynamo/dev/diffusion/text-to-video#vllm-omni)
- [Image-to-Video with SGLang](/dynamo/dev/diffusion/image-to-video#sglang)
- [vLLM-Omni Configuration reference](/dynamo/dev/backends/v-llm-omni-configuration)

</Tab>
<Tab title="SGLang">

<Anchor id="sglang" />

SGLang's video generation worker (`--video-generation-worker`) supports image-to-video (I2V) in addition to [text-to-video](/dynamo/dev/diffusion/text-to-video#sglang), using SGLang's `DiffGenerator` with frame-to-video encoding.

## Launch

```bash
cd $DYNAMO_HOME/examples/backends/sglang
./launch/text-to-video-diffusion.sh
```

Use `--wan-size 1b` (default, 1 GPU) or `--wan-size 14b` (2 GPUs). See the launch script for all configuration options.

## Generate a Video from an Image

Provide the source image alongside the prompt in the `/v1/videos` request. See the [launch script](https://github.com/ai-dynamo/dynamo/tree/main/examples/backends/sglang/launch/text-to-video-diffusion.sh) and [SGLang Examples](/dynamo/dev/recipes/cli-templates/sg-lang) for the full I2V request format and supported models.

## See Also

- [Text-to-Video with SGLang](/dynamo/dev/diffusion/text-to-video#sglang)
- [Image-to-Video with vLLM-Omni](/dynamo/dev/diffusion/image-to-video#vllm-omni)
- [SGLang Examples](/dynamo/dev/recipes/cli-templates/sg-lang)

</Tab>
</Tabs>