메인 콘텐츠로 건너뛰기
POST
오른쪽의 플레이그라운드를 사용하십시오. Authorization을 Bearer sk-your-api-key(으)로 설정하고(Token에는 2.5 및 2.0 패밀리가 공유하는 SeeDance2 그룹이 필요합니다), model / content을(를) 입력한 후 전송합니다. 성공적으로 제출되면 태스크 id이(가) 반환되며, 폴링 및 다운로드 흐름은 아래 코드 샘플에서 다룹니다.
플레이그라운드의 “응답을 받지 못함(no response received)” 오류 안내: 이는 비동기 태스크 엔드포인트이며, 브라우저에서 전송을 클릭하면 해당 메시지가 표시될 수 있습니다. 브라우저의 교차 출처(cross-origin) 보안 검사로 인해 응답이 차단되었으나 태스크는 실제로 성공적으로 제출되었습니다(아래 조회 엔드포인트 또는 콘솔 로그를 통해 확인 가능). 또한 플레이그라운드에서는 태스크 생성만 가능하며, 동영상을 폴링하거나 다운로드할 수 없습니다. 생성 → 폴링 → 다운로드의 전체 흐름을 실행하려면 아래의 코드 샘플(cURL / Python / Node.js)을 복사하여 실행하십시오.
이 엔드포인트는 Seedance 2.0의 태스크 생성 엔드포인트입니다. 텍스트 투 비디오, 첫+마지막/첫 프레임, 멀티모달 레퍼런스 투 비디오가 모두 이 엔드포인트를 공유하며, content 배열을 통해 모드를 선택합니다. 모델 선택, 요금, 해상도/픽셀 표 및 FAQ는 Seedance 2.0 개요를 참조하십시오.
  • 경로 접두사는 /seedance/api/v3입니다 — /api 세그먼트를 생략하지 마시고, /v1/videos을(를) 사용하지 마십시오.
  • Token에 SeeDance2 그룹이 활성화되어 있어야 하며, 그렇지 않으면 “no available channel for this model” 오류가 발생합니다. 2.5와 2.0 패밀리 모두 SeeDance2을(를) 사용하므로, Token 하나로 4개 모델을 모두 이용할 수 있습니다.
  • generate_audio의 기본값은 true입니다(출력에 소리가 포함됨) — 무음 동영상의 경우 명시적으로 false을(를) 전달하십시오.
  • Python requests에는 "Accept-Encoding": "identity" 헤더가 필요합니다. 이 헤더가 없으면 gzip 디코딩 오류, 잘린 비-JSON 본문(예: 앞부분의 {"이(가) 누락되어 id":"cgt-xxx"}만 수신됨) 또는 간헐적인 400 오류가 발생할 수 있습니다.
  • 성공 상태는 succeeded입니다(completed이(가) 아님). 동영상 URL은 content.video_url에 위치하며 24시간 후 만료됩니다.

코드 예제

매개변수 참조

Seedance 2.5와 2.0 제품군은 모두 frames 또는 camera_fixed를 지원하지 않습니다 — 해당 매개변수는 Seedance 1.x의 매개변수이므로 무시되거나 거부됩니다.2.5에만 적용되는 작업 유형 제약 조건(위반 시 과금되지 않고 제출 시 InvalidParameter.TaskTypeConstraint이 반환됨):

생성 모드(콘텐츠 조합)

