Video Upscaler Pro
Playground
Try it on WavespeedAI!The AI Video Upscaler Pro is our flagship model that redefines video enhancement. This cutting-edge AI technology transforms low-resolution, low-quality videos into stunning 4K cinematic masterpieces with seamless motion dynamic and perfect frame consistency. Get ready for unparalleled video quality that outperforms all other AI upscalers.
Features
AI Video Upscaler
Upscale videos to 720p, 1080p, 2K, or 4K with a simple upload. This is the most advanced video upscaler in the world, delivering the highest output quality and exceptional frame-to-frame consistency. If you want a cheaper option, try our Standard Video Upscaler instead. No local setup required.
Why it looks great
- Temporal consistency: minimizes flicker and ghosting across frames for stable motion.
- Detail reconstruction: restores fine textures (hair, fabric, foliage) and sharp edges without over-sharpening.
- Artifact cleanup: reduces compression blocks, ringing, and shimmering in challenging shots.
- Motion-aware upscaling: preserves fast action and camera pans with fewer motion artifacts.
- Natural look: balances perceptual quality with crispness to avoid plastic or overprocessed outputs.
Limits and Performance
- Max clip length per job: up to 10 minutes
- Processing speed: approximately 10–30 seconds of wall time to process 1 second of video (varies by resolution and queue load)
Pricing
Per-second billing with a 5-second minimum. The table below lists prices per 5 seconds for easy comparison.
Output Resolution | Cost per 5 seconds |
---|---|
720p | $0.10 |
1080p | $0.15 |
2K | $0.20 |
4K | $0.25 |
Billing Rules
- Minimum charge: 5 seconds
- Per-second rate = (price per 5 seconds) ÷ 5
- Billed duration = video length in seconds (rounded up), with a 5-second minimum
- Total cost = billed duration × per-second rate (by output resolution)
Examples
- 3.2s @ 1080p → billed as 5s minimum → 5 × $0.03 = $0.15
- 12s @ 1080p → 12 × $0.03 = $0.36
- 23s @ 2K → per-second $0.04 → 23 × $0.04 = $0.92
- 2m01s (121s) @ 4K → per-second $0.05 → 121 × $0.05 = $6.05
How to Use
- Choose the target resolution and parameters.
- Upload your video (≤ 10 minutes).
- Submit the job and wait for processing.
- Preview and download the result.
Pro tips for best quality
- Upload the highest-quality source you have; avoid heavily compressed inputs when possible.
- Keep original frame rate; avoid unnecessary re-encoding before upload.
- Pick the lowest resolution that meets your delivery needs (1080p = speed/cost, 2K/4K = maximum detail).
- For long videos, process in segments to parallelize and then merge.
Notes
- Actual processing time may vary based on resolution, model choice, and current queue.
- For videos longer than 10 minutes, split into multiple segments, process separately, and merge afterward.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/video-upscaler-pro" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"video": "",
"target_resolution": "1080p"
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
Parameter | Type | Required | Default | Range | Description |
---|---|---|---|---|---|
video | string | Yes | - | The video to upscale. | |
target_resolution | string | No | 1080p | 720p, 1080p, 2k, 4k | Target resolution to upscale to. |
Response Parameters
Parameter | Type | Description |
---|---|---|
code | integer | HTTP status code (e.g., 200 for success) |
message | string | Status message (e.g., “success”) |
data.id | string | Unique identifier for the prediction, Task Id |
data.model | string | Model ID used for the prediction |
data.outputs | array | Array of URLs to the generated content (empty when status is not completed ) |
data.urls | object | Object containing related API endpoints |
data.urls.get | string | URL to retrieve the prediction result |
data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
data.status | string | Status of the task: created , processing , completed , or failed |
data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
data.error | string | Error message (empty if no error occurred) |
data.timings | object | Object containing timing details |
data.timings.inference | integer | Inference time in milliseconds |
Result Query Parameters
Result Request Parameters
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
id | string | Yes | - | Task ID |
Result Response Parameters
Parameter | Type | Description |
---|---|---|
code | integer | HTTP status code (e.g., 200 for success) |
message | string | Status message (e.g., “success”) |
data | object | The prediction data object containing all details |
data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
data.model | string | Model ID used for the prediction |
data.outputs | array | Array of URLs to the generated content (empty when status is not completed ) |
data.urls | object | Object containing related API endpoints |
data.urls.get | string | URL to retrieve the prediction result |
data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
data.status | string | Status of the task: created , processing , completed , or failed |
data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
data.error | string | Error message (empty if no error occurred) |
data.timings | object | Object containing timing details |
data.timings.inference | integer | Inference time in milliseconds |