P-Video-Upscale
P-Video-Upscale is Pruna’s video upscaling model. Send an existing video and a resolution target. It returns a your video with the selected higher resolution at 720p, 1080p, 2k, or 4k. There is no prompt.
It sharpens what is already in the frame. The aspect ratio stays the same, the source audio is copied, and a clip that is already larger than the target is not shrunk.
It is optimized for:
Live action, anime, game footage, and archival film
Targets of 720p, 1080p, 2k, and 4k
Keeping shape, sound, and motion
Price: $0.01 per second at 720p, $0.02 at 1080p, $0.04 at 2k, $0.08 at 4k, up to 30 fps. Above 30 fps the rate doubles.
Not sure how this differs from the rest of the video models? See Choosing the right video model below.
Note
When using P-Video-Upscale, respect the copyright of videos you use as input and of the video you generate.
Pricing: billed per second of the returned video, rounded up to the next whole second. The rate depends on the target and on the frame rate of the returned video. turbo does not change the price. A 60 fps source is billed at the above-30-fps rate even when fps is left empty.
720p |
1080p |
2k |
4k |
|
|---|---|---|---|---|
Per output second, up to 30 fps |
$0.01 |
$0.02 |
$0.04 |
$0.08 |
5 seconds |
$0.05 |
$0.10 |
$0.20 |
$0.40 |
10 seconds |
$0.10 |
$0.20 |
$0.40 |
$0.80 |
Per output second, above 30 fps |
$0.02 |
$0.04 |
$0.08 |
$0.16 |
Tip
Try in the Playground in the Pruna User Portal. API reference: p-video-upscale on Pruna API.
What you send
Standard
One source clip and the default target. Enough for a 1080p delivery.
Smoother motion
Same clip, plus a frame rate. Frames above the source rate are interpolated. Above 30 fps the price doubles.
target: 1080p.target: 1080p, fps: 60.video: required source clip. Maximum upload size 512 MiB. Aspect ratio, audio, and length come from this file.Examples: a campaign plate, UGC take, game capture, anime shot, or archival reel.
target:720p,1080p,2k, or4k. Default1080p. These are pixel-area presets. A 16:9 frame at 1080p is 1920×1080. A 9:16 frame at the same target is 1080×1920. A square frame is 1440×1440.fps: optional, 16 to 60. Leave it empty to keep the source frame rate. A value below the source drops frames. A value above the source interpolates. Above 30 fps the price for that target doubles. Values below 16 or above 60 are rejected.turbo: optional, defaultfalse. Faster generation with slightly lower quality. Same price and same output size.
Slot |
Standard (enough to run) |
When you need more |
|---|---|---|
|
Any clip you already have. |
Same clip every run when comparing targets. |
|
|
|
|
Empty. The source frame rate is kept. |
Set |
|
|
|
There is no prompt, no aspect_ratio, and no duration. The source sets the shape and the length.
How does it differ from other models?
P-Video-Upscale raises the resolution of footage you already have. It does not write a new scene.
P-Image-Upscale does the same job for a still.
P-Video-Edit rewrites what is in the shot: color, material, environment, objects, text, lighting.
P-Video-Replace swaps people in a clip.
P-Video-Animate moves a still using a driver clip’s motion.
Choosing the right video model
Pruna ships performance video models that share the same prediction API, but each solves a different production problem. P-Video-Upscale uses the p-video-upscale model (Model: p-video-upscale header) and requires an existing source video.
One-line job |
Speak from one still |
Generate cinematic footage from prompts + references |
Generate cinematic footage from prompts |
Generate premium footage from prompts |
Generate fast / affordable footage |
Speak from one still (script or audio) |
Retarget one still with clip motion |
Swap characters in existing footage |
Rewrite content in existing footage |
Sharpen existing footage |
You start with |
Portrait still + |
Prompt + at least one image or video (+ optional audio, start / end frames) |
Text prompt (+ optional first / last frame) |
Text prompt (+ optional image / audio) |
Text prompt (+ optional image / audio) |
Portrait still + |
Source video + one still |
Source video + identity stills |
Source video + text prompt |
Source video |
You keep from the source |
Aspect ratio of the still; uploaded audio as soundtrack |
Identity, motion, and canvas from the uploaded references |
N/A (new scene); canvas follows reference images when set |
N/A (new scene); strong I2V consistency when an image is set |
N/A (new scene) |
Aspect ratio of the still |
Motion, timing, camera from the driver |
Camera, timing, blocking, background |
Camera, timing, subject performance |
Aspect ratio, audio, motion, and length |
Typical ask |
“This person, painting, or character says this line — or sings this track.” |
“Continue this clip / match these stills for 8 s at 768p.” |
“Make an 8 s cinematic product or documentary clip with generated audio.” |
“Make a 10 s product ad with music and lip-sync.” |
“Draft a 5 s social clip cheaply and fast.” |
“This spokesperson says this line in French.” |
“Animate this catalog still using our winning ad take.” |
“Put our creator in this UGC b-roll.” |
“Turn this silver SUV red and keep the camera move.” |
“Take this 360p clip to 1080p.” |
Generation time (5 s video) |
~4.9 s (480p) · ~11 s (768p) |
4.0 s (768p |
4.3 s (768p |
4.5 s (draft: 2.0 s) |
9.3 s |
— |
26.2 s (720p) |
~17.9 s (720p) |
— |
~6.7 s (720p) · ~14 s (1080p) |
Cost (5 s video) |
$0.10 (480p) · $0.20 (768p) |
$0.130 (768p |
$0.125 (768p |
$0.13 (draft: $0.08) |
$0.10 (draft: $0.03) |
$0.125 (720p) · $0.225 (1080p) |
$0.15 (720p) · $0.30 (1080p) |
$0.15 (720p) · $0.30 (1080p) |
$0.225 (draft: $0.125) |
$0.05 (720p) · $0.10 (1080p) |
Draft mode |
No |
No |
No |
Yes |
Yes |
No |
No |
No |
Yes |
No |
Quick decision guide
No source video yet → use P-Video-2, P-Video-2-Pro, or P-Video to create the plate, or P-Video-2-Pro-Avatar / P-Video-Avatar if you only need a talking head from a still.
Footage exists and the hero still should move like the driver → P-Video-Animate.
Footage exists and you need different people in the same shot → P-Video-Replace.
Footage exists and you need a different color, product, environment, object, or on-screen text → P-Video-Edit.
Footage exists and you only need it sharper → P-Video-Upscale.
Tip
Common pipeline: Generate plates with P-Video-2 / P-Video or shoot live action → edit with P-Video-Edit if the content must change → P-Video-Upscale as the last pass.
Speed and throughput
Metric |
P-Video-Upscale |
|---|---|
Execution time (5 s clip at 720p) |
~6.7 s |
Execution time (5 s 360p clip at 1080p) |
~14 s |
Cost (5 s, up to 30 fps) |
$0.05 at 720p · $0.10 at 1080p · $0.20 at 2k · $0.40 at 4k |
Rate limit |
50 requests per minute |
Max upload |
512 MiB |
turbo: true is the faster pass. It does not change the price or the output size. Compare it with turbo: false on your own footage before making it the default.
Key features
- Resolution targets
One field,
target:720p,1080p,2k, or4k. For a 16:9 source those are 1280×720, 1920×1080, 2560×1440, and 3840×2160.- Aspect ratio kept
Vertical, square, 4:3, and cinema frames come back in their own shape. There is no
aspect_ratioinput.- Audio kept
The source audio is copied into the output. A silent source returns a silent video. Nothing to re-sync.
- Frame rate
Leave
fpsempty to keep the source rate, up to 60 fps. Set it from 16 to 60 to drop or interpolate frames.- No shrink
A source already larger than the target is returned at its original size. A 1080p clip sent with
target: 720pcomes back 1920×1080.- Turbo
turbo: truetrades a little quality for speed. Same price.
Targets and output sizes
Each target is a pixel budget. The output keeps the source shape and fills that budget.
Source shape |
720p |
1080p |
2k |
4k |
|---|---|---|---|---|
16:9 |
1280×720 |
1920×1080 |
2560×1440 |
3840×2160 |
9:16 |
720×1280 |
1080×1920 |
1440×2560 |
2160×3840 |
1:1 |
960×960 |
1440×1440 |
1920×1920 |
2880×2880 |
A 4:3 source at 1080p returns 1660×1246. A 21:9 source at 1080p returns 2200×942.
Practical constraints
Upload size maximum is 512 MiB. Output is an H.264 MP4 with the selected higher resolution at 720p, 1080p, 2k, or 4k.
Length is capped by processed frames, not by a fixed duration. Past the cap the request is rejected.
Target |
Frame cap |
At 24 fps |
At 30 fps |
|---|---|---|---|
720p |
2,400 |
100 s |
80 s |
1080p |
1,200 |
50 s |
40 s |
2k |
600 |
25 s |
20 s |
4k |
300 |
12.5 s |
10 s |
Above 30 fps, 30 frames per second are processed and the rest are interpolated, so a 60 fps output uses the same cap as 30 fps.
fpsbelow 16 or above 60 is rejected.Upscaling sharpens what is in the frame. Small text that is unreadable in the source (signs, labels, engravings) can come out as the wrong letters. Check clips with on-screen text before shipping them.
The model stops at 4k. It does not extend a clip and it does not change the scene.
Examples
The clips below are source ↔ output compares from the same calls. Open a tab for the job: any footage, close-up detail, a resolution step, a non-16:9 frame, sound, frame rate, or the 1080p benchmark.
API usage
Get your API key from the Pruna User Portal. Use the same header on every call:
-H 'apikey: YOUR_API_KEY'
Step 1: Upload your source video
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: YOUR_API_KEY" \
-F "content=@/path/to/source-video.mp4"
Step 2: Upscale the video
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H 'apikey: YOUR_API_KEY' \
-H 'Model: p-video-upscale' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"target": "1080p"
}
}'
Synchronous request (4k, turbo)
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H 'apikey: YOUR_API_KEY' \
-H 'Model: p-video-upscale' \
-H 'Try-Sync: true' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"target": "4k",
"turbo": true
}
}'
60 fps
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H 'apikey: YOUR_API_KEY' \
-H 'Model: p-video-upscale' \
-d '{
"input": {
"video": "https://api.pruna.ai/v1/files/source-video-abc123",
"target": "1080p",
"fps": 60
}
}'
Configuration
Required parameters
Parameter |
Type |
Description |
|---|---|---|
video |
string (URI) |
Input video to upscale. Maximum upload size: 512 MiB. |
Optional parameters
Parameter |
Type |
Default |
Description |
|---|---|---|---|
target |
string |
|
|
fps |
integer |
source frame rate |
16 to 60. Omit it to keep the source frame rate. Below the source drops frames. Above the source interpolates. Above 30 fps the price doubles. |
turbo |
boolean |
|
Faster generation with slightly lower quality. Does not change the price or the output size. |
Argument recommendations
Modelheader:p-video-upscale.video: any existing clip under 512 MiB. The source sets the shape, the sound, and the length.target:1080pfor a standard delivery.720pwhen price matters.2kor4kfor large screens. A shorter clip or a lower target is the way past the frame cap.fps: leave it empty unless you want a different rate. Set60for smoother playback and expect the doubled rate.turbo: leavefalsefor the final. Turn it on when you need the same size faster.Do not send a prompt. This model does not take one.