Pruna P-Video 2 Pro Image-to-Video

pruna-ai/p-video-2-pro/image-to-video

Generate 5–15 second videos with audio at 480p or 768p, with cost, speed and quality modes.

Examples

Pruna P-Video 2 Pro Image-to-Video Examples 1

Parameters

NameTypeDefaultConstraintsDescription
prompt *Prompttextarea—≤ 5000 charsText prompt describing the video to generate.
image *Imageimage_upload—image/* · 1–1 itemsFirst-frame reference image. Upload an image or provide its public URL. The reference image determines the output canvas.
last_imageLast Imageimage_upload—image/* · 0–1 itemsOptional last-frame reference image. Upload an image or provide its public URL; omit when unused.
durationDurationslider55 ~ 15 · step 1Video duration in seconds, from 5 to 15.
resolutionResolutionselect768p480p | 768pOutput video resolution.
modeModeselectspeedspeed | quality | costGeneration mode: cost for lower-cost generation with the same output quality as speed, speed for faster generation, or quality for higher-quality generation. Default: speed. Independent of prompt_upsampler.
prompt_upsamplerPrompt Upsamplerselectturbooff | turbo | maxPrompt expansion mode. Independent of the cost, speed, or quality generation mode; does not change the price.
seedSeednumber—step 1Optional random seed for reproducible generation. Omit for a random seed.

Output fields

FieldTypeDescription
videosarray<string>Generated video URLs.

API

Call this model through one unified REST API. Get a key on the API Keys page.

cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/pruna-ai/p-video-2-pro/image-to-video" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {
    "prompt": "A cinematic portrait, dramatic rim light, shallow depth of field",
    "image": "https://example.com/input.jpg",
    "duration": 5,
    "resolution": "768p",
    "mode": "speed",
    "prompt_upsampler": "turbo"
  }
}'

# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time, requests

API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1) Submit
resp = requests.post(
    "https://www.namifusion.com/api/v1/marketplace/run/pruna-ai/p-video-2-pro/image-to-video",
    headers=HEADERS,
    json={
        "input": {
            "prompt": "A cinematic portrait, dramatic rim light, shallow depth of field",
            "image": "https://example.com/input.jpg",
            "duration": 5,
            "resolution": "768p",
            "mode": "speed",
            "prompt_upsampler": "turbo"
        }
    },
)
resp.raise_for_status()  # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()

# 2) Poll until a terminal state (completed / failed / cancelled).
#    This model is allowed up to 1800s server-side.
deadline = time.time() + 1860
while task.get("status") not in ("completed", "failed", "cancelled"):
    if time.time() > deadline:
        raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
    time.sleep(3)
    poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
    poll.raise_for_status()
    task = poll.json()

print(task["status"], task.get("output"))
JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };

// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/pruna-ai/p-video-2-pro/image-to-video", {
  method: "POST",
  headers: { ...HEADERS, "Content-Type": "application/json" },
  body: JSON.stringify({
    "input": {
      "prompt": "A cinematic portrait, dramatic rim light, shallow depth of field",
      "image": "https://example.com/input.jpg",
      "duration": 5,
      "resolution": "768p",
      "mode": "speed",
      "prompt_upsampler": "turbo"
    }
  }),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();

// 2) Poll until a terminal state (completed / failed / cancelled).
//    This model is allowed up to 1800s server-side.
const deadline = Date.now() + 1860 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
  if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
  await new Promise((r) => setTimeout(r, 3000));
  const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
  if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
  task = await poll.json();
}

console.log(task.status, task.output);

Documentation

Pruna P-Video 2 Pro Image-to-Video

Generate 5–15 second videos with audio at 480p or 768p, with cost, speed and quality modes.

Inputs

ParameterRequiredType / allowed values / default
promptRequiredstring; max 5000 characters. Text prompt describing the video to generate.
imageRequiredarray; max count: 1. First-frame reference image. Upload an image or provide its public URL. The reference image determines the output canvas.
last_imageOptionalarray; max count: 1. Optional last-frame reference image. Upload an image or provide its public URL; omit when unused.
durationOptionalinteger; min: 5.0; max: 15.0; step: 1.0; default: 5. Video duration in seconds, from 5 to 15.
resolutionOptionalstring; 480p / 768p; default: "768p". Output video resolution.
modeOptionalstring; speed / quality / cost; default: "speed". Generation mode: cost for lower-cost generation with the same output quality as speed, speed for faster generation, or quality for higher-quality generation. Default: speed. Independent of prompt_upsampler.
prompt_upsamplerOptionalstring; off / turbo / max; default: "turbo". Prompt expansion mode. Independent of the cost, speed, or quality generation mode; does not change the price.
seedOptionalinteger; step: 1. Optional random seed for reproducible generation. Omit for a random seed.

Nami accepts up to 5000 prompt characters to match the current MaaS contract. Required prompts must be non-empty.

The image and last_image fields use one-element URL arrays in Nami; they are forwarded as single URLs upstream. Omit last_image when unused.

The first frame defines the output canvas; last_image is optional. There is no aspect_ratio input for this image-to-video endpoint.

Listing price

1 USD = 100 credits. Account discounts are applied separately.

Price = requested output seconds × the selected resolution/mode rate. Duration: 5–15 whole seconds; default 5. Generated audio and prompt_upsampler add no charge. mode defaults to speed; prompt_upsampler defaults to turbo.

Resolutioncost (USD/s)speed (USD/s)quality (USD/s)
480p$0.01$0.02$0.04
768p$0.025$0.035$0.075

API usage

Use reachable media URLs. Submit once, then poll task_uuid until completed or failed; successful output.videos contains the video URLs.

POST https://www.namifusion.com/api/v1/marketplace/run/pruna-ai/p-video-2-pro/image-to-video
Authorization: Bearer YOUR_NAMIFUSION_API_KEY
Content-Type: application/json

{
  "input": {
    "resolution": "768p",
    "prompt": "A colorful scene with gentle natural movement.",
    "duration": 5,
    "image": [
      "https://example.com/first-frame.png"
    ],
    "mode": "speed",
    "prompt_upsampler": "turbo"
  }
}
GET https://www.namifusion.com/api/v1/marketplace/run/tasks/{task_uuid}
Authorization: Bearer YOUR_NAMIFUSION_API_KEY

WaveSpeed

Related models

xAI Grok Imagine Video v1.5 Image to Video
Image to VideoX Ai

xAI Grok Imagine Video v1.5 Image to Video

Animate one input image with a text prompt into a 1-15 second video at 480p or 720p.

from $0.850 / per run
Vidu Q4 Preview Image to Video
Image to VideoVidu

Vidu Q4 Preview Image to Video

Generate a 3–16 second video from a prompt and one image, with optional audio and prompt expansion. Supports 540p, 720p, 1080p, 2k and 4k.

from $0.475 / per run
vidu/q3/image-to-video-spicy
Image to VideoVidu

vidu/q3/image-to-video-spicy

Vidu Q3 Image-to-Video Spicy generates unlimited high-quality videos from images with smooth animations and diverse motion, optimized for scalable content generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

from $0.750 / per run
Vidu Q3 Image To Video
Image to VideoVidu

Vidu Q3 Image To Video

Vidu Q3 Image-to-Video turns text prompts into high-quality videos with exceptional visual fidelity and diverse motion. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

from $0.750 / per run
Pruna P-Video 2 Pro Avatar
Image to VideoPruna Ai

Pruna P-Video 2 Pro Avatar

Create a talking-avatar video from a portrait and speech audio, up to 180 seconds.

from $0.040 / per run
MiniMax H3 Spicy Image to Video
Image to VideoMinimax

MiniMax H3 Spicy Image to Video

Animate a first-frame image with optional prompt and last-frame guidance. Supports 480p, 540p, 768p and 1080p video, with durations from 3 to 15 seconds.

from $0.200 / per run
MiniMax H3 Image to Video
Image to VideoMinimax

MiniMax H3 Image to Video

MiniMax H3 Image to Video animates a first-frame image into a coherent 2K video, with natural-language motion instructions and optional last-frame control for consistent motion, scene continuity, and cinematic video generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

from $0.650 / per run
MiniMax H3 Lite Image-to-Video
Image to VideoMinimax

MiniMax H3 Lite Image-to-Video

Generate videos with native audio, 4–15 second durations, and 480p or 768p resolution.

from $0.200 / per run