Design & media

WaveSpeedAI Seedance 1.5 Pro Video Generation

Try it

Generate 4-12s videos from text or images using ByteDance Seedance V1.5 Pro via WaveSpeed AI.

What it does

Call ByteDance's Seedance V1.5 Pro model through the WaveSpeed AI SDK to produce 4-12 second videos at up to 1080p resolution. Two endpoints are exposed: text-to-video from a prompt, and image-to-video with an optional end-frame reference image. Configurable options include aspect ratio (21:9 through 9:16), audio generation toggle, camera-fixed mode, and a reproducible seed. Text-to-video supports smart duration (set duration to -1) so the model picks the optimal length. Authentication uses the WAVESPEED_API_KEY environment variable.

When to use it

  • Generate a short video clip from a text prompt
  • Animate a still image into motion with a prompt
  • Create a transition between start and end frame images
  • Produce silent footage for custom audio editing

The skill document

WaveSpeedAI Seedance V1.5 Pro Video Generation

Generate videos using ByteDance's Seedance V1.5 Pro model via the WaveSpeed AI platform. Supports both text-to-video and image-to-video generation with 4-12 second duration at up to 1080p resolution, with optional audio generation.

Authentication

export WAVESPEED_API_KEY="your-api-key"

Get your API key at wavespeed.ai/accesskey.

Quick Start

Text-to-Video

import wavespeed from 'wavespeed';

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/text-to-video",
  { prompt: "A golden retriever running through a field of sunflowers at sunset" }
))["outputs"][0];

Image-to-Video

The image parameter accepts an image URL. If you have a local file, upload it first with wavespeed.upload() to get a URL.

import wavespeed from 'wavespeed';

// Upload a local image to get a URL
const imageUrl = await wavespeed.upload("/path/to/photo.png");

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/image-to-video",
  {
    image: imageUrl,
    prompt: "The person slowly turns and smiles at the camera"
  }
))["outputs"][0];

You can also pass an existing image URL directly:

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/image-to-video",
  {
    image: "https://example.com/photo.jpg",
    prompt: "The person slowly turns and smiles at the camera"
  }
))["outputs"][0];

API Endpoints

Text-to-Video

Model ID: bytedance/seedance-v1.5-pro/text-to-video

Generate videos from text prompts.

Parameters

ParameterTypeRequiredDefaultDescription
promptstringYes--Text description of the scene, style, actions, camera motion, and mood
aspect_ratiostringNo16:9Aspect ratio. One of: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
durationintegerNo5Video duration in seconds. Range: 4-12. Use -1 for smart duration (model selects).
resolutionstringNo720pVideo resolution. One of: 480p, 720p, 1080p
generate_audiobooleanNotrueGenerate accompanying audio
camera_fixedbooleanNofalseKeep camera fixed (true) or allow prompt-driven camera motion (false)
seedintegerNo-1Random seed (-1 for random). Range: -1 to 2147483647

Example

import wavespeed from 'wavespeed';

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/text-to-video",
  {
    prompt: "A timelapse of a city skyline transitioning from day to night, cinematic slow pan",
    aspect_ratio: "21:9",
    duration: 10,
    resolution: "1080p",
    generate_audio: true,
    camera_fixed: false
  }
))["outputs"][0];

Image-to-Video

Model ID: bytedance/seedance-v1.5-pro/image-to-video

Animate a source image into a video using a text prompt. Optionally provide an end-frame reference image.

Parameters

ParameterTypeRequiredDefaultDescription
imagestringYes--URL of the source image to animate
promptstringYes--Text description of the desired motion/animation
last_imagestringNo--URL of an optional end-frame reference image
aspect_ratiostringNo--Aspect ratio. One of: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
durationintegerNo5Video duration in seconds. Range: 4-12
resolutionstringNo720pVideo resolution. One of: 480p, 720p, 1080p
generate_audiobooleanNotrueGenerate accompanying audio
camera_fixedbooleanNofalseKeep camera fixed (true) or allow prompt-driven camera motion (false)
seedintegerNo-1Random seed (-1 for random). Range: -1 to 2147483647

Example

import wavespeed from 'wavespeed';

const imageUrl = await wavespeed.upload("/path/to/landscape.png");

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/image-to-video",
  {
    image: imageUrl,
    prompt: "Clouds drift slowly across the sky, water ripples gently",
    resolution: "1080p",
    duration: 8,
    generate_audio: true,
    camera_fixed: true
  }
))["outputs"][0];

