Topaz Video Upscaler gives you Topaz Labs' video enhancement without installing anything. Send a clip and it comes back at twice the resolution, with compression mush and soft detail cleaned up along the way. Duration and frame timing do not change, so the upscaled file slots right back into your edit timeline.
What you can make
- 4K deliverables from AI clips rendered at 1080p.
- Better-looking versions of compressed phone or social media footage.
- Sharper finals for short clips from fast models like Seedance 2.0 Fast.
- Upscaled archive material that has to sit next to newer, sharper footage.
Settings that matter
- Scale: fixed at 2x in Kadraris. The 1x cleanup and 4x options are not available yet.
- What you get: 1080p in, roughly 4K out; 720p in, roughly 1440p out.
- Files: MP4, MOV or MKV, up to 50 MB, as a public URL. Split longer videos into parts.
- Billing basis: each second of the source, measured on the server. Trim heads and tails before uploading.
- Fixed target size: if you need a specific output resolution, Enhance Video 1.0 lets you choose it.
Example job
input: video_url = https://example.com/clip-1080p.mp4
result: the same clip at about 4K, same lengthCut the clip to the exact shot you will use; every extra second of source is billed.
Questions
What does Topaz Video Upscaler cost?
$0.11 per second of the source video. A failed job costs nothing.
Will my 24 fps clip still be 24 fps?
Yes. The tool keeps length and frame timing as they were, so audio sync and edits stay in place.
Topaz or Enhance Video 1.0?
Topaz is a fixed 2x restore. Enhance Video lets you pick the result size. The comparison and the 4K upscaling guide go through both.
Topaz Video Upscaler in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "topaz-video-upscaler",
"input": {
"video_url": "https://example.com/input.mp4"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "topaz-video-upscaler",
"input": {
"video_url": "https://example.com/input.mp4"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "topaz-video-upscaler",
"input": {
"video_url": "https://example.com/input.mp4"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
video_url * | string |
Fetch this list as JSON with GET /v1/models/topaz-video-upscaler.
























