Pruna P Video 2 Pro Guide: Features, Examples & What Developers Should Know

Pruna P Video 2 Pro tested: 11 clips, exact per-second costs, speed vs cost vs quality on one seed, and the billing and seed traps developers should know.

Pruna P Video 2 Pro guide cover: a rain-streaked diner booth at night with the Segmind logo

Pruna calls P Video 2 Pro the final release in its P-Video family, and it is the one I would point most developers at first. It takes a text prompt, a first-frame image, or a first-and-last-frame pair, and returns a 5 to 15 second clip at 480p or 768p with audio generated in the same pass. Under the hood it is MiniMax H3 (Hailuo 3.0), tuned by Pruna for a much faster generation pass. That is not my guess: the model page on Segmind says so outright.

The model has grown since launch. There are now three generation recipes, speed, quality and a new cost mode, each with its own per-second rate at each resolution. That is six price points behind one endpoint, and the docs make some claims about how they relate that I wanted to check rather than repeat.

So on October 15, 2026 I ran 11 video fires and 2 helper stills through p-video-2-pro, checked every clip with ffmpeg, transcribed the audio, and matched every bill against the x-cost response header. Total spend: $1.98. This guide covers the features, the examples with their exact prompts, and the handful of behaviours that will save you money or a debugging session.

What Pruna P Video 2 Pro is

One synchronous endpoint, binary MP4 in the response body, no polling. Three ways in: text-to-video, first-frame image-to-video, and a first-and-last-frame lock. Every clip carries native audio, so you write the dialogue, ambience and sound effects straight into the prompt.

PropertyP Video 2 Pro
Slugp-video-2-pro
Endpointhttps://api.segmind.com/v1/p-video-2-pro
Base modelMiniMax H3 (Hailuo 3.0), tuned by Pruna
InputsText, first-frame image, optional last_frame_image
Resolutions480p, 768p (default 768p)
Duration5 to 15 seconds, default 5
Aspect ratios16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 1:1
Recipes (mode)speed (default), quality, cost
Prompt upsampleroff, turbo (default), max
AudioAlways on, AAC 32 kHz stereo
OutputH.264, 24 fps

It does not take an audio track as input, it does not edit existing footage, and there is no 1080p. If you need any of those, Pruna has sibling models for them, which I cover near the end.

Pricing: six rates behind one endpoint

P Video 2 Pro bills per second of video, keyed on resolution and recipe. These are the published rates, and every fire I ran billed exactly against them:

Resolutioncostspeed (default)quality5s clip (cost / speed / quality)
480p$0.01/s$0.02/s$0.04/s$0.05 / $0.10 / $0.20
768p$0.025/s$0.035/s$0.075/s$0.125 / $0.175 / $0.375

The x-cost header on my 768p five-second fires read 0.125, 0.175 and 0.375 for cost, speed and quality. An 8 second 768p speed clip billed $0.28 and a 10 second 480p cost clip billed $0.10. No per-call fee, no surprises in the rate itself.

The surprise is in the seconds. The docs say the model "treats this as a target and may return a slightly shorter or longer clip; billing follows the video you receive." That is accurate, and it matters, because the clip lengths come in fixed steps and the bill rounds up:

duration requestedClip returnedSeconds billed
55.17s5
66.58s7
88.00s8
1010.13s10

Ask for 6 seconds and you pay for 7. I mapped the full range on this model when it launched and found the same pattern on 7, 9, 11, 13 and 14 seconds, while 5, 8, 10 and 12 bill exactly what you ask for. The 6 second result above reproduced that today. So if you are budgeting a high-volume pipeline, stick to those four lengths. Note that Segmind's own recommended text-to-video setting in the docs is duration: 6, which is the first length that overbills.

The three recipes, tested on one seed

This is the part of the spec I most wanted to verify. The description of mode says quality "spends more compute on the same prompt", and that cost "matches speed's output at the lowest per-second rate". If cost really gave you speed's output at 71% of the price, nobody should ever use speed.

So I fired one prompt three times at 768p with the same seed, changing only mode. I also set prompt_upsampler to off, for a reason I explain in the developer section: with the upsampler on, the seed does nothing and no comparison is meaningful.

Prompt used Close-up of a barista pulling an espresso shot into a clear glass cup on a walnut counter, crema swirling as the stream thins, warm morning light from a cafe window. Slow push-in. Sound: the hum of the espresso machine, the drip of coffee, quiet cafe chatter in the background.

