ApiframeApiframe Docs
Video Upscale

Topaz Video Upscale

Pro-grade video upscale and frame interpolation, up to 4K.

POST /v2/videos/upscalemodel: "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.

ParameterTypeRequiredDefaultDescription
videostringYesSource video URL (mp4, mov, or webm).
target_resolutionstringYesOutput resolution. One of "720p", "1080p", "4k".
target_fpsnumberYesOutput frame rate. One of 24, 30, 60. Values above the source fps add interpolated frames.
enhance_modelstringNo"auto"Topaz enhancement preset. One of "auto", "theia-fine-tune-detail" (sharp detail), "theia-fine-tune-fidelity" (faithful), "apollo" (motion), "rhea" (animation), "iris".
subject_detectionstringNo"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).

Resolution24 fps30 fps60 fps
720p112
1080p447
4K131326

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

POST/v2/videos/upscaleTry it

On this page