Enhance an existing video by supplying metadata.video_url and metadata.duration to POST /v1/videos. Retrieve the public task through GET /v1/videos/{task_id}. This route does not generate a new scene from a prompt.
6.1 Select the enhancement route
| Processing route | Model selection | Mode-specific controls |
|---|---|---|
| Lite | Use <YOUR_VIDEO_ENHANCEMENT_LITE_MODEL_ALIAS>. Omit tool_version. | Common resolution, FPS and bitrate controls. Omit scene, enhance_style and bit_depth. |
| Standard | Use <YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>. Omit tool_version or set standard. | scene and enhance_style supported. No bit_depth. |
| Professional | Use the same Standard / Professional alias and set tool_version to professional. | enhance_style and bit_depth supported. Omit scene. |
Lite is a separate product route. Do not send tool_version="fast". Standard and Professional continue to share one alias.
Supported enhancement output bands
| Tier | Configured output bands | API selection |
|---|---|---|
| Lite | Up to 720p, 1080p, 2K, 4K | Named 1080p / 2k / 4k; no Lite 8K. |
| Standard | Up to 720p, 1080p, 2K, 4K, 8K | Named 1080p / 2k / 4k / 8k when enabled. |
| Professional | Up to 720p, 1080p, 2K, 4K, 8K | Same named resolutions; tool_version=professional. |
The price card contains 14 tier/resolution bands. Availability for a particular request also depends on the tenant alias and permissions. An up-to-720p price row is a billing classification; do not send the label “≤720p” as metadata.resolution.
6.2 Request fields
| Field | Required | Contract |
|---|---|---|
| model | Yes | Exact tenant-facing alias for the selected route. |
| metadata.video_url | Yes | Public direct HTTP(S) source-video URL; HTTPS recommended. No login, cookies or private network required. Use asset:// with the supported generation / Production routes, not as a standalone video_url. |
| metadata.duration | Yes | Finite positive source duration in seconds. Supply an accurate value for the initial reservation; final billing uses the actual enhanced output. |
| metadata.tool_version | Standard / Professional only | standard (default) or professional. Omit on the Lite alias. |
| metadata.resolution | One resolution selector | 1080p, 2k or 4k for Lite; Standard / Professional also support 8k when enabled. For lower outputs, use a supported low resolution or a numeric short-side limit. lte_720p is not a valid resolution value. |
| metadata.resolution_limit | Alternative selector | Integer short-side pixel limit, mutually exclusive with resolution: 128–2160 for Lite; 128–4320 for Standard / Professional. For example, 720 selects a limit in the up-to-720p billing band. |
| metadata.fps | Optional | 15–120 fps. Omit to preserve source FPS. Omission reserves at the highest FPS band, then settles from actual output FPS. |
| metadata.bitrate_level | Optional | low, medium or high. Omission preserves upstream default behavior. |
| metadata.bitrate | Optional | Integer 10–150000 kbps. Takes precedence over bitrate_level when both are supplied. |
| metadata.scene | Standard only | common, ugc, short_series, aigc or old_film. Omit for the default common behavior. |
| metadata.enhance_style | Standard / Professional only | hd or natural. |
| metadata.bit_depth | Professional only | Integer 8, 10, 12 or 16. The gateway forwards 16 unchanged; it has no 16-bit-specific duration, codec or bitrate cross-validation. Provider-specific 16-bit restrictions are not yet verified; do not assume every media profile is supported. |
| metadata.client_request_id | Recommended | 1–64 printable ASCII bytes after trimming; use an unchanged value only for an identical logical request replay. |
Supply exactly one resolution selector. Unknown metadata and incompatible route-specific fields are rejected. The recommendation to request no more than four times the source FPS is quality guidance, not an additional pricing band.
Resolution and advanced controls
Lite supports outputs through 4K; Standard and Professional through 8K when enabled. The up-to-720p label is a billing band, not a literal API value. Numeric limits use the ranges above. For 16-bit output, provider-specific media restrictions still need confirmation; gateway acceptance alone does not establish compatibility.
6.3 Request examples
A. Standard · 1080p
POST /v1/videos
{
"model": "<YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>",
"metadata": {
"video_url": "https://example.com/input-video.mp4",
"duration": 5,
"tool_version": "standard",
"scene": "aigc",
"resolution": "1080p",
"fps": 24,
"client_request_id": "enhance-standard-001"
}
}
B. Lite · 2K
POST /v1/videos
{
"model": "<YOUR_VIDEO_ENHANCEMENT_LITE_MODEL_ALIAS>",
"metadata": {
"video_url": "https://example.com/input-video.mp4",
"duration": 5,
"resolution": "2k",
"fps": 60,
"client_request_id": "enhance-lite-001"
}
}
C. Professional · 4K
POST /v1/videos
{
"model": "<YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>",
"metadata": {
"video_url": "https://example.com/input-video.mp4",
"duration": 5,
"tool_version": "professional",
"resolution_limit": 2160,
"fps": 24,
"enhance_style": "natural",
"bit_depth": 10,
"client_request_id": "enhance-pro-001"
}
}
Professional rejects scene. Lite rejects scene, enhance_style and bit_depth. A customer generation prompt is not required for standalone enhancement.
For legacy client compatibility, a top-level prompt value (text, empty string or null) is accepted and ignored for standalone enhancement. It is not used to generate content or to price the job. Other unknown top-level fields remain unsupported.
6.4 Task lifecycle and result
After submission, poll GET /v1/videos/{task_id} every 30 seconds or longer. Continue with the same task ID through queued and in_progress, and stop at completed or failed. If a connection is interrupted, resume GET polling; do not submit another POST only because polling was interrupted.
Typical create response:
{
"id": "task_xxx",
"task_id": "task_xxx",
"object": "video",
"model": "<YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>",
"status": "queued",
"progress": 0
}
Illustrative completed response; returned values depend on the actual output:
{
"id": "<YOUR_TASK_ID>",
"task_id": "<YOUR_TASK_ID>",
"object": "video",
"model": "<YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>",
"status": "completed",
"progress": 100,
"metadata": {
"client_request_id": "enhance-standard-001",
"video_url": "https://example.com/enhanced-video.mp4",
"duration": 5.084,
"resolution": "1080p",
"fps": 24,
"tool_version": "standard"
}
}
Download metadata.video_url promptly. It is temporary output access, not permanent storage; do not rely on an exact retention period unless your agreement specifies one.
6.5 Reservation and final billing
Use the agreed rate for the selected processing route and output resolution. FPS bands apply to standalone enhancement:
| Output FPS band | Multiplier |
|---|---|
| Up to 30 | 1 |
| More than 30, up to 60 | 2 |
| More than 60, up to 120 | 4 |
- With an explicit fps, the reservation uses the declared duration and requested FPS band.
- With fps omitted, the reservation uses the highest band (multiplier 4). The upstream request still omits fps; output preserves the source frame rate according to the processing service.
- Final billing uses the frozen rate, the actual output profile and the actual output duration rounded up to a whole second. Any difference from the reservation is reconciled once.
- For example, 5.084 output seconds become 6 chargeable seconds. If the final output is 24fps, the final FPS multiplier is 1 even when omission caused a multiplier-4 reservation.
- Repeated GET requests do not create tasks or duplicate charges. Replays do not reprice an already accepted task.
6.6 Input and error checklist
Use a direct public HTTP(S) source that needs no cookies, private headers or private-network access and remains stable throughout processing. Avoid short expiry, redirect chains, anti-bot checks and hotlink protection. Browser playback alone does not prove processing compatibility. Follow the media limits confirmed during onboarding.