Skip to main content
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:
  1. Queue — Submit your video to /video/queue with the topaz-video-upscale model
  2. Poll — Check /video/retrieve with the returned queue_id until the status is completed
  3. 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_factorOutput resolutionUse case
1Same as inputQuality enhancement only (denoising, sharpening)
2 (default)2x input dimensionsStandard upscale — 720p input becomes 1440p output
44x input dimensionsMaximum 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.

Supported input formats

  • 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

FieldTypeRequiredDescription
modelstringYesMust be topaz-video-upscale
video_urlstringYesInput video URL or data URL. Supported formats: MP4, MOV, WebM.
upscale_factornumberNo1, 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:
FieldReason
resolutionUse upscale_factor instead. Output resolution depends on input dimensions.
input_fpsFPS is detected automatically from the video file.
promptUpscaling 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

TierOutput heightPer-second rate
720p≤ 720px~$0.013
1080p721–1080px~$0.025
4K> 1080px~$0.10
Videos with frame rates above 48fps cost 2x the per-second rate.

Pricing examples

InputUpscale factorOutputDurationEstimated cost
480p, 30fps2x960p (1080p tier)10s~$0.25
720p, 30fps2x1440p (4K tier)10s~$1.00
1080p, 30fps2x2160p (4K tier)30s~$3.00
360p, 24fps4x1440p (4K tier)10s~$1.00
480p, 60fps2x960p (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

ProblemLikely causeFix
"Use upscale_factor instead of resolution"resolution was passed in the requestRemove resolution and use upscale_factor instead
"input_fps is not supported"input_fps was passed in the requestRemove input_fps — FPS is detected from the video
Higher-than-expected costInput video has high resolution or high FPSCheck input dimensions with the quote endpoint. 720p+ input with 2x upscale lands in the 4K pricing tier.
Job takes a long timeLarge or long videoUpscaling is compute-intensive. Longer videos and higher upscale factors take proportionally longer.
"Insufficient balance"Account credits too lowAdd credits at venice.ai/settings/api