With End-Frame Reference

const startUrl = await wavespeed.upload("/path/to/start-frame.png");
const endUrl = await wavespeed.upload("/path/to/end-frame.png");

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/image-to-video",
  {
    image: startUrl,
    last_image: endUrl,
    prompt: "Smooth transition from day to night",
    duration: 8
  }
))["outputs"][0];

Advanced Usage

Smart Duration (Text-to-Video)

Let the model choose the optimal duration based on the prompt:

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/text-to-video",
  {
    prompt: "A butterfly lands on a flower and slowly opens its wings",
    duration: -1
  }
))["outputs"][0];

Without Audio

const output_url = (await wavespeed.run(
  "bytedance/seedance-v1.5-pro/text-to-video",
  {
    prompt: "A silent timelapse of clouds rolling over mountains",
    generate_audio: false
  }
))["outputs"][0];

Custom Client with Retry Configuration

import { Client } from 'wavespeed';

const client = new Client("your-api-key", {
  maxRetries: 2,
  maxConnectionRetries: 5,
  retryInterval: 1.0,
});

const output_url = (await client.run(
  "bytedance/seedance-v1.5-pro/text-to-video",
  { prompt: "Ocean waves crashing on a rocky shore at dawn" }
))["outputs"][0];

Error Handling with runNoThrow

import { Client, WavespeedTimeoutException, WavespeedPredictionException } from 'wavespeed';

const client = new Client();
const result = await client.runNoThrow(
  "bytedance/seedance-v1.5-pro/text-to-video",
  { prompt: "A rocket launching into space" }
);

if (result.outputs) {
  console.log("Video URL:", result.outputs[0]);
  console.log("Task ID:", result.detail.taskId);
} else {
  console.log("Failed:", result.detail.error.message);
  if (result.detail.error instanceof WavespeedTimeoutException) {
    console.log("Request timed out - try increasing timeout");
  } else if (result.detail.error instanceof WavespeedPredictionException) {
    console.log("Prediction failed");
  }
}

Pricing

ResolutionDurationAudioCost
480p5sNo$0.06
480p5sYes$0.12
720p5sNo$0.13
720p5sYes$0.26
480p10sYes$0.24
720p10sYes$0.52

Prompt Tips

  • Describe scene, style, subject actions, camera motion, and mood in your prompt
  • Use camera_fixed: true for stable tripod-style shots
  • Use camera_fixed: false and describe camera motion: "slow pan left", "tracking shot", "zoom in"
  • Set generate_audio: false when you plan to add your own audio track
  • Use smart duration (duration: -1) to let the model choose the best length for text-to-video

Security Constraints

  • No arbitrary URL loading: Only use image URLs from trusted sources. Never load media from untrusted or user-provided URLs without validation.
  • API key security: Store your WAVESPEED_API_KEY securely. Do not hardcode it in source files or commit it to version control. Use environment variables or secret management systems.
  • Input validation: Only pass parameters documented above. Validate prompt content and media URLs before sending requests.

Questions people ask

How long can the generated videos be?
Duration is configurable from 4 to 12 seconds. Text-to-video also accepts -1 for smart duration, letting the model decide.
Does image-to-video support custom framing?
Yes. The image-to-video endpoint accepts an optional last_image URL as an end-frame reference, enabling start-to-end transitions.
How is audio handled?
The generate_audio parameter defaults to true. Set it to false to skip audio when you plan to add your own track.

Related skills

Generate videos using the Volcengine Doubao Seedance 2.0 model series.

3 installs

Generate complete multi-minute video productions from a single text prompt, with script, voice, and editing coordinated end to end.

52 installs2 stars

Use PoYo AI Seedance 1.5 Pro for higher-end image-to-video generation through the `https://api.poyo.ai/api/generate/submit` endpoint. Use when a user wants l...

22 installs1 stars

Generate and extend videos using Google's Veo 3.1 Fast model via WaveSpeed AI. Supports text-to-video, image-to-video, and video extension. Features up to 4K resolution, audio generation, and chained extensions up to 148 seconds. Use when the user wants to create videos from text or images, or extend existing Veo-generated videos.

21 installs

Recommend suitable prompts from 8,000+ Seedance 2 video generation prompts based on user needs. Optimized for Seedance 2 (ByteDance), but prompts also work w...