Parameters resolution: 768p  |  duration: 5  |  aspect_ratio: 16:9  |  prompt_upsampler: off  |  seed: 777  |  mode: speed / cost / quality

mode: speed · $0.175

mode: cost · $0.125

mode: quality · $0.375

Same prompt, same seed, same resolution. Only the recipe changes.

What came back:

  • cost and speed are the same shot, not the same file. Same framing, same window, same pour, same push-in. But the pixels differ: frame-by-frame SSIM between the two was 0.62, and the details drift. The speed clip gave the glass two handles; the cost clip gave it one. "Matches speed's output" is true of the composition, not of the render.
  • quality is a different take entirely. SSIM against speed was 0.47, which is what two unrelated clips score. It reframed the shot wider, added a second cup and a street view. It also got the core action wrong: the espresso stream falls from the group head into the drip tray behind the cup, and the cup never fills. One clip is not a verdict on the recipe, but it is a useful reminder that paying 3x the cost-mode rate buys a different render, not a guaranteed better one.
  • cost is fully reproducible. I fired the cost clip twice. Both came back byte-identical, same MD5, at $0.125 each.

Speed was also the fastest: 20.2 seconds wall clock, against 26.6 and 28.8 seconds for the two cost runs and 38.4 seconds for quality. So the practical reading is simple. Iterate on cost, because the shot you approve is the shot you can reproduce at the lowest rate. Pay for speed only when the extra few seconds of latency matter. Treat quality as a separate roll of the dice and judge it on your own prompts.

Example generations

Below are the use-case clips, each with the exact prompt and parameters. All were fired once, so what you see is a first take, not a pick of several.

A dialogue scene for film and previs

Native audio is the reason to pick this model over a silent one, and spoken lines are the hardest test of it. I wrote one line of dialogue in quotes and left the default turbo upsampler on, as most people will.

Prompt used Night interior of a small diner booth, rain streaking the window behind them. An older woman in a grey wool coat slides a folded paper across the table to a younger man in a denim jacket. She says quietly: "Everything you need is in there. Don't open it here." He glances at the window, then pockets it. Medium two-shot, slow push-in. Sound: rain on glass, a distant kitchen clatter, the low buzz of a neon sign. No music.

Parameters resolution: 768p  |  mode: speed  |  duration: 8  |  aspect_ratio: 16:9  |  seed: 2026

768p speed, 8 seconds, billed $0.28. The spoken line came back word for word.

I ran the audio through Whisper and it transcribed "Everything you need is in there. Don't open it here." exactly, with good confidence, starting 0.64 seconds in. Rain, the clatter and the neon hum are all present underneath. The staging held: same booth, same lighting, same two people for the full 8 seconds, with the folded paper visible on the table. The one miss is the blocking: he never pockets the note, and the clip ends with his hand resting on it. For previs and storyboard animatics, that level of adherence is plenty.

A vertical social clip on the cheapest tier

For a channel or MCN producing short-form at volume, the interesting number is the floor. This is the cheapest configuration on the model: 480p, cost recipe, 9:16, and 10 seconds because that length bills honestly.

Prompt used Handheld vertical shot at a night street food stall: a cook flips sizzling skewers on a charcoal grill, smoke curling up through string lights, then hands one to a customer reaching into frame. Sound: loud sizzle and crackle of the grill, chatter of a busy market crowd, a scooter passing. No music.

Parameters resolution: 480p  |  mode: cost  |  duration: 10  |  aspect_ratio: 9:16  |  seed: 31

480p cost, 10 seconds, billed $0.10. 480x832, correctly oriented.

Ten seconds of usable vertical footage for ten cents. The cook flips the skewers, smoke rises through the string lights, and at the end he hands a skewer across to a reaching hand, which is the beat I asked for. The output is a true 480x832 portrait file, not a rotated landscape. One thing to watch for: the cook's apron picked up a small invented logo. If brand-safety matters, say "plain unbranded clothing" in the prompt.

A product reveal with a first-and-last-frame lock

For e-commerce and product marketing, the hard requirement is that the shot ends on the product, exactly as shot. That is what last_frame_image is for. I made two stills of the same scene (box closed, box open with a mug inside) and passed them as the first and last frames.

image · first frame

First frame input for Pruna P Video 2 Pro: closed black gift box on a marble counter

last_frame_image · final frame

Last frame input for Pruna P Video 2 Pro: open gift box with a speckled ceramic mug

The two stills I supplied. The model has to fill in everything between them.

