enhance-video-1.0
Async video quality enhancement — upscale, denoise, deblock, smart frame interpolation, and color refinement up to 4K with two quality tiers and five scene presets.
enhance-video-1.0 is a single async endpoint that takes a source video URL and
returns a higher-quality MP4 — upscaled, denoised, smart-interpolated, with
optional scene-aware restoration. Two quality tiers (standard /
professional) and five scene presets cover everything from AI-generated
footage to old-film restoration. See current pricing on the
model page.
Quick example
curl https://reapi.ai/api/v1/videos/generations \
-H "Authorization: Bearer rk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "enhance-video-1.0",
"video_url": "https://cdn.example.com/source_720p.mp4",
"tool_version": "standard",
"scene": "aigc",
"resolution": "1080p"
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/videos/generations",
headers={
"Authorization": "Bearer rk_live_xxx",
"Content-Type": "application/json",
},
json={
"model": "enhance-video-1.0",
"video_url": "https://cdn.example.com/source_720p.mp4",
"tool_version": "standard",
"scene": "aigc",
"resolution": "1080p",
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer rk_live_xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "enhance-video-1.0",
video_url: "https://cdn.example.com/source_720p.mp4",
tool_version: "standard",
scene: "aigc",
resolution: "1080p",
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "enhance-video-1.0",
"video_url": "https://cdn.example.com/source_720p.mp4",
"tool_version": "standard",
"scene": "aigc",
"resolution": "1080p",
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/videos/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer rk_live_xxx")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "enhance-video-1.0",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} until status === "completed". The completed
payload's output.video_urls holds the enhanced MP4 URL.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/videos/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; polling
the task endpoint returns the same envelope until completion. Polling does
not consume credits.
Request body
model — required
Always "enhance-video-1.0".
video_url — required (string)
Public HTTP/HTTPS URL of the source video.
- Allowed schemes:
http://,https://only. Base64 /data:URIs are rejected. - Formats: mp4, flv, ts, avi, mov, wmv, mkv (and most other mainstream containers).
- Size: up to 10 GB per file.
- Duration: up to 2 hours.
- Input resolution: up to 2K (short side ≤ 1440 px). Use
resolution: "4k"to upscale beyond the source.
tool_version — optional ("standard" | "professional")
Default: "standard".
standard— balanced quality / speed. Internally runs ~10 frequently used algorithms; covers what most distribution platforms expect. Roughly 6 – 10× the source duration to process.professional— maximum quality. Runs 30+ deep AI algorithms for shot-level enhancement. Roughly 30+× the source duration to process and ~10× the credits ofstandard.
scene — optional (string)
Selects a scene-tuned preset. Default: "common".
| Value | Recommended for |
|---|---|
common | General-purpose enhancement (no scene-specific tuning). |
ugc | Compressed UGC clips — fixes blocking, color banding, blur. |
short_series | Short-drama footage — face / detail enhancement, stylized contrast. |
aigc | Low-res AI-generated video — super-resolution + detail repaint. |
old_film | Aged film — temporal denoise, scratch removal, deflicker, color cast correction. |
resolution — optional (string)
Target output resolution. Mutually exclusive with resolution_limit.
Allowed values: 240p, 360p, 480p, 540p, 720p, 1080p, 2k, 4k.
If unset, the output keeps the source resolution.
resolution_limit — optional (integer)
Lock the output short-side to this exact pixel count, then scale the
long side to preserve the source ratio. Range [64, 2160].
Mutually exclusive with resolution.
Use this when you need precise output dimensions (e.g. resolution_limit: 720
with a 640×480 source produces 960×720).
fps — optional (number)
Target output frame rate, max 120. If unset, the output matches the source frame rate. Setting a value higher than the source triggers AI frame interpolation; staying within 4× the source is recommended for natural-looking motion.
client_token — optional (string)
Client-supplied idempotency token. Up to 64 ASCII printable characters.
The same token within a short window returns the same task_id.
callback_args — optional (string)
Opaque blob (≤ 512 bytes) you supply at submit time and receive back when
the task completes (via the standard task envelope). Useful for stitching
results back to your business records without storing the task_id.
Output
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "enhance-video-1.0",
"status": "completed",
"created_at": 1735000000,
"output": {
"video_urls": [
"https://cdn.reapi.ai/media/tasks/018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e/0.mp4"
]
},
"error": null
}The MP4 lives on our CDN — copy it to your own storage if you need long-term retention.
Pricing
Billed by output duration × tier × resolution × fps tier. The output
duration always matches the source video duration (enhance-video-1.0
does not change clip length).
When you submit, the gateway probes your video_url server-side to determine
the exact billable seconds and resolution bucket. If the URL is unreachable or
returns no metadata, you receive a 400 Could not determine source video metadata for billing and no credits are charged.
The bill scales with three knobs:
tool_version—professionalis roughly 10× the cost ofstandard.- Output resolution bucket —
720p<1080p<2k<4k. Each step doubles the cost. - Output fps tier —
> 30 fpsdoubles the cost vs≤ 30 fps. If you don't passfps, the output keeps the source frame rate; billing assumes the≤ 30 fpstier, which matches the vast majority of user-uploaded video. To opt into the> 30 fpstier, setfpsexplicitly.
See the live banner on the model page for the current rate range in credits.
Errors
Standard envelope:
{
"error": {
"code": 20003,
"message": "resolution and resolution_limit are mutually exclusive",
"request_id": "req_..."
}
}Common cases:
| Code | When |
|---|---|
20002 | video_url missing. |
20003 | Invalid enum (tool_version, scene, resolution), resolution + resolution_limit both set, resolution_limit outside [64, 2160], or video_url not a public http(s) URL. |
30002 | Source video metadata couldn't be probed (used for billing). |
30001 | Insufficient credits for the probed source duration. |
80003 | Provider rejected or failed the task (e.g. unsupported codec). |
reAPI Docs