Bytedance Video Upscaler

Bytedance Video Upscaler

Playground

Try it on WaveSpeedAI!

Video Upscaler uses AI super-resolution to upscale videos to 4K and recover fine detail in a secure cloud environment. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

BytePlus VOD’s enhancement feature provides an intelligent and efficient solution for improving video quality through AI algorithms. This feature integrate atomic capabilities like face enhancement, color enhancement, text enhancement, compression distortion removal, noise reduction, deblurring, dark scene optimization, and brightness equalization. It adaptively matches the optimal processing strategy to ensure that videos present a clearer and more vivid visual effect at the same bitrate.

Powered by a high-quality, large-scale training dataset covering both OGC (Professionally Produced Content) and PUGC (Professional User-Generated Content).


What Seedance does

  • Super-resolution upscaling to 1080p / 2K / 4K with detail recovery and de-ringing
  • Temporal consistency to reduce flicker and ghosting between frames
  • Works well on live-action, animation, game captures, product reels, and vertical shorts

Inputs

  • video – The source clip you want to enhance.

  • target_resolution – One of:

  • 1080p

  • 2k

  • 4k


How to use

  1. Upload or paste the URL of your video.
  2. Choose the desired target_resolution (1080p, 2k, or 4k).
  3. Click Run to upscale; then compare the result with your original in your editor or viewer.

Notes

  • Very short clips are billed with a 5-second minimum.
  • Jobs longer than 600 seconds (10 minutes) only bill the first 600 seconds.

Pricing

ResolutionPrice per second
1080p$0.0072
2k$0.0144
4k$0.0288
  • Minimum charge: 5 seconds at the chosen resolution
  • Maximum billed duration: 600 seconds per job

Tips

  • Feed the highest-quality source you have; upscalers can’t fully restore detail from heavy blur.
  • If the source is very noisy, denoise first, then upscale.
  • Match your export’s aspect ratio to the target platform to avoid letterboxing after upscaling.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "target_resolution": "1080p"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/bytedance/video-upscaler" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
videostringYes-The video to upscale.
target_resolutionstringNo1080p1080p, 2k, 4kThe target resolution of the video to upscale.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.