Topaz Video Upscale
Pro-grade video upscale and frame interpolation, up to 4K.
POST /v2/videos/upscale — model: "topaz-video-upscale"
Topaz Labs' video upscaler. Combines spatial super-resolution with frame interpolation, supporting outputs up to 4K at 60 fps. Same engine post-houses use for archival restoration. This is an enhancement model — it does not take a prompt and does not change the content of the clip.
See Video Upscale overview for common request fields, response format, and error codes.
Model-specific parameters
All fields below live inside the topazVideoParams object.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
video | string | Yes | — | Source video URL (mp4, mov, or webm). |
target_resolution | string | Yes | — | Output resolution. One of "720p", "1080p", "4k". |
target_fps | number | Yes | — | Output frame rate. One of 24, 30, 60. Values above the source fps add interpolated frames. |
enhance_model | string | No | "auto" | Topaz enhancement preset. One of "auto", "theia-fine-tune-detail" (sharp detail), "theia-fine-tune-fidelity" (faithful), "apollo" (motion), "rhea" (animation), "iris". |
subject_detection | string | No | "all" | Which region to prioritize. One of "all", "foreground", "background", "none". |
There is no top-level prompt field for this endpoint.
Credit cost
Pricing is per second of input video, tiered by output resolution and output fps. The route probes the input video's duration via ffprobe at submit time and charges cost-per-second × ceil(duration).
| Resolution | 24 fps | 30 fps | 60 fps |
|---|---|---|---|
| 720p | 1 | 1 | 2 |
| 1080p | 4 | 4 | 7 |
| 4K | 13 | 13 | 26 |
A 10-second clip at 1080p / 30 fps therefore costs 4 × 10 = 40 credits.
Example result
Once the job is COMPLETED, the result object on GET /v2/jobs/:id looks like:
{
"videoUrl": "https://cdn2.apiframe.ai/videos/b2c3d4e5-f6a7-8901-bcde-f23456789012.mp4"
}videoUrl is the processed video.
Code examples
curl -X POST https://api.apiframe.ai/v2/videos/upscale \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "topaz-video-upscale",
"topazVideoParams": {
"video": "https://example.com/clip.mp4",
"target_resolution": "1080p",
"target_fps": 30,
"enhance_model": "auto"
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/videos/upscale",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"model": "topaz-video-upscale",
"topazVideoParams": {
"video": "https://example.com/clip.mp4",
"target_resolution": "1080p",
"target_fps": 30,
"enhance_model": "auto",
},
},
)
print(response.json())const response = await fetch("https://api.apiframe.ai/v2/videos/upscale", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "topaz-video-upscale",
topazVideoParams: {
video: "https://example.com/clip.mp4",
target_resolution: "1080p",
target_fps: 30,
enhance_model: "auto",
},
}),
});
console.log(await response.json());Try it
/v2/videos/upscaleTry it