You have an approved still, you want a few seconds of video that starts from it, and you need to know which API to send it to. SpicyAPI has four uncensored, adult-capable image-to-video families built for this: Wan 2.7 Spicy, Seedance 2.5 Spicy, MiniMax H3 Spicy and Vidu Q3 Spicy. These four tasks animate an opening image. None offers text-to-video or a separate input for a set of subject or scene reference images.
Short answer. Start with Wan or Seedance when preserving the clothing and setting is the priority. Our September and October 2026 tests also show clear differences in cost and creative controls:
- Cheapest way to test a frame and a motion idea: MiniMax H3 Spicy. Five seconds at 480p is $0.19, and like Seedance and Vidu it needs only the still, no prompt.
- Sound in the file, or your own audio track: Wan 2.7 Spicy. Five seconds at 720p is $0.6175. It is the only one that takes an audio file and a negative prompt.
- A clip longer than 16 seconds, or a 4K file: Seedance 2.5 Spicy, up to 30 seconds. Five seconds at 480p is $1.08, and its 4K is an enlarged 1080p render.
- One-second loops, or a dial for how much moves: Vidu Q3 Spicy. Five seconds at 540p is $0.3325.
Our four-way portrait check cost $2.22. Wan and Seedance stayed closest to that brief; H3 and Vidu changed the wardrobe without being asked.
The four side by side
Prices are per output second in US dollars; the 5-second figures are quoted amounts for a request with only image_url, duration_seconds and resolution set (plus a one-line prompt for Wan 2.7 Spicy, which requires one).
| Wan 2.7 Spicy | Seedance 2.5 Spicy | MiniMax H3 Spicy | Vidu Q3 Spicy | |
|---|---|---|---|---|
| Model ID | alibaba/wan-2.7-spicy/image-to-video | bytedance/seedance-2.5-spicy/image-to-video | minimax/h3-spicy/image-to-video | vidu/q3-spicy/image-to-video |
| Required fields | image_url, prompt | image_url | image_url | image_url |
| Clip length | 2 to 15 s | 4 to 30 s | 3 to 15 s | 1 to 16 s |
| Resolutions | 720p, 1080p | 480p, 720p, 1080p, 4K | 480p, 540p, 768p, 1080p | 540p, 720p, 1080p |
| Default resolution | 720p | 720p | 480p | 720p |
End frame (last_image_url) | No | Yes | Yes | No |
| Sound in the file | Generated, or your own track (audio_url) | Generated (generate_audio) | Generated audio can accompany the clip; no audio switch or own-track input | Generated (generate_audio), plus a separate music switch (bgm) |
| Negative prompt | Yes | No | No | No |
| Seed | Yes | Yes | Yes | No |
| Other control | enable_prompt_expansion (on by default) | none | none | movement_amplitude: auto, small, medium, large |
| Typical wait (median of recent real jobs) | 2.0 min | 5.0 min | 89 s | 2.1 min |
| Price per second | $0.1235 (720p), $0.19 (1080p) | $0.216 (480p), $0.432 (720p), $1.08 (1080p), $2.16 (4K) | $0.038 (480p), $0.057 (540p), $0.084 (768p), $0.152 (1080p) | $0.0665 (540p), $0.1425 (720p), $0.152 (1080p) |
| 5 s, cheapest tier | $0.6175 (720p) | $1.08 (480p) | $0.19 (480p) | $0.3325 (540p) |
| 5 s at about 720p | $0.6175 | $2.16 | $0.42 (768p) | $0.7125 |
None of the four has an aspect_ratio field. Crop the still to the shape you want before you send it. Waits are medians on recent jobs. The input checks that fail before you are charged also differ: Seedance wants each side between 300 and 6,000 pixels; Wan wants 240 to 8,000 pixels a side, a shape between 1:8 and 8:1, and for audio_url a WAV or MP3 of 2 to 30 seconds; Vidu wants an aspect ratio between 1:4 and 4:1. Image uploads are capped at 10 MiB by the upload flow.
Which one for which job

