Skip to content
Catalog

cn8/video-from-image

Turn a still image into a short video. Provide a source image URL plus an optional

Learn more about Video from Image
Videoasync (job)Instant previewvideogenerationimage-to-video

Animate your image

Source image
Motion prompt (optional)
Model

Result

Your video shows up here

Upload an image, pick a model — its real durations and resolutions load automatically.

Overview

Turn a still image into a short video. Provide a source image URL plus an optional motion prompt to guide how it animates, pick a model with the model field — Google Veo, Seedance 2.0, Kling AI, Luma Ray, Runway Gen 4 or MiniMax Hailuo — and set resolution, duration and aspect ratio.

Include generation_type: "image-to-video" in the body — without it the request is treated as text-to-video and your image is ignored.

Call List Video Models (media-video-models) for the live catalog: every model's provider, per-second price, supported modes, resolutions and durations.

This is an asynchronous job: you submit a request, receive a job ID right away, then poll until the video is ready.

Pricing is per second of generated video and depends on the model and the resolution — from 4.6 to 156 credits per second. The Pricing table lists every model; media-video-models always returns the live prices. The cheapest way to animate an image is hailuo-2.3-fast at 768P (4.6 credits/s).

Key capabilities

Six providers, one API

The model field picks the provider: Veo (veo-3.1-generate-001 and friends), Seedance (seedance-2-0, -fast, -mini), Kling (kling-v3, kling-v2-6, kling-v2-5-turbo, kling-3-0-turbo), Luma (ray-3.2), Runway (gen4.5, gen4_turbo) or MiniMax (hailuo-2.3, -fast, hailuo-02).

Live model catalog

GET media-video-models (free) returns every model with its price, supported modes, resolutions, aspect ratios and durations — ideal for building a model picker.

Source image from URL

Pass the image as a URL in the image field (use upload-media for local files). Veo models also accept base64-encoded bytes.

Optional motion prompt

Use the optional prompt field to steer how the image animates. If you leave it out, a natural default motion is applied.

Per-second, per-model pricing

Each model has its own rate, and most models cost more at higher resolutions — from 4.6 to 156 credits per second. Billed for the generated video's duration when the job completes.

When to use it

Animated product hero

Take a still product photo and animate it into a looping hero video for landing pages.

Cinemagraph-style content

Add subtle motion to portraits, landscapes, art for social posts.

Concept previs

Animate concept art / mood boards before commissioning real production.

Vertical (TikTok / Reels) content

Use aspect_ratio: 9:16 to generate portrait-format videos from existing portraits.

Input & output

input

image (URL) + generation_type: image-to-video + model (required) + optional prompt/resolution/duration/aspect_ratio

JSON body

output

A job ID right away; once complete, result_data carries the video URL, duration and metadata.

JSON (job)Video URL (in result_data)

Guides & tips

How the async flow works

  1. 1POST media-video-from-image → you get a job with an id back immediately.
  2. 2The video is generated in the background — this typically takes a few minutes.
  3. 3Poll GET /v2/jobs/{job_id} until status is completed.
  4. 4Read the finished video URL from result_data.video_url.

You're billed only when the job completes successfully. You can also configure a webhook to be notified instead of polling.

URL vs base64

  • URL (recommended): pass a public or presigned URL in the image field. Faster, with a smaller request body.
  • base64: pass data:image/png;base64,... or the raw base64 string. Useful when you don't have anywhere to host the image first, but produces larger request bodies.

Choosing a model / provider

Call media-video-models for the live list (filter on supported_modes containing image-to-video). Snapshot:

ModelProviderRateDurationsOther modes
veo-3.1-fast-generate-001Veo (Google)720P 20 · 1080P 24 credits/s4/6/8stext-to-video, first-last-frame, extend
veo-3.1-generate-001Veo (Google)80 credits/s4/6/8stext-to-video, first-last-frame, extend
veo-3.1-lite-generate-001Veo (Google)720P 10 · 1080P 16 credits/s4/6/8stext-to-video, first-last-frame, extend
seedance-2-0Seedance480p 14.1 · 720p 30 · 1080p 75 · 4k 156 credits/s4/5/6/8/10/15stext-to-video, first-last-frame, reference-to-video
seedance-2-0-fastSeedance480p 10.8 · 720p 24 credits/s4/5/6/8/10/15stext-to-video, first-last-frame, reference-to-video
seedance-2-0-miniSeedance480p 6.8 · 720p 15 credits/s4/5/6/8/10/15stext-to-video, first-last-frame, reference-to-video
seedance-2-5Seedance480p 20.7 · 720p 46 · 1080p 115 credits/s4-30stext-to-video, first-last-frame, reference-to-video
kling-v3Kling720p 16.5 · 1080p 22 · 4k 82.5 credits/s3/4/5/6/7/8/9/10/12/15stext-to-video, first-last-frame
kling-v3-omniKling720p 25.5 · 1080p 34 · 4k 85 credits/s3-15stext-to-video, first-last-frame, reference-to-video
kling-video-o1Kling720p 25.5 · 1080p 34 credits/s5/10stext-to-video, first-last-frame, reference-to-video
kling-v2-6Kling34 credits/s5/10stext-to-video, first-last-frame
kling-v2-5-turboKling720p 8.4 · 1080p 14 credits/s5/10stext-to-video, first-last-frame
kling-3.0-turboKling720p 22.4 · 1080p 28 credits/s3/4/5/6/7/8/9/10/12/15stext-to-video
ray-3.2Luma540p 6.2 · 720p 12.5 · 1080p 50 credits/s5/10stext-to-video, first-last-frame, extend
gen4.5Runway25 credits/s2-10stext-to-video
gen4_turboRunway10 credits/s5/10s—
hailuo-2.3MiniMax768P 9.2 · 1080P 16 credits/s6/10stext-to-video, first-last-frame
hailuo-2.3-fastMiniMax768P 4.6 · 1080P 8 credits/s6/10s—
hailuo-02MiniMax768P 9.2 · 1080P 16 credits/s6/10stext-to-video, first-last-frame
minimax-h3MiniMax768P 16 · 2K 26 credits/s4-15stext-to-video, first-last-frame, reference-to-video
minimax-h3-maxMiniMax480P 10 · 768P 16 credits/s5-15stext-to-video, first-last-frame, reference-to-video

For a cheap image animation loop use hailuo-2.3-fast; for final quality with sound use veo-3.1-generate-001.

Don't forget generation_type

This service animates an image, so always send "generation_type": "image-to-video" in the body. If you omit it, the request defaults to text-to-video and your image field is silently ignored — you'll get a text-only video (or a 400 if no prompt was supplied).

Aspect ratio choice

  • 16:9 (default) — landscape. Best for desktop, YouTube and TV. The source image is cropped or letterboxed to fit if needed.
  • 9:16 — portrait. Best for TikTok, Instagram Reels and Shorts.

Pick the aspect_ratio that best matches your source image to minimise cropping.

Writing motion prompts

The optional prompt field guides the motion, not the content. Useful patterns:

  • Camera moves: "slow push-in", "dolly out", "pan left to right", "tilt up"
  • Subject motion: "subject takes a slow breath", "leaves rustle in the wind", "water ripples"
  • Atmosphere: "mist drifting in", "snow falling", "fog clearing"

Avoid describing the scene contents — those are already in the image.

Specs

Latency
Asynchronous — typically 1-5 minutes (longer for 1080P or 8s clips). Jobs time out after 10 minutes.
Async
true
Rate Limit
60 req/min per API key
Max Input
Source image as a web-accessible URL or base64.

Schema

Request body

imagerequiredstring

Source image as a URL (use upload-media for local files). Veo models also accept base64-encoded bytes. Aliases image_url / image_urls[0] are also accepted.

generation_typerequiredstring

Must be 'image-to-video' for this service. If omitted, the request defaults to text-to-video and the image is IGNORED — always send it.

enum: image-to-video

modelrequiredstring

Picks the provider and model — use a model_id / call_as / alias from media-video-models. Veo: 'veo-3.1-generate-001' (default), '-fast', '-lite', 'veo-3.0-fast-generate-001' (aliases 'veo (Audio)' / 'veo fast (Audio)' still work). Seedance: 'seedance-2-0', '-fast', '-mini'. Kling: 'kling-v3', 'kling-v2-6', 'kling-v2-5-turbo', 'kling-3-0-turbo'. Luma: 'ray-3.2'. Runway: 'gen4.5' / 'gen4_turbo' (image-only). MiniMax: 'hailuo-2.3', 'hailuo-2.3-fast' (image-only, the cheapest), 'hailuo-02'.

