p-video-2-pro
p-video-pro video generation from text and first/last-frame images by Pruna, built on Minimax H3
p-video-2-pro is Pruna's video generation model, built on Minimax H3. It supports text-to-video and first/last-frame conditioning at 480p and 768p, plus 1080p, 2k and 4k, which upscale the 768p video with p-video-upscale (24 fps kept). Duration is 5–15 seconds (default 5). Output is 24 fps and includes generated audio. Audio input is not exposed.
mode selects the generation recipe: speed (default, faster), quality, or cost. prompt_upsampler is independent: off, turbo (default), or max.
Rate Limit: 250 requests per minute
Category: Video Generation
Pricing: billed per second of the video returned.
| Configuration | Price |
|---|---|
| 480p, mode=cost | $0.01 per second |
| 480p, mode=speed | $0.02 per second |
| 480p, mode=quality | $0.04 per second |
| 768p, mode=cost | $0.025 per second |
| 768p, mode=speed | $0.035 per second |
| 768p, mode=quality | $0.075 per second |
| 1080p, mode=cost | $0.045 per second |
| 1080p, mode=speed | $0.055 per second |
| 1080p, mode=quality | $0.095 per second |
| 2k, mode=cost | $0.065 per second |
| 2k, mode=speed | $0.075 per second |
| 2k, mode=quality | $0.115 per second |
| 4k, mode=cost | $0.105 per second |
| 4k, mode=speed | $0.115 per second |
| 4k, mode=quality | $0.155 per second |
The length is measured from the finished video rather than from the request, so the final price is known once generation completes. Omitted mode is billed as speed. 1080p, 2k and 4k are the 768p rate plus the p-video-upscale rate for that target (+$0.02, +$0.04 and +$0.08 per second). prompt_upsampler does not change the price. The table shows list prices; until October 13, 2026 the billed rate is 50% off.
Quickstart
Section titled “Quickstart”Text-to-Video (Asynchronous)
Section titled “Text-to-Video (Asynchronous)”curl -X POST 'https://api.pruna.ai/v1/predictions' \ -H 'Content-Type: application/json' \ -H 'apikey: YOUR_API_KEY' \ -H 'Model: p-video-2-pro' \ -d '{ "input": { "prompt": "A sports car drifting through a neon-lit city at night, cinematic aerial shot", "duration": 5, "resolution": "768p", "aspect_ratio": "16:9" } }'Text-to-Video (Synchronous)
Section titled “Text-to-Video (Synchronous)”curl -X POST 'https://api.pruna.ai/v1/predictions' \ -H 'Content-Type: application/json' \ -H 'apikey: YOUR_API_KEY' \ -H 'Model: p-video-2-pro' \ -H 'Try-Sync: true' \ -d '{ "input": { "prompt": "A sports car drifting through a neon-lit city at night, cinematic aerial shot", "duration": 5, "resolution": "480p", "mode": "speed" } }'Image-to-Video (first frame)
Section titled “Image-to-Video (first frame)”curl -X POST "https://api.pruna.ai/v1/files" \ -H "apikey: YOUR_API_KEY" \ -F "content=@/path/to/your/file.jpg"curl -X POST 'https://api.pruna.ai/v1/predictions' \ -H 'Content-Type: application/json' \ -H 'apikey: YOUR_API_KEY' \ -H 'Model: p-video-2-pro' \ -d '{ "input": { "prompt": "The camera slowly pushes in, the person turns their head and smiles", "image": "https://api.pruna.ai/v1/files/fqadqq42xq", "duration": 5, "resolution": "768p" } }'Parameters
Section titled “Parameters”Required Parameters
Section titled “Required Parameters”| Parameter | Type | Description |
|---|---|---|
| prompt | string | Text prompt for video generation |
Optional Parameters
Section titled “Optional Parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
| prompt_upsampler | string | "turbo" | Expand the prompt before generation: "off", "turbo", or "max". Independent of mode |
| image | string (URI) | — | First-frame reference image |
| last_frame_image | string (URI) | — | Last-frame reference image |
| duration | integer | 5 | Video duration in seconds (5-15) |
| resolution | string | "768p" | "480p", "768p", "1080p", "2k" or "4k". 1080p, 2k and 4k upscale the 768p video |
| mode | string | "speed" | Generation recipe: "quality", "speed", or "cost" |
| aspect_ratio | string | "16:9" | "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "1:1". Reference images determine the canvas when provided |
| seed | integer | random | Random seed for reproducible generation |
| enable_safety_filter | boolean | false | Check the inputs against the content policy. When off, only the always-on categories (sexual content involving minors, self-harm intent or instructions) are still blocked. |