세 가지 이미지 모드는 서로 배타적입니다. 이미지는 공개 URL, Base64(data:image/png;base64,...) 및 에셋 ID(asset://...)를 사용할 수 있습니다. 실제 사람 얼굴이 포함된 입력은 거부됩니다. 엔드투엔드 에셋 참조 코드(수집 → asset:// → 생성 → 다운로드)는 에셋 참조 가이드를 참조하십시오. 대용량 미디어를 인라인으로 삽입하면 작업 생성이 느려집니다. Base64 페이로드를 업로드하거나 대용량 이미지 URL을 가져오는 데 걸리는 시간이 모두 제출 단계에 포함되므로, create-task 호출이 약 1초에서 수십 초까지 길어지거나 클라이언트 읽기 시간 초과가 발생할 수 있습니다. 요청에 이미지나 동영상이 포함된 경우 먼저 미디어를 수집하고 asset:// 에셋 ID로 참조하십시오. 에셋 우선 워크플로를 참조하십시오. 참조 한도는 생성 방식에 따라 다릅니다: 2.5는 이미지 30개 + 동영상 10개 + 오디오 클립 10개를 허용하며, 오디오만 단독 참조로 사용할 수도 있습니다. 2.0 제품군은 이미지 9개 + 동영상 3개 + 오디오 클립 3개를 허용하며, 오디오는 이미지 또는 동영상이 최소 1개 이상 포함된 상태로 전송해야 합니다. 편집 및 확장은 prompt의 의도로 트리거됩니다 — omni_reference_task_type는 유효성 검사 시점만 앞당깁니다. prompt에서는 에셋을 전달한 순서에 따라 위치로 참조하십시오(@video1, @image1). 편집에는 add / remove / change / replace와 같은 동사가 필요하고, 확장에는 extend / continue가 필요합니다. 모델이 prompt에서 추론한 작업 유형이 선언한 작업 유형과 충돌하면 작업은 비동기적으로 InvalidParameter.TaskTypeMismatch와 함께 실패합니다.

응답 형식

생성 시 동영상이 아닌 작업 ID만 반환됩니다:
id를 받으면 GET /seedance/api/v3/contents/generations/tasks/{id}을 폴링하여 작업 상태를 확인합니다.

권장 폴링 주기

대기열 시간을 포함한 종단 간 측정 지연 시간입니다. 2.0 계열의 720p에서는 5초 클립에 약 90–140초, 15초에는 170초가 걸립니다. 2.5에서는 720p/5초에 약 150초, 720p/30초에 330초, 1080p/5초에 150초가 걸립니다. 해상도가 높고 길이가 길수록 느려지며, 피크 시간대의 대기열로 인해 시간이 더 늘어납니다. 아래 코드 샘플에서는 고정된 20초 간격을 사용합니다. 충분히 적절하며 요청 횟수도 예측할 수 있습니다. 성공한 작업의 응답은 다음과 같습니다(테스트에서 사용한 실제 샘플).
  • 동영상 URL은 최상위 수준이 아닌 **content.video_url**에 있으며, 24시간 후 만료되는 서명된 링크이므로 즉시 다운로드합니다
  • 상태 머신: queued → running → succeeded / failed / expired; 성공 상태는 **succeeded**입니다
  • 일반 GET으로 링크를 다운로드합니다. 서명된 URL에 Authorization 헤더를 전송하지 마십시오
usage.completion_tokens은 과금되는 token 수이며 tokens ≈ duration × width × height × 24 / 1024을 따릅니다(테스트에서 오차 범위 0.1% 이내). duration: -1 또는 ratio: adaptive를 사용하면 실제 길이와 비율이 응답의 duration / ratio 필드에 보고됩니다.

인증

Authorization
string
header
필수

API key from the APIYI console (SeeDance2 group for both 2.5 and the 2.0 family)

본문

application/json

Shared schema for standard generation, 480p Drafts and 1080p final generation from Drafts. For a final video, use the finalFromDraft example with the same model, Draft task ID and optional resolution=1080p; do not resend inherited parameters.

model
string
필수

Model ID (plain ID, no ep- prefix). 2.5 supports 1080p, 4-30 s, and up to 30 images + 10 videos + 10 audio clips as references; 2.0 standard supports 1080p; fast and mini cap at 720p, with mini at about half the standard price. No model supports 4k

예시:

"doubao-seedance-2-5-260628"

"doubao-seedance-2-0-260128"

"doubao-seedance-2-0-fast-260128"

"doubao-seedance-2-0-mini-260615"

content
object[]
필수

Input array. Text-to-video: a single text item. Image-to-video: add image_url items (role: first_frame / last_frame). Multi-modal reference-to-video: image_url items (role: reference_image) plus optional video_url / audio_url. Reference limits: 2.5 allows 30 images + 10 videos + 10 audio clips and audio may stand alone; the 2.0 family allows 9 images + 3 videos + 3 audio clips and needs at least 1 image or 1 video. The three image modes are mutually exclusive. For final generation from a Draft, send only one draft_task item with no text or media

Minimum array length: 1
resolution
enum<string>

Resolution tier (defines pixel area; every ratio in a tier costs the same). Standard generation defaults to 720p; 1080p is available on 2.5 and 2.0 standard only, while fast and mini cap at 720p. With draft=true, explicitly set 480p. Final generation from draft_task defaults to and only supports 1080p

사용 가능한 옵션:
480p,
720p,
1080p
예시:

"720p"

draft
boolean
기본값:false

Generate a Draft, supported on Seedance 2.5 only. true requires resolution=480p. Omit or set false for final generation from draft_task. Draft and final tasks are billed separately by actual tokens at their respective resolution rates

예시:

true

ratio
enum<string>

Aspect ratio. Standard generation defaults to adaptive to auto-fit the input (recommended for image-to-video to avoid cropping); the actual ratio is returned in the task's ratio field. Do not send for final generation from draft_task; the Draft value is reused

사용 가능한 옵션:
16:9,
4:3,
1:1,
3:4,
9:16,
21:9,
adaptive
duration
integer

Video length in whole seconds: 4-30 on 2.5, 4-15 on the 2.0 family; or -1 to let the model choose (billed by actual output). Cost scales linearly with duration. The default is -1 on 2.5 and 5 on the 2.0 family. Do not send for final generation from draft_task; the Draft value is reused

예시:

5

generate_audio
boolean

Generate synchronized audio (voice, SFX, background music; mono). Standard generation defaults to true; pass false explicitly for silent video. Do not send for final generation from draft_task; the Draft value is reused

watermark
boolean
기본값:false

Add an AI-generated watermark in the bottom-right corner

seed
integer

Random seed, [-1, 2^32-1], defaulting to -1 for standard generation. The same seed produces similar (not identical) results; -1 means random. Do not send for final generation from draft_task; the Draft value is reused

return_last_frame
boolean
기본값:false

Return the last frame as a watermark-free png (same dimensions as the video) — chain it as the first frame of the next task to produce continuous multi-clip videos

execution_expires_after
integer
기본값:172800

Task expiry threshold in seconds; tasks exceeding it are marked expired. Range [3600, 259200]

output_format
enum<string>
기본값:mp4

Output container, supported on doubao-seedance-2-5-260628 only. mov is a QuickTime container (H.264 + yuv444p + PCM) with better colour fidelity for post-production, but some players cannot open it

사용 가능한 옵션:
mp4,
mov
omni_reference_task_type
enum<string>

Task type for omni-reference generation, supported on doubao-seedance-2-5-260628 only, defaulting to auto for standard generation. Declaring edit or extend validates constraints up front: video editing requires ratio=adaptive and duration=-1, video extension requires ratio=adaptive; violations return InvalidParameter.TaskTypeConstraint at submission. Do not send for final generation from draft_task; the Draft value is reused

사용 가능한 옵션:
auto,
edit,
extend

응답

Task created. Returns the task ID for polling

Creation response. Poll GET /seedance/api/v3/contents/generations/tasks/{id}; on success the video URL is at content.video_url (expires in ~24 h) and billed tokens at usage.completion_tokens. Once a Draft succeeds, reference its ID in content[].draft_task.id within 7 days of creation to generate a final video

id
string

Video generation task ID (kept for 7 days)

예시:

"cgt-20260606160057-6bbjd"