▥ Seedance 2.5 is here! ›
IMAGE TO VIDEO

Image-to-video API

Start from an image and describe the motion, and the model animates it into a video clip. Many models also take a first and last frame, or several references to guide a clip.

Models

Every model below takes mode "image_to_video" with an image_url at POST /v1/videos/generations. Prices are per second of video on the default route, at the resolution shown; Seedance prices are estimates from its token billing.

Model and API model IDOptionsPrice on official-cheap (default)
Seedance 2.5bytedance/seedance-2.5Sizes: 480p, 720p, 1080p4–30 second clips$0.213 per second of 720pofficial: $0.231
Seedance 2.0bytedance/seedance-2.0Sizes: 480p, 720p, 1080p, 4K4–15 second clips$0.139 per second of 720pofficial: $0.151
Seedance 2.0 Fastbytedance/seedance-2.0-fastSizes: 480p, 720p4–15 second clips$0.111 per second of 720pofficial: $0.121
Seedance 2.0 Minibytedance/seedance-2.0-miniSizes: 480p, 720p4–15 second clips$0.07 per second of 720pofficial: $0.076
Wan 3.0alibaba/wan-3.0Sizes: 480p, 720p, 1080p2–15 second clips$0.083 per second of 720pofficial: $0.092
Wan 3.0 Primealibaba/wan-3.0-primeSizes: 480p, 720p, 1080p2–15 second clips$0.125 per second of 720pofficial: $0.138
HappyHorse 1.1alibaba/happyhorse-1.1Sizes: 480p, 720p, 1080p3–15 second clips$0.125 per second of 720pofficial: $0.138
HappyHorse 1.0alibaba/happyhorse-1.0Sizes: 720p, 1080p3–15 second clips$0.125 per second of 720pofficial: $0.138
Grok Imagine Video 1.5xai/grok-imagine-video-1.5Sizes: 480p, 720p, 1080p1–15 second clips$0.126 per second of 720pofficial: $0.14
Grok Imagine Video 1.5 Litexai/grok-imagine-video-1.5-liteSizes: 480p, 720p, 1080p1–15 second clips$0.027 per second of 720pofficial: $0.03
Kling 4.0kwaivgi/kling-4.0Sizes: 720p, 1080p3–30 second clips$0.138 per second of 720pofficial: $0.154
MiniMax H3minimax/h3Sizes: 480p, 768p, 2K5–15 second clips$0.072 per second of 768pofficial: $0.08
MiniMax H3 Maxminimax/h3-maxSizes: 480p, 768p5–15 second clips$0.072 per second of 768pofficial: $0.08
MiniMax H3 Max Turbominimax/h3-max-turboSizes: 480p, 768p5–15 second clips$0.036 per second of 768pofficial: $0.04

Quick start

  1. Create an API key

    Create a key in the console and save it as the MLMUX_API_KEY environment variable.

    Create an API key
  2. Send a request

    The example sends Seedance 2.0 (bytedance/seedance-2.0) to https://api.mlmux.com/v1/videos/generations. Change the model ID to any model in the table above.

  3. Read the result

    The response is a task. Poll its poll_url every few seconds until status is succeeded, then download the video, or set up a webhook to be notified.

    Video API reference
curl https://api.mlmux.com/v1/videos/generations \
  -H "Authorization: Bearer $MLMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.0",
  "route_mode": "official-cheap",
  "prompt": "The camera slowly pushes in while steam rises from the cup",
  "mode": "image_to_video",
  "image_url": "https://your-cdn.example/start-frame.jpg",
  "ratio": "16:9",
  "resolution": "720p",
  "duration": 5,
  "generate_audio": true
}'

# The response is a task. Poll it until "status" is "succeeded", then read "video".
curl https://api.mlmux.com/v1/videos/generations/TASK_ID \
  -H "Authorization: Bearer $MLMUX_API_KEY"

Frequently asked questions

Which model should I use for image to video?

Seedance 2.0 is a good default. Seedance 2.5 and Wan 3.0 Prime give the richest motion, Kling 4.0 makes clips up to 30 seconds, and Grok Imagine Video 1.5 Lite is the lowest-cost option.

How much does the image-to-video API cost?

From about $0.027 per second of video (Grok Imagine Video 1.5 Lite) on the default route. Seedance counts the starting image as a reference image, not a reference video, so it uses the lower rate; the other models charge the same per second with or without a starting image.

How do I send the starting image?

Pass a public URL in image_url, or upload the file with POST /v1/uploads and use the returned URL. The request returns a task; poll it or receive a webhook when the video is ready.

Am I charged for failed requests, and is there a limit?

Failed requests are not charged, and the credits held for them return to your balance. Each account can run up to 60 tasks at the same time; email support@mlmux.com if you need more.