Video upscaling lets you enhance existing videos to higher resolutions while improving visual quality. The Topaz Video Upscale model uses AI-powered upscaling to increase resolution by 2x or 4x, or apply quality enhancement at the original resolution (1x).
How it works
Video upscaling uses the same async queue system as video generation:
- Queue — Submit your video to
/video/queue with the topaz-video-upscale model
- Poll — Check
/video/retrieve with the returned queue_id until the status is completed
- Complete — Call
/video/complete to finalize and get the output URL
The server automatically detects the input video’s duration, frame rate, and dimensions from the uploaded file. You don’t need to provide these values — billing is calculated from the actual video metadata.
Upscale factors
upscale_factor | Output resolution | Use case |
|---|
1 | Same as input | Quality enhancement only (denoising, sharpening) |
2 (default) | 2x input dimensions | Standard upscale — 720p input becomes 1440p output |
4 | 4x input dimensions | Maximum upscale — 480p input becomes 1920p output |
The upscale_factor parameter replaces resolution for upscale models. Passing resolution will return an error. This is because the output resolution depends on the input video’s dimensions — a 2x upscale of a 720p video produces a different result than a 2x upscale of a 480p video.
- Formats: MP4, MOV, WebM
- Input methods: HTTPS URL or
data:video/...;base64,... data URL
- Max duration: 300 seconds (5 minutes)
API usage
Queue an upscale job
curl https://api.venice.ai/api/v1/video/queue \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "topaz-video-upscale",
"video_url": "https://example.com/input-video.mp4",
"upscale_factor": 2
}'
The response includes a queue_id to track the job:
{
"model": "topaz-video-upscale",
"queue_id": "abc123-def456-..."
}
Poll for completion
curl https://api.venice.ai/api/v1/video/retrieve \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"queue_id": "abc123-def456-..."}'
Finalize with complete
After retrieving the result, call /video/complete to finalize:
curl https://api.venice.ai/api/v1/video/complete \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"queue_id": "abc123-def456-..."}'
API parameters
| Field | Type | Required | Description |
|---|
model | string | Yes | Must be topaz-video-upscale |
video_url | string | Yes | Input video URL or data URL. Supported formats: MP4, MOV, WebM. |
upscale_factor | number | No | 1, 2 (default), or 4. Controls the upscale multiplier. |
Parameters not used for upscale models
The following parameters are not accepted for topaz-video-upscale and will return an error if provided:
| Field | Reason |
|---|
resolution | Use upscale_factor instead. Output resolution depends on input dimensions. |
input_fps | FPS is detected automatically from the video file. |
prompt | Upscaling does not use text prompts. An empty string is set automatically. |
The duration parameter is also ignored — the server detects duration directly from the video file for billing accuracy.
Pricing
Pricing is based on duration, output resolution tier, and frame rate. The output resolution tier is determined by the input video’s height multiplied by the upscale factor.
Output resolution tiers
| Tier | Output height | Per-second rate |
|---|
| 720p | ≤ 720px | ~$0.013 |
| 1080p | 721–1080px | ~$0.025 |
| 4K | > 1080px | ~$0.10 |
Videos with frame rates above 48fps cost 2x the per-second rate.
Pricing examples
| Input | Upscale factor | Output | Duration | Estimated cost |
|---|
| 480p, 30fps | 2x | 960p (1080p tier) | 10s | ~$0.25 |
| 720p, 30fps | 2x | 1440p (4K tier) | 10s | ~$1.00 |
| 1080p, 30fps | 2x | 2160p (4K tier) | 30s | ~$3.00 |
| 360p, 24fps | 4x | 1440p (4K tier) | 10s | ~$1.00 |
| 480p, 60fps | 2x | 960p (1080p tier) | 10s | ~$0.50 |
Use the Video Quote API to get exact pricing before submitting a job.
Getting a quote
curl https://api.venice.ai/api/v1/video/quote \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "topaz-video-upscale",
"duration": "10",
"input_fps": 30,
"input_height": 720
}'
The quote endpoint accepts input_height and input_fps so it can estimate the output resolution tier and fps multiplier. These are optional — if omitted, the quote assumes a conservative estimate.
Troubleshooting
| Problem | Likely cause | Fix |
|---|
"Use upscale_factor instead of resolution" | resolution was passed in the request | Remove resolution and use upscale_factor instead |
"input_fps is not supported" | input_fps was passed in the request | Remove input_fps — FPS is detected from the video |
| Higher-than-expected cost | Input video has high resolution or high FPS | Check input dimensions with the quote endpoint. 720p+ input with 2x upscale lands in the 4K pricing tier. |
| Job takes a long time | Large or long video | Upscaling is compute-intensive. Longer videos and higher upscale factors take proportionally longer. |
"Insufficient balance" | Account credits too low | Add credits at venice.ai/settings/api |