Nano Banana 2.1 is LIVE — Google's Latest | Try Now →
Home/Explore/Pruna Ai/P Video 2 Pro/Reference To Video

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

Pruna P-Video-2-Pro Reference-to-Video generates reference-guided videos from image, video, and audio inputs, supporting flexible multimodal guidance for consistent subjects, motion, visual style, and creative video production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Reference to Video
Input

Drag & drop or click to upload

preview

Drag & drop or click to upload

Use the supplied audio as the soundtrack. Requires exactly one audio file.

Idle

$0.02per run·~50 / $1

Next:

ExamplesView all

Create a playful romantic-comedy scene using the reference image. Preserve both characters' identities, outfits, seating positions, and the Parisian cafe setting. Use the supplied audio as the woman's spoken dialogue. The man remains silent. Begin in a medium two-shot. While the man looks toward the street, the woman quickly steals one small bite of his chocolate pastry with her fork. He turns back just as she withdraws the fork. She freezes, then slowly lowers it, trying to look completely innocent. Cut to the woman as she delivers the supplied line with mock seriousness and a mischievous smile. Match her mouth movements to the audio. Cut back to the two-shot. The man raises one eyebrow, visibly amused, then gently slides the entire plate toward her. Her confident expression breaks into a genuine, slightly embarrassed laugh. They hold warm eye contact, sharing the joke. Keep the comedy natural and understated, with a brief pause when she gets caught. Realistic hand movements, consistent props, warm morning sunlight, gentle cafe ambience. No extra dialogue, no subtitles, no background music.

A single continuous cinematic shot. Preserve the woman's identity, olive coat, leather suitcase, and the abandoned station. The camera slowly moves closer as she waits beside the empty tracks. A distant warm headlight appears through the fog. Wind gently lifts her hair and the edge of her coat. She tightens her grip on the suitcase and turns toward the approaching light, her expression shifting from disbelief to quiet recognition. In the final moments, the dark silhouette of an old passenger train begins to emerge from the fog. Grounded, restrained acting. Slow, deliberate pacing. No cuts, no sudden action, no exaggerated expressions. The speech is an off-screen internal monologue; her lips remain still. No subtitles or on-screen text.

A single continuous shot from an intimate road movie. Preserve the woman's identity, cream shirt, blue jeans, vintage blue convertible, and desert gas station. She studies the paper map briefly, then folds it without choosing a destination and places it on the driver's seat. She pauses, looks toward the open road, and lets out a small, genuine smile. A gentle breeze moves the loose strands of her hair. The camera slowly tracks sideways, revealing more of the empty road and sunlit desert beyond her. Warm morning light, subtle natural movement, restrained acting, a quiet sense of freedom. No cuts or dramatic gestures. The speech is an off-screen internal monologue; she does not speak on camera. No subtitles or on-screen text.

Related Models

README

P-Video-2 Pro Reference-to-Video

P-Video-2 Pro Reference-to-Video generates videos from a text prompt with multimodal reference guidance. Combine reference images, video clips, optional audio, and opening or ending keyframes to control subjects, appearance, motion, scene direction, and the start or end of the generated sequence.

Why Choose This?

  • Multimodal reference guidance
    Combine images, videos, and optional audio references in the same generation workflow.

  • Opening and ending keyframes
    Use start_image or end_image to guide how the generated video begins or ends.

  • Multiple visual references
    Use up to 9 images in total, including first- and last-frame images.

  • Video reference support
    Add up to 3 reference videos for motion, appearance, or scene guidance.

  • Optional audio references
    Add up to 3 audio references for additional sound or performance guidance.

  • Speed and cost modes
    Choose speed for faster generation or cost when lower generation price is preferred.

  • 480p and 768p output
    Select the resolution that fits your quality and cost requirements.

Parameters

