Skip to main content

Overview

Seedance 2 is ByteDance’s latest video generation model, available through varg via PiAPI. It produces high-fidelity videos with strong motion coherence and prompt adherence. Two variants are available:
Model IDQualitySpeedCredits~Cost
seedance-2-previewBest~4 min250$2.50
seedance-2-fast-previewGood~3 min150$1.50

Quick start

import { createVarg } from "vargai/ai"

const varg = createVarg({ apiKey: process.env.VARG_API_KEY! })

const result = await varg.videoModel("seedance-2-preview").generate({
  prompt: "a golden retriever running through autumn leaves in slow motion",
  duration: 5,
  aspectRatio: "16:9",
})

console.log(result.video.url)

Capabilities

Seedance 2 supports four generation modes:

Text-to-video

Generate video from a text prompt alone.
const result = await varg.videoModel("seedance-2-preview").generate({
  prompt: "aerial shot of a futuristic city at sunset, flying cars, neon lights",
  duration: 10,
  aspectRatio: "16:9",
})

Image-to-video

Animate a still image. Supports up to 9 reference images — use @image1, @image2, etc. in your prompt to reference them.
const result = await varg.videoModel("seedance-2-preview").generate({
  prompt: "@image1 the woman turns to face the camera and smiles",
  imageUrls: ["https://example.com/portrait.jpg"],
  duration: 5,
})

Video editing

Edit an existing video based on a text prompt. When a video URL is provided, the duration parameter is ignored.
const result = await varg.videoModel("seedance-2-preview").generate({
  prompt: "change the background to a tropical beach",
  videoUrls: ["https://example.com/original.mp4"],
})

Video extension

Extend a previously generated video by providing its task ID.
SDK
const result = await varg.videoModel("seedance-2-preview").generate({
  prompt: "the camera continues to pull back revealing the full landscape",
  parentTaskId: "previous-task-id",
  duration: 5,
})

Parameters

prompt
string
required
Text description of the video to generate. For image-to-video, reference images with @image1, @image2, etc.
duration
5 | 10 | 15
default:"5"
Video duration in seconds. Only 5, 10, or 15 are accepted — any other value will cause an error. Ignored in video edit mode.
aspect_ratio
string
default:"16:9"
Output aspect ratio. Supported values: 16:9, 9:16, 4:3, 3:4.
files
array
Array of { url: string } objects. Images trigger image-to-video mode. A video file (.mp4, .webm, .mov) triggers video edit mode. Maximum 9 images.
provider_options
object
Pass-through options for the PiAPI provider. Rarely needed.
Duration must be exactly 5, 10, or 15 seconds. Values like 3, 7, or 12 will fail. This is a hard constraint from the Seedance model.

Pricing

ModelCreditsUSD
seedance-2-preview250$2.50
seedance-2-fast-preview150$1.50
Pricing is flat per generation regardless of duration.

Tips

  • Image-to-video produces better results than text-to-video. Generate a reference image first with nano-banana-pro, then animate it.
  • Use @imageN syntax to reference specific images in multi-image prompts. This gives you control over which image maps to which element.
  • Be specific about motion — describe camera movements (“slow pan left”, “zoom in”) and subject actions (“walks toward camera”, “turns around”) explicitly.
  • Fast preview is a good starting point for iteration. Switch to the full preview model for final renders.
  • Aspect ratios matter9:16 for TikTok/Reels/Shorts, 16:9 for YouTube/landscape, 4:3 for social posts.

Composition example

Use Seedance in a full video composition with the SDK:
/** @jsxImportSource vargai */
import { Render, Clip, Image, Video, Speech, Captions } from "vargai"
import { createVarg } from "vargai/ai"

const varg = createVarg({ apiKey: process.env.VARG_API_KEY! })

const scene = Image({
  model: varg.imageModel("nano-banana-pro"),
  prompt: "professional woman in modern office, confident pose",
  aspectRatio: "9:16",
})

export default (
  <Render width={1080} height={1920} fps={30}>
    <Clip duration={5}>
      <Video
        model={varg.videoModel("seedance-2-preview")}
        prompt={{ text: "@image1 she turns and smiles at the camera", images: [scene] }}
        duration={5}
      />
    </Clip>
  </Render>
)

Kling V3

Best overall video model. Supports 3-15s flexible duration.

Sora 2

OpenAI’s video model. Good for cinematic shots.

Wan 2.5

Budget-friendly video generation with good character motion.

Nano Banana Pro

Generate reference images to use with Seedance image-to-video.