LightSpeedFuture

API REFERENCE

Native Video Generation

The Light Speed Future video generation API follows an OpenAI-compatible style, but advanced Seedance controls such as duration, resolution, aspect ratio, first/last frame control, multimodal references, and the audio switch are passed under metadata. In practice, metadata is the most important part of this integration.

5.1 Supported Task Endpoints

  • Submit a task: POST /v1/videos
  • Retrieve a task: GET /v1/videos/{task_id}
  • Typical status values: queued / in_progress / completed / failed / expired

Current task-management scope

Current scope: do not assume support for DELETE /v1/videos/{task_id}, GET /v1/videos, or POST /v1/videos/{task_id}/cancel unless those endpoints are separately enabled and confirmed by Light Speed Future.

5.2 Model Families and Output Scope

Tenant model familyUse caseSupported outputUnsupported by default
Standard Seedance 2.0 aliasHighest quality and package-enabled higher resolution480p / 720p / 1080p, and 4k when tenant package enables 4k
Fast Seedance 2.0 aliasBalance of speed and costLower supported resolutions such as 480p / 720p1080p and 4k
Mini Seedance 2.0 aliasBest cost-efficiency for enabled tenants480p / 720p, duration 4-15 seconds1080p and 4k
Seedance 2.5 aliasMultimodal generation, video editing, and video extension480p / 720p / 1080p; text, frame, image, video, audio, and mixed reference modes4k

5.3 Overall Request Structure

POST /v1/videos
{
  "model": "<YOUR_MODEL_ALIAS>",
  "prompt": "Describe the video you want",
  "user": "optional-user-id",
  "seed": 123456,
  "metadata": {
    "duration": 4,
    "resolution": "720p",
    "ratio": "adaptive",
    "generate_audio": false,
    "content": []
  }
}

5.4 Top-Level Fields

FieldRequiredDescription
modelYesThe tenant-callable video model alias. This value is mapped by Light Speed Future to the actual upstream model in the backend.
promptConditionalRequired for text-only requests. Optional when supported reference or frame inputs are supplied.
userNoOptional business-side user identifier.
seedNoOptional random seed for model families that support it. Do not send seed to the current Seedance 2.5 alias.
metadataStrongly recommendedThe container for Seedance-specific fields. See the table below and the strict Seedance 2.5 specification in section 5.7.

5.5 metadata Fields

FieldTypeDescription
durationintegerOptional for Seedance 2.5; omission uses the model default (-1). Accepted values are -1 or an integer from 4 to 30. Edit accepts omitted or -1; extend accepts omitted, -1, or 4-30.
resolutionstringOutput resolution. Seedance 2.5 supports 480p, 720p, and 1080p. Mini supports 480p/720p. Standard Seedance 2.0 can use 4k when enabled; The native Seedance 2.5, Fast, and Mini aliases do not support 4k. Fast and Mini also do not support 1080p.
ratiostringSeedance 2.5 text/reference modes support adaptive, 16:9, 4:3, 1:1, 3:4, 9:16, and 21:9. Edit, extend, first-frame, and first+last-frame modes support adaptive only. Omission uses adaptive.
generate_audiobooleanWhether to generate audio. Seedance 2.5 accepts omitted, true, or false; send an explicit value when deterministic behavior is required.
watermarkbooleanOptional Seedance 2.5 watermark switch.
client_request_idstringOptional business-side idempotency key for POST /v1/videos. See section 5.11.
contentarrayOrdered multimodal input items. Each item uses type for media format and role for purpose; see section 5.6. Limits: 30 reference_image, 10 reference_video, 10 reference_audio, and 50 total. Pure-audio and mixed references are supported.
output_formatstringOptional output container: "mp4" or "mov". Omitted requests use MP4.
return_last_framebooleanRequests the generated last frame. On success, metadata.last_frame_url is present only when returned.
omni_reference_task_typestringOptional for Seedance 2.5 Omni reference-to-video. Allowed values: auto, reference, edit, or extend. Omission uses auto behavior. reference requires reference input; edit and extend require reference_video and the rules in section 5.7.

Metadata is the control plane

Engineers should avoid putting duration, resolution, ratio, and generate_audio at the top level. Put Seedance-specific controls under metadata instead.

5.6 metadata.content Item Structure and Roles

metadata.content is an ordered array. Each item requires type (media format) and role (purpose). Supported roles are reference_image, reference_video, reference_audio, first_frame, and last_frame. Use image_url for image/frame roles, video_url for reference_video, and audio_url for reference_audio. Item order is preserved for @Image1, @Video1, and @Audio1.