ParameterRequiredDescription
promptYesText description of the desired video, including scene, action, camera movement, and how supplied references should be used.
imagesConditionalReference image URLs. Up to 9 images are supported in total when combined with start_image and end_image.
videosConditionalUp to 3 reference video URLs. Combined reference-video duration supports up to 15 seconds.
audiosNoOptional reference audio URLs. Supports up to 3 inputs with a combined duration of up to 15 seconds. Audio cannot be used as the only reference type.
keep_audioNoKeep the supplied audio as the output soundtrack instead of using it only as a reference. Default: false. Requires exactly one file in audios when enabled.
start_imageNoOptional opening keyframe image URL. Counts toward the 9-image total limit.
end_imageNoOptional ending keyframe image URL. Counts toward the 9-image total limit.
durationNoRequested output duration in seconds. Range: 5–15. Default: 5.
resolutionNoOutput resolution: 480p or 768p. Default: 768p.
modeNoGeneration mode: speed or cost. Default: speed.
aspect_ratioNoOptional output aspect ratio: 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, or 1:1. Leave empty to automatically adapt to the input references.
prompt_upsamplerNoPrompt enhancement mode: off, turbo, or max. Default: off.
seedNoOptional random seed for generation.

prompt is required.

At least one of the following visual reference inputs must also be provided:

  • images
  • videos
  • start_image
  • end_image

audios can provide reference guidance or, with keep_audio=true, the output soundtrack. Audio cannot be used as the only reference input.

How to Use

  1. Add visual references — Provide at least one image, video, first-frame image, or last-frame image.
  2. Add audio optional — Supply reference audio for sound or performance guidance. To keep an audio file as the soundtrack, provide exactly one file and enable keep_audio.
  3. Write the prompt — Describe the desired scene, motion, camera behavior, and the role of each reference.
  4. Choose duration — Select an output length from 5 to 15 seconds.
  5. Choose resolution — Select 480p or 768p.
  6. Choose generation mode — Use speed for faster generation or cost for lower-priced generation.
  7. Choose aspect ratio — Leave empty to automatically adapt to the input references, or select a supported layout.
  8. Configure prompt enhancement optional — Select off, turbo, or max.
  9. Set seed optional — Use a fixed seed when reproducibility is needed.
  10. Submit — Generate and retrieve the completed video.

Pricing

Pricing includes the requested output duration plus any submitted image, video, and audio references.

Output Video

ResolutionSpeed ModeCost Mode
480p$0.020 / second$0.015 / second
768p$0.035 / second$0.025 / second

Reference Images

images, start_image, and end_image use the same per-image rate.

ModePrice per Image
Speed$0.010
Cost$0.005

Reference Videos

ResolutionSpeed ModeCost Mode
480p$0.040 / billed second$0.030 / billed second
768p$0.060 / billed second$0.060 / billed second

Reference-video billing duration is rounded up to the next whole second and capped at 15 seconds in total. The billable duration may also be limited based on the requested output duration and number of reference videos.

Reference Audio

ModePrice per Billed Second
Speed$0.0025
Cost$0.0015

Combined reference-audio billing duration is rounded up to the next whole second and capped at 15 seconds.

Example

A 5-second 480p output with one reference image costs:

ModeCalculationCost
Speed5 × $0.020 + 1 × $0.010$0.110
Cost5 × $0.015 + 1 × $0.005$0.080

aspect_ratio, prompt_upsampler, keep_audio, and seed do not add separate charges. Supplied audio is still billed at the audio rate above.

Best Use Cases

  • Character-driven video — Use reference images to guide subject appearance and identity.
  • Product and brand videos — Combine product images with scene and motion instructions.
  • Motion-guided generation — Use reference videos to guide movement, pacing, or camera behavior.
  • Start-and-end-frame workflows — Control the opening or ending state with dedicated keyframes.
  • Multi-reference scenes — Combine several visual references into one generated sequence.
  • Audio-guided generation — Add reference audio alongside visual references for additional guidance.
  • Creative prototyping — Compare different references, modes, resolutions, and prompt directions.

