This page covers the mechanics of turning a still image into a video through Muapi's API: how the source image is handled, first/last-frame control, duration and resolution parameters, and how long the output stays downloadable. For picking which model to use by quality, price, or use case, see the AI Video API comparison instead — this page is about how the request works, not which model wins.
Every image-to-video model on Muapi takes a source image_url and a text prompt describing the motion, camera move, or scene continuation, and returns a video that animates from that starting frame. The source image sets the visual content and, on most models, the output aspect ratio — submitting a portrait image to a model without an explicit aspect_ratio parameter typically produces a portrait video, not a cropped landscape one.
Muapi exposes 150+ image-to-video models — Kling, Veo, Wan, Seedance, Runway, PixVerse, Vidu, MiniMax, and more — through the same unified REST pattern: one API key, one request/poll flow, pay-per-generation pricing with no subscription.
Many image-to-video models accept a second image — usually named last_image (Seedance, Kling, Wan, Veo, Vidu) or end_image_url (MiniMax Hailuo) — that fixes the final frame instead of leaving the model to freely animate the motion. This is the standard technique for a controlled transition between two known states: product A turning into product B, a before/after reveal, or a scene that must land on a specific composition. Vidu Q2 Pro Start-End additionally exposes a movement_amplitude parameter to control how much motion happens between the two endpoints. Not every model supports this — Runway's and PixVerse's image-to-video endpoints, for example, take only a single starting image — so check the model's parameter list before assuming first/last-frame support.
Lite-tier image-to-video with first/last-frame control (last_image) and a fixed-camera option.
Pro-tier image-to-video with first/last-frame control (last_image) and explicit aspect-ratio selection.
First/last-frame control (last_image) plus separate resolution and quality parameters for draft-vs-final runs.
First/last-frame control (last_image), aspect ratio, and resolution in one request.
First/last-frame control via a dedicated end_image_url field, separate from the starting image_url.
Purpose-built start-end-to-video model — set both endpoints plus a movement_amplitude control for how much motion happens between them.
Straightforward single-image animation with aspect ratio, resolution, and duration controls, no first/last-frame field.
Accepts multiple reference images (images_list) plus native audio generation and multi-clip output in one request.
camera_fixed) is useful when you want subject motion only, with no camera drift — check for this before assuming every model free-animates the camera by default.Generated video URLs are hosted by the underlying provider and are not permanent — how long they stay reachable depends on which provider is behind the model. As a rule of thumb: WaveSpeed-backed and Runway-backed outputs stay reachable for about 7 days, while Replicate-backed and fal.ai-backed outputs typically expire after about 1 hour. Muapi does not expose which provider serves a given request, so the safe pattern is to always download and persist the output to your own storage immediately after the request completes, rather than storing only the returned URL for later use.
POST /api/v1/upload_file, or use any publicly reachable URL.POST /api/v1/{model-slug} with image_url, a motion-describing prompt, and any duration/resolution/first-last-frame fields the model supports.GET /api/v1/predictions/{request_id}/result until status is completed.curl -X POST https://api.muapi.ai/api/v1/wan2.2-image-to-video \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"image_url": "https://example.com/product-shot.jpg",
"prompt": "slow push-in, gentle studio light sweep",
"resolution": "720p",
"duration": 5
}'import requests
response = requests.post(
"https://api.muapi.ai/api/v1/wan2.2-image-to-video",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"image_url": "https://example.com/product-shot.jpg",
"prompt": "slow push-in, gentle studio light sweep",
"resolution": "720p",
"duration": 5,
},
)
request_id = response.json()["request_id"]
result = requests.get(
f"https://api.muapi.ai/api/v1/predictions/{request_id}/result",
headers={"x-api-key": "YOUR_API_KEY"},
)
print(result.json()) # download result["output_url"] immediatelyIt depends on quality, price, and use case — see the AI Video API comparison for a full ranked breakdown. This page covers request mechanics common across all of them.
Yes, on models that support first/last-frame control — pass a second image as last_image (Seedance, Kling, Wan, Veo, Vidu) or end_image_url (MiniMax Hailuo) alongside the starting image_url.
On most models, yes, unless you explicitly override it with an aspect_ratio parameter — the source image's dimensions typically set the output's aspect ratio.
It varies by the underlying provider — roughly 7 days for WaveSpeed/Runway-backed outputs, about 1 hour for Replicate/fal.ai-backed outputs. Since Muapi doesn't expose which provider served a given request, download and store the result immediately rather than relying on the URL staying valid.
Yes — most models inherit the source image's aspect ratio directly, so portrait and square inputs work without cropping.
Yes. Sign up at muapi.ai, create an API key from your dashboard, and start calling any image-to-video model immediately — no waitlist required.