reference_image item:
{ "type": "image_url", "role": "reference_image",
 "image_url": { "url": "https://example.com/image-1.jpg" } }

reference_video item:
{ "type": "video_url", "role": "reference_video",
 "video_url": { "url": "https://example.com/video-1.mp4" } }

reference_audio item:
{ "type": "audio_url", "role": "reference_audio",
 "audio_url": { "url": "https://example.com/audio-1.mp3" } }

Reference video items use type=video_url with role=reference_video. Keep reference media accessible throughout processing; commercial terms are outside this technical guide.

5.7 Seedance 2.5 API Request Specification

Seedance 2.5 is available only when Light Speed Future provisions a tenant-facing alias. Use only the documented fields and combinations below.

SettingSupported in Seedance 2.5Notes
ModelExact tenant alias provided by Light Speed FutureDo not use a generic or upstream model name.
Resolution480p, 720p, or 1080pOmitted resolution defaults to 720p. 4k is rejected before task creation.
Durationomitted, -1, or integer 4-30Omission uses -1. Edit accepts omitted or -1; extend accepts omitted, -1, or 4-30. Do not send strings, decimals, or null.
Input modeText; frame control; reference images, videos, or audio; pure audio; or mixed referencesPrompt is required for text-only requests and optional when supported reference or frame content is supplied. Maximum 30 images, 10 videos, 10 audio items, and 50 total; original item order is preserved.
Ratioadaptive, 16:9, 4:3, 1:1, 3:4, 9:16, or 21:9Text-to-video and reference-to-video support all listed values. Editing, extension, and first/last-frame modes support adaptive only. Omission uses adaptive.
Generated audiogenerate_audio omitted, true, or falseSet an explicit value when deterministic behavior is required.
Not supportedVideo callbacks; task cancel, delete, or list; inline file upload, Base64, or data: URLsReference media is passed through to the provider. This is the native video route. Production additionally reads video metadata to determine input duration; see section 7.5.
Output controlsoutput_format="mp4" or "mov"; return_last_frame boolean; watermark booleanOmitted output_format uses MP4. metadata.last_frame_url appears only when the provider returns a last frame.
Omni task typeomitted (auto behavior), auto, reference, edit, or extendreference requires at least one reference input. edit requires a 4-30 second reference_video, ratio omitted or adaptive, and duration omitted or -1. extend requires reference_video and ratio omitted or adaptive; duration may be omitted, -1, or 4-30.

Seedance 2.5 request specification | Use documented fields only. For Omni editing and extension, keep the explicit task type, prompt intent, reference assets, ratio, and duration mutually consistent.

Seedance 2.5 Explicit Omni Edit Example

POST /v1/videos
{
  "model": "<YOUR_SEEDANCE_2_5_MODEL_ALIAS>",
  "prompt": "Edit @Video1 using the visual details from @Image1 and the sound style from @Audio1.",
  "metadata": {
    "client_request_id": "video-job-20260824-edit-0001",
    "omni_reference_task_type": "edit",
    "duration": -1,
    "resolution": "1080p",
    "ratio": "adaptive",
    "output_format": "mov",
    "return_last_frame": true,
    "watermark": false,
    "generate_audio": false,
    "content": [
      {
        "type": "video_url",
        "role": "reference_video",
        "video_url": {
          "url": "https://example.com/video-1.mp4"
        }
      },
      {
        "type": "image_url",
        "role": "reference_image",
        "image_url": {
          "url": "https://example.com/image-1.jpg"
        }
      },
      {
        "type": "audio_url",
        "role": "reference_audio",
        "audio_url": {
          "url": "https://example.com/audio-1.mp3"
        }
      }
    ]
  }
}

Use metadata.omni_reference_task_type only for Seedance 2.5 Omni reference-to-video requests. Omitting it uses auto behavior and lets the model infer the subtask. Explicit reference, edit, or extend validates known task constraints earlier, but the prompt and inputs must still match; otherwise the task can fail asynchronously with InvalidParameter.TaskTypeMismatch. Do not send a generic task_type field.

Seedance 2.5 Explicit Omni Extend Example

