Turn an intimate idea into a cinematic video, faster.

Use Wan 3 Prime for faster iterations up to 1080P while keeping keyframes, multimodal references, and native audio.
Generation prompt
623/5000
480P–1080PUp to 30 seconds16:9Native audio optional
Generate this scene with Wan 3 PrimeOne-time 18+ confirmation required. You will see the estimated price before running.Example: 5s at 480P costs about $0.2618. Your settings determine the final estimate before generation.Regular one-time top-ups start at $10; first-top-up options appear on the billing page. No subscription. Your draft stays saved.
Sample resultDemo
Up to 30 seconds · 16:9
$0.05236 / second

API reference

Integrate this model from your server. Parameters and prices below come from the current ModelRush registry.
Create an API key with video permission and access to this model. Complete the adult-access confirmation in your ModelRush account. Keep the key on your server. Reuse the same Idempotency-Key when retrying the same submission.
generate-video.mjsjavascript
const origin = "https://api.modelrush.ai";
const headers = {
Authorization: `Bearer ${process.env.MODELRUSH_API_KEY}`,
"Content-Type": "application/json",
};
const submissionKey = crypto.randomUUID();
const response = await fetch(origin + "/v1/videos/generations", {
method: "POST",
headers: { ...headers, "Idempotency-Key": submissionKey },
body: JSON.stringify({
"mode": "text-to-video",
"audio": true,
"ratio": "16:9",
"prompt": "A cinematic fox runs across a moonlit rooftop while neon signs flicker in the distance",
"duration": 5,
"resolution": "720P",
"prompt_extend": true,
"model": "modelrush/wan3-prime-spicy",
"region": "auto"
}),
});
if (!response.ok) throw new Error(await response.text());
const job = await response.json();
console.log({ id: job.id, poll_url: job.poll_url });
let finished = false;
for (let attempt = 0; attempt < 60; attempt++) {
await new Promise(resolve => setTimeout(resolve, 10000));
const statusResponse = await fetch(new URL(job.poll_url, origin), {
headers,
});
if (!statusResponse.ok) throw new Error(await statusResponse.text());
const result = await statusResponse.json();
if (result.status === "failed") throw new Error(JSON.stringify(result.error));
if (result.status === "completed") {
console.log(result.video_url);
finished = true;
break;
}
}
if (!finished) console.log({ id: job.id, poll_url: job.poll_url });
HTTP 202 means the job is queued. Save id and poll_url, then poll with the same API key until completed or failed. A successful video response contains video_url. Download the output within 24 hours. A polling timeout does not cancel the job; resume using the saved poll_url.
text-to-video requires a prompt. image-to-video requires first_frame and allows last_frame. reference-to-video requires at least one reference array. Do not mix keyframes and reference arrays. Use publicly accessible media URLs; region can be auto.duration = -1 selects smart duration. Reference video time plus generated video time must fit within 30 seconds. Image references accept public URLs or Base64 (JPEG, PNG, BMP, WebP data URIs). Video and audio references require accessible URLs. The gateway checks media type and reference video duration before submission.
ParameterRequirementAccepted values and limits
modeOptionaltext-to-video · image-to-video · reference-to-video
seedOptionalinteger; Minimum: 0; Maximum: 2147483647
audioRequiredboolean
modelRequired"modelrush/wan3-prime-spicy"
ratioRequiredadaptive · 16:9 · 4:3 · 1:1 · 3:4 · 9:16
promptOptionalstring; Maximum characters: 20000
regionOptionalstring
durationRequired-1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 · 15 · 16 · 17 · 18 · 19 · 20 · 21 · 22 · 23 · 24 · 25 · 26 · 27 · 28 · 29 · 30
last_frameOptionalstring; Minimum characters: 1
resolutionRequired480P · 720P · 1080P
first_frameOptionalstring; Minimum characters: 1
prompt_extendOptionalboolean; Default: true
reference_audiosOptionalarray; Maximum items: 5
reference_imagesOptionalarray; Maximum items: 10
reference_videosOptionalarray; Maximum items: 5
input.schema.jsonjson
{
"type": "object",
"required": [
"model",
"duration",
"resolution",
"ratio",
"audio"
],
"properties": {
"mode": {
"enum": [
"text-to-video",
"image-to-video",
"reference-to-video"
]
},
"seed": {
"type": "integer",
"maximum": 2147483647,
"minimum": 0
},
"audio": {
"type": "boolean"
},
"model": {
"const": "modelrush/wan3-prime-spicy"
},
"ratio": {
"enum": [
"adaptive",
"16:9",
"4:3",
"1:1",
"3:4",
"9:16"
]
},
"prompt": {
"type": "string",
"maxLength": 20000
},
"region": {
"type": "string"
},
"duration": {
"enum": [
-1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
],
"type": "integer"
},
"last_frame": {
"type": "string",
"minLength": 1
},
"resolution": {
"enum": [
"480P",
"720P",
"1080P"
]
},
"first_frame": {
"type": "string",
"minLength": 1
},
"prompt_extend": {
"type": "boolean",
"default": true
},
"reference_audios": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 5
},
"reference_images": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 10
},
"reference_videos": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 5
}
}
}

Current API pricing

These are customer prices in USD per second. Reference-video requests include input reference video time in the billable duration. Smart duration is settled after generation. Do not infer price from the landing-page example alone.
ModelCapabilityExecution RegionPrice variantCustomer price
Wan 3 Prime Spicy · modelrush/wan3-prime-spicyVideo generationus-virginia1080P$0.2156 / second
Wan 3 Prime Spicy · modelrush/wan3-prime-spicyVideo generationus-virginia480P$0.05236 / second
Wan 3 Prime Spicy · modelrush/wan3-prime-spicyVideo generationus-virginia720P$0.1078 / second

Errors and access

401: check your API key. 403: check key permissions and adult-access confirmation. 400: check this model's schema and mode-specific inputs. 429: respect Retry-After before retrying. Keep the request ID when reporting a failed task.
© 2026 ModelRush