Prompt used Two hands enter the frame, gently pull the satin ribbon loose and lift the lid off the gift box, setting it aside to reveal a speckled ceramic mug nestled in black tissue paper. Static camera, soft morning light. Sound: the soft slide of satin ribbon, a cardboard lid lifting, the crinkle of tissue paper, birdsong faintly through the window. No music.

Parameters image: first frame  |  last_frame_image: final frame (left clip only)  |  resolution: 768p  |  mode: speed  |  duration: 8  |  seed: 404

with last_frame_image

first frame only

Same prompt and seed. Left: locked to the final still. Right: free to end wherever it likes.

To put a number on it, I compared each clip's final frame with the still I supplied, as a mean pixel difference on a 0 to 255 scale. The two stills themselves are 54.0 apart. With the lock, the final frame landed 20.1 from the target. Without it, 76.8. The opening frames matched the first still at 4.5 in both cases. The locked clip also resolves well: the hands lift the mug into place and withdraw, and the shot settles onto the still with no visible jump in the last second. The unlocked version is a perfectly good unboxing, but the lid has vanished, the tissue is crumpled differently and the mug ends in a hand. For a product page, only the locked version is shippable.

Two things to know. You pay nothing extra for the images: both clips billed $0.28. And aspect_ratio is ignored when you send an image. I sent 9:16 with the locked clip, and it came back 1344x768 to match the 16:9 stills, exactly as documented.

The six-second clip

Prompt used A paper boat drifts down a rain-filled gutter past fallen autumn leaves, the camera tracking alongside at street level. Sound: running water, steady rain, a car passing on wet asphalt. No music.

Parameters resolution: 480p  |  mode: cost  |  duration: 6  |  aspect_ratio: 16:9  |  prompt_upsampler: off  |  seed: 5

Asked for 6 seconds, received 6.58, billed 7 at $0.01/s.

A nice slow tracking shot, and the clearest illustration of the billing step: one extra second on a $0.06 job is noise, but at 10,000 clips a month it is a 17% overspend on that length.

What developers should know

1. The seed only works with the upsampler off

The docs say the model is "reproducible with an explicit seed". It is, but only if you set prompt_upsampler to off. The default, turbo, rewrites your prompt before generation, and that rewrite is not seeded, so the model receives a different prompt on every call. When I tested this on launch, two runs at the same seed under turbo were no more alike than two runs at different seeds. With off, they are byte-identical, and today's repeated cost-mode fire confirmed it again. Turning it off costs nothing and tends to be faster.

2. A seed does not carry across recipes or resolutions

The model page suggests drafting at 480p and delivering at 768p, and using speed for drafts and quality for finals. Be careful what you expect from that. The quality clip above, at the same seed as its speed sibling, is a different shot. A cheap draft validates your wording, not your composition. If you need the approved draft and the delivered final to match, keep the recipe and resolution fixed and change nothing but the prompt.

3. Request 5, 8, 10 or 12 seconds

Covered above. Other lengths return a little more video and bill the next whole second. A tiny saving per clip, a real one at scale.

4. Validate your payloads yourself

Bad values for known parameters fail fast and free: sending mode: "bogus" returned an HTTP 400 in under a second listing the valid options. But when I tested this at launch, a parameter the model does not have at all was silently accepted and billed, so a typo in a key name will run a full generation with the default instead. Keep your payload keys in a typed config.

5. Retry 502s

One of my 11 video fires failed after 35 seconds with an HTTP 502 saying the provider's prediction "succeeded without a delivery URL". My request history shows it billed $0.00, and an identical retry worked first time. A single retry on 502 is the right policy.

6. Normalise audio before you cut clips together

Audio comes back as AAC at 32 kHz stereo, at very different levels. Average loudness across my clips ranged from -32.3 dB on the paper boat to -19.8 dB on the street stall. Run a loudness normalisation pass before you sequence clips, or the cuts will jump.

7. The output plays everywhere

Every clip came back as H.264 at 24 fps: 1344x768 at 768p 16:9, 832x480 at 480p 16:9, 480x832 at 480p 9:16. No HEVC, so the files drop straight into a <video> tag. Latency on my successful video fires ranged from 20.2 to 38.4 seconds, well under the 30-day average of 56.7 seconds that the spec quotes. Set a client timeout of a few minutes anyway.

Calling it from Python

import requests

API_KEY = "YOUR_SEGMIND_API_KEY"
URL = "https://api.segmind.com/v1/p-video-2-pro"