Pro Tips

  • Give each reference a clear role in the prompt instead of relying on the model to infer how it should be used.
  • Use visually consistent references when character or product continuity matters.
  • Use start_image when the opening composition must be controlled.
  • Use end_image when the final pose, framing, or scene state matters.
  • Avoid conflicting instructions between the prompt and supplied keyframes.
  • Use 480p for lower-cost testing before generating at 768p.
  • Use cost mode when minimizing generation cost is more important than using the speed-oriented mode.
  • Keep reference videos focused on the motion or visual behavior you want to transfer.

Notes

  • prompt is required.
  • Audio alone cannot satisfy the reference requirement.
  • At least one image, video, first-frame image, or last-frame image must be provided.
  • images, start_image, and end_image share a combined maximum of 9 images.
  • Up to 3 reference videos are supported.
  • Up to 3 reference audio inputs are supported when keep_audio is off (the default). Enable keep_audio with exactly one audio file to use it as the output soundtrack.
  • With keep_audio=true, shorter audio plays first and generated audio fills the remainder; longer audio is trimmed. If its duration is within one second of duration, the video length follows the audio.
  • Reference-video and reference-audio duration are each limited to a combined maximum of 15 seconds.
  • Output duration supports 5–15 seconds and defaults to 5.
  • resolution defaults to 768p.
  • mode defaults to speed.
  • Leave aspect_ratio empty to automatically adapt to the input references.
  • prompt_upsampler defaults to off.
  • The returned video duration may differ slightly from the requested duration.

Related Models

Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

P Video 2 Pro Reference To Video API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/pruna-ai/p-video-2-pro/reference-to-video with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for P Video 2 Pro Reference To Video below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "duration": 5,
    "resolution": "768p",
    "mode": "speed",
    "aspect_ratio": "16:9",
    "prompt_upsampler": "off",
    "keep_audio": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/pruna-ai/p-video-2-pro/reference-to-video" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/pruna-ai/p-video-2-pro/reference-to-video";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "duration": 5,
        "resolution": "768p",
        "mode": "speed",
        "aspect_ratio": "16:9",
        "prompt_upsampler": "off",
        "keep_audio": false
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "duration": 5,
    "resolution": "768p",
    "mode": "speed",
    "aspect_ratio": "16:9",
    "prompt_upsampler": "off",
    "keep_audio": False
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/pruna-ai/p-video-2-pro/reference-to-video", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

P Video 2 Pro Reference To Video API — Frequently asked questions

What is the P Video 2 Pro Reference To Video API?

P Video 2 Pro Reference To Video is a Pruna Ai model for reference-guided video generation, exposed as a REST API on WaveSpeedAI. Pruna P-Video-2-Pro Reference-to-Video generates reference-guided videos from image, video, and audio inputs, supporting flexible multimodal guidance for consistent subjects, motion, visual style, and creative video production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the P Video 2 Pro Reference To Video API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/pruna-ai/pruna-ai-p-video-2-pro-reference-to-video.

How much does P Video 2 Pro Reference To Video cost per run?

P Video 2 Pro Reference To Video starts at $0.02 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does P Video 2 Pro Reference To Video accept?

Key inputs: `prompt`, `images`, `aspect_ratio`, `resolution`, `duration`, `seed`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/pruna-ai/pruna-ai-p-video-2-pro-reference-to-video.

How do I get started with the P Video 2 Pro Reference To Video API?

Sign up for a free WaveSpeedAI account to claim starter credits, copy your API key from /accesskey, then call the endpoint shown in the API tab of the playground. The playground also auto-generates a code sample in Python, JavaScript, or cURL for the parameters you've set.

Can I use P Video 2 Pro Reference To Video outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Pruna Ai). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

llms.txt — pruna-ai/p-video-2-pro/reference-to-video for AI agents and LLMs