Many stills and cheap drafts: MiniMax H3 Spicy. At $0.114 for three seconds you can roll a dozen variants of one frame and re-render the keeper. It takes an end frame. It has no audio switch or negative prompt, and its native canvas is 768p, so 1080p is the same picture enlarged. Keep the prompt to motion: describing a scene the frame does not show can make it leave your still behind.
Sound that belongs to the clip: Wan 2.7 Spicy or Seedance 2.5 Spicy. Wan generates audio by default and builds the clip against your own track if you pass audio_url, the route to lip sync or a music cue that must land on a frame. Keep generate_audio on or the supplied track is ignored. Seedance generates audio at no extra cost. H3 Spicy can return generated audio but has no switch to disable it or input for your own track; mute it in the edit when needed. Vidu has generated sound plus a separate background-music switch. Wan is also the one to pick when you need to exclude something: its negative prompt takes up to 500 characters.
Guide the ending with an image: Seedance 2.5 Spicy or MiniMax H3 Spicy. Only these two accept a target closing frame alongside the opening frame; check the delivered ending before using it as the next shot. For Wan or Vidu, chain clips by using the final frame of one as the next still; the longer-video guide covers that route.
One take longer than 16 seconds: Seedance 2.5 Spicy. It goes up to 30 seconds, and it is the most expensive and slowest: 30 seconds at 720p is $12.96 and a clip typically takes about five minutes. Wan's own notes say hands and fabric drift past ten seconds, so a long take is not automatically a good one.
Very short loops, or control over how much moves: Vidu Q3 Spicy. It starts at one second ($0.0665 at 540p). movement_amplitude asks for small, medium or large motion; the default auto reads the frame. It has no seed, so two identical requests return different takes, and no end frame.
Wording on Seedance 2.5 Spicy. Its own layer refuses a narrow band of wording, kissing most consistently, while a whisper at the ear or foreheads touching passes. Put that beat in the still, not the sentence.
A fixed seed (Wan, Seedance, H3 Spicy) helps compare your own changes on one family; it does not promise identical frames, and the same number on two families is not the same condition. Each endpoint rejects fields it does not list, so build every request from that family's column in the table.
Content range
All four covered our five-level ladder, from Mild through Very strong and both Maximum-level categories, with rare exceptions: Seedance 2.5 Spicy once kept requested content out of frame, H3 Spicy once implied a scene, and Vidu Q3 Spicy once softened a clip. Content range is not what separates them. Per-model results: Wan 2.7 Spicy, Seedance 2.5 Spicy, MiniMax H3 Spicy, Vidu Q3 Spicy.
These models sometimes show more than the prompt asked for (the eight-model ranking saw it on several Spicy builds), so review each clip before it ships. A softened clip is billed like any other. "Uncensored" here means no content filter is added, not that the rights and consent of your source image stop mattering: use adults, consenting subjects and rights-cleared images.
The same portrait on four families
We used one café portrait and asked for a slow push-in, a slight head turn and a small smile, with the background unchanged. Each family made one five-second take at its lowest resolution; Wan had prompt expansion on.
| Family | What happened in this portrait take | Choice for this kind of brief |
|---|---|---|
| Wan 2.7 Spicy | Kept the sweater and café, ending on a small smile in close-up | A useful starting point for a restrained portrait, especially with your own audio |
| Seedance 2.5 Spicy | Kept the clothing, café and restrained movement | Worth considering when the original styling matters more than the lowest price |
| MiniMax H3 Spicy | Changed the wardrobe without being asked; the output also carried an audio track | Cheap drafts can still be unsuitable when wardrobe continuity is essential |
| Vidu Q3 Spicy | Added a larger forward movement, changed the framing and the wardrobe | Its low price did not compensate for the departure from this brief |
For a public-safe portrait like this, start with Wan or Seedance. Keep wardrobe and motion requirements explicit when preparing a similar shot.
A first test that costs about $2.20
Pick one still you are authorised to use. Make it the frame you will actually ship: already cropped to the target shape, with the subject clear of the edges. A soft frame comes back as a soft clip. Remove implied motion too: motion blur, dust, a mid-stride pose or directional streaks pull the clip toward movement your prompt may contradict.
Write one prompt with one subject action, one camera instruction and one ending, for example: "She turns her head toward the window, the curtain lifts once, slow push-in, then hold." Describe only what changes. Wan requires a prompt, so use the same one for all four, with these controls:
| Control | Setting for a fair first round |
|---|---|
| Duration | 5 seconds on all four |
| Resolution | Lowest tier: Wan 720p, Seedance 480p, H3 Spicy 480p, Vidu 540p; set it yourself, because Seedance defaults to 720p ($2.16 for five seconds) |
| Audio | Off, so you judge the picture first: generate_audio false on Wan, Seedance and Vidu, plus bgm false on Vidu. H3 Spicy has no switch, so ignore its track when judging the picture. Test sound as a separate branch |
| Prompt expansion | enable_prompt_expansion off on Wan |
| Seed | Fixed where available |
| End frame | Not used; test separately on Seedance and H3 Spicy |
The four lowest-tier runs cost $0.19 + $0.3325 + $0.6175 + $1.08 = $2.22. At roughly 720p each (H3 Spicy at 768p), the total is $3.91.
Score each clip
Check the first, middle and last frames at publish size. Score each from 0 to 5:
| Criterion | 0 means | 3 means | 5 means |
|---|---|---|---|
| Opening fidelity | The subject or layout is lost | The core subject stays but the crop needs work | The composition survives the target crop |
| Motion legibility | You cannot tell what was meant to happen | The action reads but the timing is uneven | One action reads clearly at target size |
| Temporal stability | Hands, edges, fabric or text break up | Minor instability on close review | Repeated details stay coherent for your use |
| Brief adherence | Camera or ending differ materially | Most testable requirements land | Action, camera and ending match the prompt |
Also check that the clip stayed on your picture and showed no more than you asked. Decide per run: keep, reject, or retest with one named change.
What to change when a clip fails
| What you see | Change one of these |
|---|---|
| The clip cuts away to a different room or scene | Rewrite the prompt to describe only motion inside the frame. A longer duration is also worth one try |
| A "do not" instruction froze the action | State the framing you want instead ("held tight on the face the whole time"). On Seedance 2.5 Spicy a prompt full of stops can jump to a different shot and then barely move |
| The subject drifts or hands and fabric break up | Cut the prompt to one action, shorten the clip, and re-render the frame at the lowest tier before paying for a higher one |
| The motion fights the picture | Look for implied motion in the still and remove it, or change what the prompt asks for |
| The clip shows more than you wrote | Tighten the prompt and review before publishing |
| The shape is wrong | Crop the still and run again |
| One family wins on picture but misses a hard requirement | Fix the requirement (ending, sound, length, price) and choose among the families that meet it |
When a clip is good, move the same frame and prompt up one tier at a time. On H3 Spicy, 1080p only enlarges 768p.
Try the Playground, then connect the API
- Open H3 Spicy image-to-video, stay on the Playground tab and add the approved still under Input image.
- Type one motion brief in Prompt, set Duration to 5 and Resolution to 480p, then press Run model. Use the same brief and duration on the other three model pages if comparing the families.
- Choose the result that preserves the requirements of your shot, then connect that model to your app.
Set SPICY_API_KEY in your environment and SPICY_IMAGE_URI to your opening image’s public HTTPS URL, or to a spicy:// URI from spicyapi files upload <path> for a local file (media documentation). This Python 3 example submits one new shot after you confirm its price.
import json
import os
import urllib.request
import uuid
base = "https://api.spicyapi.ai/api/v1"
headers = {"Authorization": "Bearer " + os.environ["SPICY_API_KEY"],
"Content-Type": "application/json", "User-Agent": "SpicyAPI-Blog/1.0"}
settings = {
"image_url": os.environ["SPICY_IMAGE_URI"],
"prompt": "A slow camera push toward the subject. Keep the setting and clothing unchanged. One continuous shot.",
"duration_seconds": 5,
"resolution": "480p",
}
payload = {"model": "minimax/h3-spicy/image-to-video", "input": settings}
def post(path, body):
request = urllib.request.Request(base + path, json.dumps(body).encode(), headers)
with urllib.request.urlopen(request, timeout=60) as response:
result = json.load(response)
if result.get("code") != 200:
raise RuntimeError(result)
return result["data"]
quote = post("/jobs/quote", payload)
if input(f"Maximum charge ${quote['maxCharge']}. Type yes to generate: ") != "yes":
raise SystemExit("Stopped before generation")
headers["Idempotency-Key"] = str(uuid.uuid4())
print("Request key:", headers["Idempotency-Key"], flush=True)
task = post("/jobs/createTask", {**payload, "quoteId": quote["quoteId"],
"expectedCost": quote["estimatedCost"]})
print("Task ID:", task["taskId"])Keep the printed request key for recovery of that same request; a new shot gets a new key. The result link lasts about 20 minutes and generated files are kept for about 14 days at most, so copy the video to your own storage (retention guide). Task API documentation covers result delivery and recovery.
For repeated shots, let an Agent use an approved input file: CLI spicyapi tasks create --model minimax/h3-spicy/image-to-video --input-file input.json --wait; MCP ask it to call spicyapi_task_create with that model and input; Skill ask “Use the spicyapi Skill to generate this approved shot and return the result.” CLI and MCP show the price before creation. See the Agent integration documentation.
Which to start with
Own audio track: Wan. Closing frame: H3 Spicy, or Seedance if the shot must pass 15 seconds. Past 16 seconds: Seedance. One-second loops or a motion dial: Vidu. For restrained wardrobe continuity, start with Wan or Seedance; if both meet your brief, compare them at the resolution you will deliver. With no fixed requirement, run the $2.22 test on one frame and, if two families meet your brief, start with the cheaper one at your target resolution.
FAQ
Which is the best uncensored AI image-to-video generator?
For restrained portrait motion, start with Wan or Seedance. H3 Spicy is cheaper, but changed clothing in our portrait take; Vidu suits very short loops when its motion interpretation fits the brief.
Do I need a video model for a still image with a voiceover?
No. If the image stays unchanged while the audio plays, assemble the still and audio in a video editor or FFmpeg. These four APIs are for generating motion; paying for that step adds no value to a static voiceover video.
Can I submit a public image URL?
Yes, if the HTTPS link returns the image file itself. A cloud-drive or social-media share page fails with invalid_asset; for local files, upload first with spicyapi files upload <path>.
Can I send the same request body to every family?
No. Wan requires a prompt and the others do not; audio_url exists only on Wan, movement_amplitude only on Vidu, last_image_url only on Seedance and H3 Spicy.
Do I pay for a clip that comes back toned down?
Yes, it bills like any other, so check the output and not just the task status. A service-confirmed refused or failed task releases the hold without a generation charge. Check settled and cost to confirm final settlement; a completed but toned-down clip is different.









