Bytedance Seedance V1 Lite T2V 720p API Documentation

Bytedance Seedance V1 Lite T2V 720p API Documentation

Playground

Try it on WaveSpeedAI!

Seedance V1 Lite produces coherent multi-shot 720p videos with smooth motion and accurate following of detailed text prompts. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

> Notice — Service Stability > > The Seedance 1.0 family is being retired or has already been retired by its original provider. Until it is fully removed, the service is unstable: generations may fall back to alternative models without notice, results can differ from what this model used to produce, and the service can be temporarily unavailable. > > If you need an equally capable, stable alternative, we recommend Seedance 2: bytedance/seedance-2.0/text-to-video.


Seedance v1 Lite T2V 720p generates short videos directly from a text prompt. Describe the subject, action, scene, and camera intent, and the model produces a coherent 720p clip with smooth motion—great for story beats, anime-style moments, quick pre-visualization, and rapid creative iteration. You can optionally enable camera_fixed to keep framing steady while motion happens within the scene.

Key capabilities

  • Text-to-video generation (720p) optimized for fast iteration
  • Good motion from clear action verbs and scene direction
  • Optional camera_fixed mode for stable framing (no camera movement)
  • Supports multiple aspect ratios for common layouts (e.g., 16:9)

Use cases

  • Short story moments and animated shots (5–20s beats)
  • Anime-style scene generation with expressive lighting and motion
  • Quick pre-vis for camera blocking and action timing
  • Social-ready clips and concept trailers at lightweight cost
  • Creating variations by changing seed while keeping the same prompt

Pricing

DurationPrice per video
5s$0.16
10s$0.32
15s$0.48
20s$0.64

Parameters

  • prompt (required): Describe what happens in the video (subject, action, scene, mood)
  • aspect_ratio: Output aspect ratio (e.g., 16:9, 9:16, 1:1)
  • duration (required): Video length in seconds
  • camera_fixed: Whether to fix the camera position
  • seed: Random seed (-1 for random; fixed value for reproducible results)

Prompting guide (T2V)

Write prompts like a director’s brief:

  • Subject: who/what is on screen
  • Action: what changes over time (fluttering, turning, walking, reacting)
  • Scene: where it happens + time of day
  • Lighting: sunset glow, neon, soft volumetrics, etc.
  • Camera: only describe movement if camera_fixed is off

Example pattern: A [subject] [action] in [scene], [lighting], [mood], smooth motion, cinematic pacing.

Example prompts

  • A high school girl stands at a rooftop fence during sunset, hair and skirt fluttering in the wind, orange sky glowing behind her, distant courtyard ambience, soft anime-style shading, vivid colors, gentle camera drift.
  • Close-up of a musician’s hands playing guitar, warm indoor lighting, shallow depth of field, subtle handheld motion, realistic details.
  • A sci-fi corridor scene with drifting fog and blinking lights, a character slowly turns toward the camera, dramatic rim light, cinematic tension.

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'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "duration": 5,
  "aspect_ratio": "16:9",
  "camera_fixed": false
}
JSON
)

# 1. Submit the prediction once. Never retry this request automatically:
# a retry after an unclear failure can create a second, billed task.
CHECK='The task may already exist. Check History or the predictions list before submitting again.'
if ! SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 60 \
  -X POST "https://api.wavespeed.ai/api/v3/bytedance/seedance-v1-lite-t2v-720p" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"); then
  printf 'Submit failed. %s\n' "${CHECK}" >&2
  exit 1
fi

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. %s\n' "${CHECK}" >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction reaches a final status.
BODY_FILE=$(mktemp)
trap 'rm -f "${BODY_FILE}"' EXIT
while true; do
  # Transient errors (429, 5xx) are retried, honoring Retry-After.
  HTTP_CODE=$(curl --silent --show-error --fail-with-body \
    --connect-timeout 10 --max-time 60 --retry 5 --retry-delay 2 \
    --output "${BODY_FILE}" --write-out '%{http_code}' \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}" || true)
  case "${HTTP_CODE}" in
    2??) ;;
    000|429|5??)  # dropped connection or temporary error: keep polling
      printf 'Task %s: HTTP %s, polling again in 10s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      sleep 10; continue ;;
    *) printf 'Task %s: HTTP %s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      cat "${BODY_FILE}" >&2; exit 1 ;;
  esac
  RESULT=$(jq 'if type == "object" and has("data") then .data else . end' "${BODY_FILE}")
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted)
      printf 'Task %s ended with status %s\n' "${PREDICTION_ID}" "${STATUS}" >&2
      printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Retry temporary errors only while polling, never the submit request. Errors, retries and timeouts

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.max length 2000
durationintegerYes52, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12The duration of the generated media in seconds.
aspect_ratiostringNo16:921:9, 16:9, 4:3, 1:1, 3:4, 9:16The aspect ratio of the generated media.
camera_fixedbooleanNofalse-Whether to fix the camera position.
seedintegerNo--The random seed to use for the generation. -1 means a random seed will be used.

Every model also accepts the global request options enable_sync_mode and enable_base64_output; see their pages for details.

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.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
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.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
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.