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: Veo 80 credits/s · Seedance 50 credits/s · Kling 40 credits/s · Luma 30 credits/s · Runway Gen 4.5 25 credits/s · Runway Gen 4 Turbo 10 credits/s · MiniMax Hailuo 10 credits/s — hailuo-2.3-fast at 8 credits/s is now the cheapest way to animate an image.

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

Veo 80 credits/s · Seedance 50 credits/s · Kling 40 credits/s · Luma 30 credits/s · Runway Gen 4.5 25 credits/s · Gen 4 Turbo & MiniMax Hailuo 8 credits-0.10/s — 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:

ProviderModelsRateNotes
Veo (Google)veo-3.1-generate-001 (default), -fast, -lite, veo-3.0-fast-generate-00180 credits/sAlways generates audio. Accepts base64 images. 512P/1080P/4K, 4/6/8s.
Seedanceseedance-2-0, -fast, -mini50 credits/sOptional audio. 720p/1080p, 4-15s, also 1:1.
Klingkling-v3, kling-v2-6, kling-v2-5-turbo, kling-3-0-turbo40 credits/sUp to 4k on v3/v2-6. 3-15s.
Lumaray-3.230 credits/sDurations 5s or 9s only.
Runwaygen4.525 credits/sExtra aspect ratios (4:3, 3:4, 21:9), 2-10s.
Runwaygen4_turbo10 credits/sCheapest. Image-to-video ONLY (perfect for this product). 720p, 5s or 10s.

For a cheap image animation loop use gen4_turbo; 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, cheapest at 8 credits/s), '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 9s. 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 own rate. You're billed once, when the job completes successfully. media-video-models always returns the live prices.

ServiceUnitPrice
Veo models (veo-3.1-*, veo-3.0-*)second80 credits/second
Seedance models (seedance-2-0*)second50 credits/second
Kling models (kling-*)second40 credits/second
Luma (ray-3.2)second30 credits/second
Runway Gen 4.5 (gen4.5)second25 credits/second
Runway Gen 4 Turbo (gen4_turbo)second10 credits/second
List Video ModelsitemFree

Examples: a 4s Veo animation = 320 credits; a 5s Kling = 200 credits; a 5s Luma = 150 credits; a 5s Runway Gen 4 Turbo = 50 credits — the cheapest way to animate an image.

Within a provider, model choice affects speed/quality, not the rate — except Runway, where Gen 4 Turbo (10 credits/s) has its own rate.

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

FAQ

Related models