About Video Restorer
Fix compression blocks or out-of-focus footage, same length and sound.
Call it with the model name popnow/video-restorer-v1/video-edit on POST /jobs/createTask, from $0.024.
Introduction
Video Restorer cleans up damaged footage without changing what happens in it. Choose decompress for clips that were squeezed by low bitrates and repeated re-uploads, or deblur for clips where the lens missed focus. Subjects, framing and motion stay where they were.
Request
{
"video_url": "https://example.com/clip.mp4",
"restore_mode": "decompress",
"resolution": "720p",
"prompt": "a woman with curly hair in a greenhouse full of orchids"
}Only video_url is required. restore_mode defaults to decompress and resolution to 720p. The aspect ratio is preserved and the output is never larger than the source, so a 480p clip comes back at 480p even if you ask for more.
What we saw in testing
We compressed a 4-second 854×480 greenhouse clip to 116 kbps, enough to turn the woman's face into blocks. In decompress mode at 480p it came back after about 55 seconds with her face, curls and the orchids clean, still 4 seconds at 24 fps with the stereo audio. A 4-second wine-cellar clip blurred to imitate missed focus came back in deblur mode after about 72 seconds with sharp faces and barrels.
Tips
debluris for focus blur. Motion blur and shaky footage are outside what it fixes.- To make a repaired clip bigger, send it to Video Upscaler (/api/video-upscaler-v1) afterwards.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | No | Describe what you want to make. |
resolution | No | Choose an available output size. 480p · 720p · 1080p · Default: 720p |
restore_mode | No | decompress removes the blocks, banding and smearing of heavy compression; deblur brings out-of-focus footage back into focus (not motion blur). Length, framing and sound stay the same. decompress · deblur · Default: decompress |
seed | No | Use the same seed and settings for more controlled comparisons. ≥ 0 · ≤ 2147483647 |
video_url | Yes | The clip to work on. |
Pricing
Prices are in USD. The API uses a separate USD balance. Website credits cannot be used or transferred to it, and API funds cannot be transferred to website credits. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
| Option | USD per second |
|---|---|
| resolution 480p | $0.024 |
| resolution 720p | $0.048 |
| resolution 1080p | $0.12 |
Send the same request body to POST /jobs/quote to see the estimated and maximum USD charge before running. A quote does not run the task or charge your balance.
API quick start
Call the Video Restorer API in three steps
- Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow-. API calls use your separate USD balance.
- Send the request. POST /jobs/createTask with model popnow/video-restorer-v1/video-edit and an input object that follows the parameter table. The response returns a task ID straight away.
- Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{
"model": "popnow/video-restorer-v1/video-edit",
"input": {
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"restore_mode": "decompress",
"resolution": "720p"
}
}'
# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $POPNOW_API_KEY"Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.
Video Restorer API questions
How much does the Video Restorer API cost?
Video Restorer costs $0.024 per second. Prices by option: 480p $0.024 per second, 720p $0.048 per second, 1080p $0.12 per second. The API uses a separate USD balance. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
What is the model name for Video Restorer in the API?
Put popnow/video-restorer-v1/video-edit for Video Restorer in the model field of POST /jobs/createTask.
How is this different from Video Upscaler?
Video Upscaler (/models/video-upscaler-v1) makes a clean clip bigger, up to 4K. Video Restorer repairs damage, either compression blocks or soft focus, and never makes the frame larger than the source. For a damaged low-resolution clip, restore first and upscale second.
Does it change the people or the motion?
Framing and motion stay the same. On heavily compressed faces, detail is rebuilt from very little information: in our decompress test the woman's face came back sharp and natural, but fine features are a reconstruction, so check close-ups.
Is the sound kept?
Yes. Our restored clips kept their stereo audio track, their length and their 24 fps frame rate.
How is it billed?
Per second of the source clip at the resolution you select, rounded up, with a 3-second minimum. Clips must be 120 seconds or shorter.
What are the limits of the Video Restorer API?
Resolutions: 480p · 720p · 1080p; Prompt length (characters): 1,000; Longest input clip: 120 s. Requests outside these limits are rejected before anything is charged.
Can I try Video Restorer without writing code?
Run Video Restorer in the Playground with your API USD balance, without an API key. Each run appears in your developer history with its matching code.