Seedream 5.0 Pro is LIVE | Try in Image Generator →

Hunyuan Video I2V

wavespeed-ai /

Hunyuan i2v turns images and text prompts into high-quality videos, generating coherent short clips from descriptive inputs. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-video
Input

Idle

$0.4per run·~25 / $10

Next:

ExamplesView all

A pale vampire woman slowly walks to a candlelit window, her crimson eyes glowing in the dark. She lifts one hand and gently taps her long, sharp nails against the glass. Her expression shifts from seductive to dangerous. Outside, bats flutter past a glowing full moon, casting flickering shadows across her face. The candlelight flickers, reflecting in her eyes as she stares into the night

Dark background with flashing sign: “Leave your opinion in the comments.

"A sweet baby dressed in a fuzzy yellow duckling costume sits on the soft floor, smiling with wide, delighted eyes. He is carefully holding a real yellow duckling in his hands, which is chirping softly. The baby laughs and gently rocks the duckling as soft sunlight streams through the window, illuminating the scene with a warm, welcoming glow. The duckling moves a little in the baby's hands, pecking the air and chirping softly, while the baby's costume gently sways with its joyful movements."

A girl is terrified, screaming and crying after a snake bites her leg. In panic and pain, she desperately tries to crawl away, sobbing and trembling as the snake slithers nearby.

> A cute orange and white kitten holding a small red guitar in its paws, sitting on the palm of one hand. The kitten is excited, moving its paws up and down as if playing the guitar, with a soft, blurred background full of flowers. The scene is illuminated by soft, golden light, giving it a magical and charming look. Realistic and charming style

A cute and cheerful little mouse with orange and white fur plays a small golden saxophone. He is standing in a warm room with a blurred background of warm wood tones. The little mouse gently nods his head to the rhythm of the music, with a happy expression and sparkling eyes. The scene has a magical atmosphere, with soft particles of light in the background and gentle movement of the musical notes, as if they were being carried by an enchanted breeze.

This woman walks confidently forward,Then look around

A dancer in a flowing gown, abstract brushstrokes, vibrant color splashes, movement study, expressionistic

A futuristic anime character with cybernetic enhancements, standing on a rooftop overlooking a neon-lit city, cyberpunk style, highly detailed.

A woman with glowing eyes floating amidst cosmic dust and stars, surreal, dreamlike, ethereal, nebula colors.

A person walking on a path made of clouds, surrounded by giant floating flowers, whimsical, magical realism, pastel tones

Two people holding hands walking towards a sunset, silhouette art, warm gradients, emotional, serene.

A pixel art adventurer exploring a blocky forest, 8-bit aesthetic, retro gaming style, subtle character animation

Related Models

README

Hunyuan Video I2V — wavespeed-ai/hunyuan-video/i2v

Hunyuan Video I2V is an image-to-video model that turns a single reference image into a short animated clip guided by a text prompt. Upload an image to lock in subject, composition, and style, then describe the action and camera behavior you want. The model is well-suited for cinematic motion, character-driven beats, and atmospheric scenes where you want the “still” to come alive with coherent movement.

Key capabilities

  • Image-to-video generation from one reference image
  • Prompt-driven motion: actions, expressions, environment changes, camera movement
  • Stable composition anchored to the input image
  • Good for cinematic, dramatic, and stylized shots
  • Supports duration and inference-step controls for quality vs. speed tradeoffs
  • Multiple output sizes (e.g., 1280×720)

Use cases

  • Animate key art, posters, and character portraits into short clips
  • Cinematic micro-stories: close-up → reveal, slow push-ins, mood-heavy scenes
  • Atmosphere and VFX-style motion: rain, fog, embers, neon flicker, drifting particles
  • Social content loops from a single still image
  • Rapid previsualization for scenes before full video production

Pricing

OutputPrice
Per run$0.40

Inputs

  • image (required): reference image to anchor subject and style
  • prompt (required): action + camera directions

Parameters

  • duration: clip length in seconds
  • num_inference_steps: sampling steps (higher often improves coherence/detail)
  • seed: random seed (-1 for random; set for reproducible results)
  • size: output resolution (e.g., 1280×720)

Prompting guide (I2V)

Write prompts like a director’s brief:

  • Subject: who/what is on screen
  • Action: what changes over time (gestures, expression, environment)
  • Camera: push-in, pull-back, pan, tilt, handheld vs. locked-off
  • Mood/lighting: candlelight, moonlight, neon, fog, rim light
  • Motion constraints: “subtle movement”, “no shaky camera”, “smooth dolly”

Example prompts

  • A pale vampire woman stands at a candlelit window, crimson eyes glowing. She slowly raises her hand and taps long nails against the glass. Her expression shifts from seductive to dangerous as bats flutter past outside. Slow cinematic push-in, soft candle flicker, subtle fog, smooth motion, dramatic lighting.
Note:This website uses AI models provided by third parties.

Hunyuan Video I2v API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/hunyuan-video/i2v with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Hunyuan Video I2v below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "num_inference_steps": 30,
    "duration": 5,
    "seed": -1,
    "size": "1280*720"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/hunyuan-video/i2v" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/hunyuan-video/i2v";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "num_inference_steps": 30,
        "duration": 5,
        "seed": -1,
        "size": "1280*720"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "num_inference_steps": 30,
    "duration": 5,
    "seed": -1,
    "size": "1280*720"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/hunyuan-video/i2v", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Hunyuan Video I2v API — Frequently asked questions

What is the Hunyuan Video I2v API?

Hunyuan Video I2v is a WaveSpeedAI model for video generation from images, exposed as a REST API on WaveSpeedAI. Hunyuan i2v turns images and text prompts into high-quality videos, generating coherent short clips from descriptive inputs. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Hunyuan Video I2v API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/hunyuan-video-i2v.

How much does Hunyuan Video I2v cost per run?

Hunyuan Video I2v starts at $0.40 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Hunyuan Video I2v accept?

Key inputs: `prompt`, `image`, `duration`, `size`, `seed`, `num_inference_steps`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/hunyuan-video-i2v.

How long does Hunyuan Video I2v take to generate?

Median end-to-end generation time on WaveSpeedAI is around 131 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Hunyuan Video I2v outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.