Picsart API Platform
← All models

Seedance 2.5

NewPremiumHot

Seedance · Video · Text → Video

Latest cinematic video with audio, multi-reference input, and mp4/mov output. Up to 30s.

Model ID: seedance-2.5Workflow: seedance
Reference ImageStart/End FrameAudio1080p4-30 sec
Try on Playground ↗

Overview

Alongside the unified model APIs, we expose compatibility APIs that take each vendor's original parameters exactly as the vendor defines them — nothing renamed, nothing reshaped on the way through.

That makes them the shortest path onto Picsart if you already work with the vendor directly: the request bodies you've already written keep working as they are. You keep their parameter names and defaults, and you get the vendor's full parameter set rather than the subset that is shared across every model.

The cost is that a request is written for one vendor — switching models later means rewriting it, and results come back in the vendor's own shape. When you'd rather write once and change models freely, use the unified API.

Make a request

Call the workflow with ai.apis.run() in TypeScript, or hit /workflows/{workflow}/execute directly — params is passed through untouched either way.

These endpoints are addressed by workflow name rather than model id: the one in this model's header, since one model runs as one workflow. Authentication is unchanged — your Picsart API key as a bearer token (see Authentication).

ts
import { createClient, ApiRunMode } from '@picsart/ai-sdk';

const ai = createClient({
  apiKey: process.env.PICSART_API_KEY,
  apiUrl: 'https://api.picsart.com',
});

// Calls the 'seedance' workflow directly — params are sent as-is.
const { result, usage } = await ai.apis.run('seedance', {
  content: [
    {
      type: "text"
    }
  ]
}, {
  mode: ApiRunMode.SYNC,
});

console.log(result); // workflow-specific output
console.log(usage?.credits); // credits charged

Async (submit & poll)

This model can run longer than the sync limit (~20s). In TypeScript, ai.apis.run(…, { mode: ApiRunMode.ASYNC }) polls for you; over HTTP, submit and poll yourself.

ts
import { createClient, ApiRunMode } from '@picsart/ai-sdk';

const ai = createClient({
  apiKey: process.env.PICSART_API_KEY,
  apiUrl: 'https://api.picsart.com',
});

// mode: ASYNC submits the job and polls under the hood — you just await.
const { result } = await ai.apis.run('seedance', {
  content: [
    {
      type: "text"
    }
  ]
}, {
  mode: ApiRunMode.ASYNC,
});

console.log(result);

Parameters

11 parameters, sent inside params. These are the vendor's own names, so they line up one-for-one with the vendor's documentation. Required ones must be supplied; the rest fall back to their defaults.

ParameterTypeRequiredDefaultDetails
model
Model name that will be resolved to the actual endpoint
stringnoseedance_1_0_pro
seedance_1_0_proseedance_1_0_pro_fastseedance_1_5_proseedance_2_0seedance_2_0_without_moderationseedance_2_0_fastseedance_2_0_miniseedance_2_5seedance_2_5_without_moderation
content
Input content items. All models support text and image_url. v2 models also support video_url and audio_url, enabling edit-video and extend-video flows via reference_video role. Limits for v2 (2.0): max 9 images, 3 videos, 3 audios; audio cannot be the only modality. Limits for 2.5: max 30 images, 10 videos, 10 audios; audio-only input is allowed. Roles: first_frame, last_frame (v1+v2), reference_image/reference_video/reference_audio (v2 only). Asset references (asset://<id>) are accepted as URL values for v2.
ContentItem[]no
type
Type of content item
stringyes
textimage_urlvideo_urlaudio_url
text
Text content (only when type is text)
stringno
image_url
Image URL object (only when type is image_url)
objectno
url
URL of the image
stringyes
video_url
Video URL object (only when type is video_url). Only supported by v2 models.
objectno
url
URL of the video
stringyes
audio_url
Audio URL object (only when type is audio_url). Only supported by v2 models.
objectno
url
URL of the audio
stringyes
role
Role of the content item (first_frame, last_frame, reference_image, reference_video, reference_audio)
stringno
first_framelast_framereference_imagereference_videoreference_audio
resolution
Video resolution (480p, 720p, 1080p, 4k). 1080p supported by seedance_1_0_pro, seedance_1_0_pro_fast, seedance_2_0 and seedance_2_5 (NOT seedance_2_0_fast, NOT seedance_2_0_mini). 4k supported by seedance_2_0 only (H.265/HEVC, 10-bit). seedance_2_5 supports 480p, 720p and 1080p. Affects billing.
stringno
480p720p1080p4k
ratio
Video aspect ratio. "adaptive" lets the model choose based on input. For seedance_2_5, first/last-frame generation and video-to-video editing/extension tasks (a video input) require "adaptive" — the worker forces it for those (output proportions follow the input), so any explicit ratio is ignored there. Text-to-video and reference-to-video keep the provided ratio.
stringno
16:94:31:13:49:1621:9adaptive
output_format
Output video container format. seedance_2_5 only. "mp4" (default) is the general-purpose H.264/AAC container; "mov" is a professional H.264 4:4:4 / PCM container with higher color fidelity and larger files.
stringno
mp4mov
duration
Duration in seconds: 3-12 (v1), 4-15 (v2 / 2.0), 4-30 (2.5), or -1 for auto (seedance_1_5_pro and v2 only). For seedance_2_5 editing tasks (a video input whose prompt is not an extension request) the worker forces -1 — output duration follows the source video. All other 2.5 tasks (text-to-video, first/last-frame, reference-to-video, extension) keep the caller value. Affects billing (charged per second).
object | objectno
generate_audio
Include synchronized audio. Supported by seedance_1_5_pro and v2 models. v2 defaults to true when omitted; pass false to disable. Affects billing.
booleanno
return_last_frame
Return the last frame of the generated video as a separate image (populates last_frame_url). Supported by all models, including v2 (seedance_2_0 / seedance_2_0_fast / seedance_2_0_mini) — used for last-frame / face-chaining flows.
booleanno
watermark
Whether to add AI generated watermark
booleannofalse
camerafixed
Fix the camera during generation. v1 models only, ignored for v2.
booleanno
options
Options controlling safety checks and drive integration
objectno
safety_checks
Safety check settings
objectno
enabled
Whether to run content moderation. Defaults to true.
booleanno
drive
Save result to Picsart Drive
objectno
name
File name in Picsart Drive
stringyes
attributes
Custom attributes to attach to the file
objectno
folder
Target folder in Picsart Drive
objectno

Response

Over HTTP the output arrives inside a status envelope, at response.result. ai.apis.run() unwraps that envelope for you and resolves to { result, usage } instead. Either way the resultitself is the vendor's own shape.

json
{
  "result": {
    "video_url": "https://cdn.picsart.com/…/result.mp4",
    "last_frame_url": "https://cdn.picsart.com/…/result.jpg",
    "output_format": "…",
    "mimeType": "video/mp4",
    "driveFile": {}
  },
  "usage": {
    "credits": 2
  }
}