payload = {
    "prompt": (
        "Close-up of a barista pulling an espresso shot into a clear glass cup, "
        "warm morning light. Slow push-in. Sound: the hum of the espresso machine, "
        "the drip of coffee, quiet cafe chatter."
    ),
    "resolution": "768p",       # or "480p"
    "mode": "cost",             # "speed" (default), "quality" or "cost"
    "duration": 8,              # 5, 8, 10 and 12 bill exactly what you ask for
    "aspect_ratio": "16:9",     # ignored when you send an image
    "prompt_upsampler": "off",  # required if you want the seed to reproduce
    "seed": 777,
}

resp = requests.post(URL, headers={"x-api-key": API_KEY}, json=payload, timeout=600)
resp.raise_for_status()

with open("clip.mp4", "wb") as f:
    f.write(resp.content)

# What you were actually charged, in USD
print("billed:", resp.headers.get("x-cost"))

For the first-and-last-frame lock, add two URLs and drop the aspect ratio:

payload = {
    "prompt": "Two hands lift the lid off the gift box to reveal a ceramic mug. "
              "Static camera. Sound: ribbon sliding, tissue paper crinkling. No music.",
    "image": "https://your-cdn.com/box-closed.jpg",           # first frame
    "last_frame_image": "https://your-cdn.com/box-open.jpg",  # where the shot must land
    "resolution": "768p",
    "mode": "speed",
    "duration": 8,
}

The full parameter reference and a playground are on the P Video 2 Pro model page.

Where it sits in the Pruna family

Pruna ships several P-Video models on Segmind, and picking the right one is mostly about inputs:

ModelBest forResolutionLowest published rate
P Video 2 ProText, first frame or first-and-last-frame to video, generated audio480p, 768p$0.01/s (480p cost)
P Video 2Driving a clip from your own audio track, 1080p, 48 fps720p, 1080p$0.015/s (720p draft)
P Video EditEditing existing footageFollows the source clip$0.025/s (draft)
P Video AvatarTalking-head avatars720p, 1080p$0.03125/s (720p)

If you need 1080p or want to supply your own soundtrack, P Video 2 is the better fit. If you want the base model with 2K output, MiniMax H3 is on Segmind too (I wrote up its prompt and parameter behaviour here), but its published 768P rate is $0.10/s, four times P Video 2 Pro's 768p cost recipe at $0.025/s.

Honest assessment

What it does well. Spoken dialogue lands verbatim with ambience underneath, in a single call. The last-frame lock is precise enough for product work. And the cost recipe at 480p puts a 10 second clip with generated sound at ten cents.

Where it falls short. 768p is the ceiling, so it is not a hero-shot model for large screens. The rounding on in-between durations is a quiet tax. And the recipe names promise more than they deliver: cost is the same shot as speed rather than the same output, and quality gave me a different and, on this prompt, less accurate take.

Best fit: social and short-form at volume, product reveals that must end on a fixed frame, previs and dialogue tests. Not a fit: 1080p or 4K delivery, or workflows that start from an existing audio track.

FAQ

What is Pruna P Video 2 Pro?

Pruna P Video 2 Pro is a text-to-video and image-to-video model built on MiniMax H3 and tuned by Pruna for speed. It returns 5 to 15 second clips at 480p or 768p with native audio.

How much does Pruna P Video 2 Pro cost?

From $0.01 per second (480p, cost mode) to $0.075 per second (768p, quality mode). A 5 second 768p clip costs $0.125, $0.175 or $0.375 depending on the recipe.

What is the difference between speed, cost and quality mode?

In my test, cost and speed produced the same shot with small detail differences, and cost was 29% cheaper. Quality produced a different take at roughly 2x the speed price.

Is the seed reproducible?

Only with prompt_upsampler set to off. Then the same payload returns a byte-identical file. With the default turbo upsampler, the seed has no visible effect.

Does P Video 2 Pro generate audio and dialogue?

Yes. Every clip has stereo audio generated in the same pass. A quoted line of dialogue in my test was transcribed back word for word.

Can I control the last frame of the video?

Yes. Pass a last_frame_image along with a first-frame image. In my test the final frame landed close to the supplied still; without it, the shot ended somewhere else.

Wrapping up

Pruna P Video 2 Pro gets you a clip with generated sound from a cent a second, and the first-and-last-frame lock makes it genuinely useful for product work. Turn the upsampler off when you need repeatability, request 5, 8, 10 or 12 seconds, and start on the cost recipe before you pay for anything else. You can try P Video 2 Pro on Segmind in the playground or call it from the API with no setup.