LightSpeedFuture

API REFERENCE

LSF Video Enhancement

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 routeModel selectionMode-specific controls
LiteUse <YOUR_VIDEO_ENHANCEMENT_LITE_MODEL_ALIAS>. Omit tool_version.Common resolution, FPS and bitrate controls. Omit scene, enhance_style and bit_depth.
StandardUse <YOUR_VIDEO_ENHANCEMENT_MODEL_ALIAS>. Omit tool_version or set standard.scene and enhance_style supported. No bit_depth.
ProfessionalUse 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

TierConfigured output bandsAPI selection
LiteUp to 720p, 1080p, 2K, 4KNamed 1080p / 2k / 4k; no Lite 8K.
StandardUp to 720p, 1080p, 2K, 4K, 8KNamed 1080p / 2k / 4k / 8k when enabled.
ProfessionalUp to 720p, 1080p, 2K, 4K, 8KSame 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

FieldRequiredContract
modelYesExact tenant-facing alias for the selected route.
metadata.video_urlYesPublic 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.durationYesFinite positive source duration in seconds. Supply an accurate value for the initial reservation; final billing uses the actual enhanced output.
metadata.tool_versionStandard / Professional onlystandard (default) or professional. Omit on the Lite alias.
metadata.resolutionOne resolution selector1080p, 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_limitAlternative selectorInteger 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.fpsOptional15–120 fps. Omit to preserve source FPS. Omission reserves at the highest FPS band, then settles from actual output FPS.
metadata.bitrate_levelOptionallow, medium or high. Omission preserves upstream default behavior.
metadata.bitrateOptionalInteger 10–150000 kbps. Takes precedence over bitrate_level when both are supplied.
metadata.sceneStandard onlycommon, ugc, short_series, aigc or old_film. Omit for the default common behavior.
metadata.enhance_styleStandard / Professional onlyhd or natural.
metadata.bit_depthProfessional onlyInteger 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_idRecommended1–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 bandMultiplier
Up to 301
More than 30, up to 602
More than 60, up to 1204
  • 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.

Search documentation

Search pages and headings. Use Tab or arrow keys to move through results.