POST /v1/videos
{
  "model": "<YOUR_SEEDANCE_2_5_MODEL_ALIAS>",
  "prompt": "Continue @Video1 forward, preserving the scene and motion.",
  "metadata": {
    "client_request_id": "video-job-20260824-extend-0001",
    "omni_reference_task_type": "extend",
    "duration": 5,
    "resolution": "480p",
    "ratio": "adaptive",
    "generate_audio": false,
    "content": [
      {
        "type": "video_url",
        "role": "reference_video",
        "video_url": {
          "url": "https://example.com/video-1.mp4"
        }
      }
    ]
  }
}

For edit, omit duration or set it to -1. For extend, omit duration or use -1 or an integer from 4 to 30. Both modes require at least one reference_video; omit ratio or set it to adaptive.

5.8 Common Video Generation Examples

Example A: Minimal text-to-video

POST /v1/videos
{
  "model": "<YOUR_MODEL_ALIAS>",
  "prompt": "A person speaking naturally to camera in a clean indoor setting.",
  "metadata": {
    "duration": 4,
    "resolution": "720p",
    "ratio": "adaptive",
    "generate_audio": false
  }
}

Example B: Seedance Mini text-to-video

POST /v1/videos
{
  "model": "<YOUR_MINI_VIDEO_MODEL_ALIAS>",
  "prompt": "A cinematic close-up of a premium skincare bottle on a clean white background, soft studio lighting, smooth camera movement.",
  "metadata": {
    "duration": 4,
    "resolution": "720p",
    "ratio": "adaptive",
    "generate_audio": false
  }
}

Example C: Single-image reference

POST /v1/videos
{
  "model": "<YOUR_MODEL_ALIAS>",
  "prompt": "Create a product video using Image 1 as the visual reference. Keep the product shape and label consistent.",
  "metadata": {
    "duration": 4,
    "resolution": "720p",
    "ratio": "adaptive",
    "generate_audio": false,
    "content": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/product-reference.jpg"
        },
        "role": "reference_image"
      }
    ]
  }
}

Example D: Reference video input

POST /v1/videos
{
  "model": "<YOUR_MODEL_ALIAS>",
  "prompt": "Use the camera rhythm and motion style from Video 1, while creating a new product-focused short video.",
  "metadata": {
    "duration": 4,
    "resolution": "720p",
    "ratio": "adaptive",
    "generate_audio": false,
    "content": [
      {
        "type": "video_url",
        "video_url": {
          "url": "https://example.com/reference-camera-motion.mp4"
        },
        "role": "reference_video"
      }
    ]
  }
}

Example E: Standard 4K output when enabled

POST /v1/videos
{
  "model": "<YOUR_STANDARD_VIDEO_MODEL_ALIAS>",
  "prompt": "Generate a premium product commercial with slow cinematic camera movement and high-detail lighting.",
  "metadata": {
    "duration": 5,
    "resolution": "4k",
    "ratio": "16:9",
    "generate_audio": false
  }
}

5.9 Unsupported Resolution Behavior

POST /v1/videos
{
  "model": "<YOUR_MINI_VIDEO_MODEL_ALIAS>",
  "prompt": "A short product clip.",
  "metadata": {
    "duration": 4,
    "resolution": "1080p",
    "ratio": "adaptive",
    "generate_audio": false
  }
}

Expected result: the request is rejected with an invalid_request_error. No video task is created. The same applies to native Seedance 2.5 4k requests and Fast or Mini 1080p/4k requests under the current package rules.

5.10 Retrieve Task Status

GET /v1/videos/{task_id}
{
  "id": "task_xxx",
  "task_id": "task_xxx",
  "object": "video",
  "model": "<YOUR_MODEL_ALIAS>",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://example.com/generated-video.mov",
    "last_frame_url": "https://example.com/generated-last-frame.jpg"
  },
  "usage": {
    "completion_tokens": 40594,
    "total_tokens": 40594
  }
}

Poll the same GET /v1/videos/{task_id} every 30 seconds or longer. If a connection is interrupted, resume polling the same task ID; do not submit another POST only because polling was interrupted. Stop when status is completed, failed, or expired. Video callbacks are not supported.

Seedance 2.5 Error Details

When a task reaches failed or expired, check the error object returned by GET /v1/videos/{task_id}:

{
  "status": "failed",
  "error": {
    "code": "InvalidParameter.TaskTypeMismatch",
    "message": "The task type identified by the model does not match the specified value."
  }
}

Use error.code for application logic and error.message for diagnostics. If a specific error code is unavailable, the API returns video_generation_failed.

5.11 Idempotency

Use metadata.client_request_id and retain the public task ID. Follow section 4 for identical-request replay, interrupted polling and unknown submission outcomes.

Search documentation

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