promptstring

Optional motion-guidance prompt (e.g. 'slow camera push-in', 'gentle wind through trees'). On Seedance/Kling/Luma a default motion prompt is applied if omitted.

resolutionstring · default: 1080P (Veo) / 720p (others)

Output resolution — per model. Veo: '512P' / '1080P' / '4K'. Seedance & Luma: '720p' / '1080p'. Kling: up to '4k' (720p = std, 1080p = pro). Runway: '720p' / '1080p' (Gen 4 Turbo: 720p only). See media-video-models.

durationstring · default: 4s (Veo) / 5s (others)

Video duration as a string with the 's' suffix — allowed values per model. Veo: 4/6/8s. Seedance: 4/5/6/8/10/15s. Kling: 3-15s. Luma: 5s or 10s. Runway Gen 4.5: 2-10s; Gen 4 Turbo: 5s or 10s.

aspect_ratiostring · default: 16:9

Aspect ratio. Veo: '16:9' or '9:16'. Seedance/Kling/Luma also allow '1:1'. Runway additionally allows '4:3', '3:4', '21:9'.

generate_audioboolean

Non-Veo providers: generate a soundtrack. Veo models always include generated audio.

seedinteger

Non-Veo providers: seed for reproducible generations (-1 = random).

Pricing

Per second of generated video, at the model's rate for the chosen resolution. You're billed once, when the job completes successfully. This table is a snapshot (2026-10-07); media-video-models always returns the live prices.

ServiceUnitPrice
Fast · Veo 3.1 Fast (veo-3.1-fast-generate-001)second720P 20 · 1080P 24 credits/second
High quality · Veo 3.1 (veo-3.1-generate-001)second80 credits/second
Economy · Veo 3.1 Lite (Preview) (veo-3.1-lite-generate-001)second720P 10 · 1080P 16 credits/second
Seedance 2.0 (seedance-2-0)second480p 14.1 · 720p 30 · 1080p 75 · 4k 156 credits/second
Seedance 2.0 Fast (seedance-2-0-fast)second480p 10.8 · 720p 24 credits/second
Seedance 2.0 Mini (seedance-2-0-mini)second480p 6.8 · 720p 15 credits/second
Seedance 2.5 (seedance-2-5)second480p 20.7 · 720p 46 · 1080p 115 credits/second
Kling 3.0 (kling-v3)second720p 16.5 · 1080p 22 · 4k 82.5 credits/second
Kling 3.0 Omni (kling-v3-omni)second720p 25.5 · 1080p 34 · 4k 85 credits/second
Kling O1 (kling-video-o1)second720p 25.5 · 1080p 34 credits/second
Kling 2.6 (kling-v2-6)second34 credits/second
Kling 2.5 Turbo (kling-v2-5-turbo)second720p 8.4 · 1080p 14 credits/second
Kling 3.0 Turbo (kling-3.0-turbo)second720p 22.4 · 1080p 28 credits/second
Luma Ray 3.2 (ray-3.2)second540p 6.2 · 720p 12.5 · 1080p 50 credits/second
Runway Gen 4.5 (gen4.5)second25 credits/second
Runway Gen 4 Turbo (gen4_turbo)second10 credits/second
MiniMax Hailuo 2.3 (hailuo-2.3)second768P 9.2 · 1080P 16 credits/second
MiniMax Hailuo 2.3 Fast (hailuo-2.3-fast)second768P 4.6 · 1080P 8 credits/second
MiniMax Hailuo 02 (Legacy) (hailuo-02)second768P 9.2 · 1080P 16 credits/second
MiniMax H3 (minimax-h3)second768P 16 · 2K 26 credits/second
MiniMax H3 Max (minimax-h3-max)second480P 10 · 768P 16 credits/second
List Video ModelsitemFree

Examples: a 4s Veo 3.1 animation at 1080P = 320 credits; a 5s Kling 3.0 at 1080p = 110 credits; a 5s Runway Gen 4 Turbo at 720p = 50 credits; a 6s Hailuo 2.3 Fast at 768P = 27.6 credits.

Most models cost more at higher resolutions and less at lower ones; where the table shows one number, the model has a single rate.

If a job fails, it isn't billed — you're only charged for videos that complete successfully.

FAQ

Related models