비디오 생성
Seedance 2.5로 영화 같은 비디오 클립을 생성합니다 — 텍스트-투-비디오, 이미지-투-비디오, 비디오-투-비디오.
Portrait 를 입력으로 사용
가상 또는 실제 인물 Portrait를 asset://<asset-id> 형태의 멀티모달 입력으로 전달하여 비디오 생성에서 참조합니다. asset://는 seedance-2.0 / seedance-2.0-fast에서만 지원되며 — seedance-2.5에서는 지원되지 않습니다. 전체 온보딩 절차는 Portrait 가이드를 참조하세요.
개요
Seedance 모델을 사용하여 텍스트 프롬프트, 참조 이미지 또는 참조 비디오로부터 짧은 영화 같은 비디오 클립을 생성합니다. seedance-2.5는 현재 플래그십으로 텍스트-투-비디오, 이미지-투-비디오, 비디오-투-비디오를 모두 지원합니다(reference_video를 통해 참조 비디오로 새 클립을 구동).
비디오 생성
Videos API를 사용하여 비디오 생성 작업을 제출합니다:
| 1 | curl https://api.alltoken.ai/v1/videos/generations -H "Authorization: Bearer $ALLTOKEN_API_KEY" -H "Content-Type: application/json" -d '{ |
| 2 | "model": "seedance-2.5", |
| 3 | "prompt": "A serene mountain lake at sunrise, cinematic 4K", |
| 4 | "ratio": "16:9", |
| 5 | "duration": 5, |
| 6 | "resolution": "720p" |
| 7 | }' |
참조 소재
텍스트 프롬프트 외에도, Seedance는 content[] 배열을 통해 참조 이미지, 비디오, 오디오를 받을 수 있습니다. 각 항목은 type과 role을 가집니다:
| 소재 | type | 사용 가능한 role |
|---|---|---|
| 이미지 | image_url | reference_image, first_frame, last_frame |
| 비디오 | video_url | reference_video |
| 오디오 | audio_url | reference_audio |
각 소재를 제공하는 방법은 두 가지이며, 한 요청 안에서 혼용할 수 있습니다:
- 이미 공개 호스트에 있는 경우 — type 객체 안에
http(s)URL을 넣어 전달합니다. 예:{ "type": "image_url", "image_url": { "url": "https://..." }, "role": "reference_image" }. 업스트림에서 공개적으로 접근 가능해야 합니다(비공개 또는 서명 전용 링크 불가). - 로컬 파일 — 사전 서명 후 업로드한 다음, 반환된
upload_id를 참조합니다:{ "type": "image_url", "upload_id": "upl_...", "role": "reference_image" }.
경고
data: base64 인라인 경로는 2026-08-06에 제거되었습니다. data: 미디어를 담은 비디오 요청은 이제 400 inline_media_removed를 반환합니다. 인라인 URL을 upload_id로 교체하여 마이그레이션하세요 — 나머지 필드는 모두 동일하게 유지됩니다. http(s) URL과 upload_id는 영향을 받지 않습니다.
| 1 | - { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBOR..." }, "role": "reference_image" } |
| 2 | + { "type": "image_url", "upload_id": "upl_9f3c...", "role": "reference_image" } |
role 기본값과 프레임 규칙
type은 짧은 형식 image / video / audio로 쓸 수 있지만(게이트웨이가 정규화합니다), role을 생략하면 기본값이 적용됩니다 — 그리고 이미지의 기본값은 예상과 다를 수 있습니다:
짧은 type | 정규화 결과 | 생략 시 기본 role |
|---|---|---|
image | image_url | first_frame — reference_image가 아닙니다! |
video | video_url | reference_video |
audio | audio_url | reference_audio |
즉 { "type": "image", "upload_id": "upl_..." }은 참조 이미지가 아니라 첫 프레임으로 처리됩니다. 명시적인 role을 쓰는 긴 형식을 권장하며 기본값에 의존하지 마세요. GET 작업 응답은 감지된 input_type을 되돌려주므로, 게이트웨이가 content[]를 어떻게 해석했는지 확인할 수 있습니다.
경고
프레임과 시각적 참조는 혼용할 수 없습니다. 업스트림은 이 둘을 상호 배타적인 방식으로 취급합니다: first_frame / last_frame(시작/끝 화면을 지정)와 reference_image / reference_video(스타일 또는 피사체 참조 제공). 한 요청에서 두 종류의 시각 소재를 함께 사용하면 400 invalid_request를 반환합니다. reference_audio는 예외입니다 — "이미지를 첫 프레임으로 + 오디오를 참조로"는 지원되는 조합입니다.
입력 제약
| 제약 | 값 | 누구의 제한 |
|---|---|---|
| 참조 비디오 픽셀 수 | ≥ 409,600 (즉 640×640 이상) | 업스트림 모델 — 그대로 전달 |
| 파일당 업로드 크기 | 미디어 업로드의 purpose 상한 참조 | AllToken |
| 참조 이미지 개수 | 업스트림 문서에는 9개로 되어 있으나, 당사는 제한하지 않음 | 업스트림 |
참조 비디오가 너무 작으면 업스트림 오류가 그대로 전달됩니다(예: InvalidParameter: ... video pixel count ... must be greater than or equal to 409600 ...). frames와 camera_fixed는 2.0 시리즈에서 지원되지 않으며, 거부되는 대신 조용히 무시됩니다.
지원 모델
실시간 목록은 GET /videos/models를 호출하세요. seedance-2.5가 현재 플래그십이며(텍스트-투-비디오, 이미지-투-비디오, 비디오-투-비디오), asset:// Portrait 참조는 2.0 라인에 유지됩니다.
| Model | 주요 용도 | asset:// portrait reference |
|---|---|---|
seedance-2.5 | 플래그십 — 텍스트 / 이미지 / 비디오-투-비디오 | ❌ 지원 안 됨 (Portrait는 2.0 전용) |
seedance-2.0 / seedance-2.0-fast | Portrait(asset://) 워크플로 | ✅ 지원 |
seedance-1.5-pro | 이전 세대 | ❌ 지원 안 됨 (일반 이미지 URL 사용) |
asset_id를 얻는 방법은 Portrait 가이드를 참조하세요.
파라미터
model—"seedance-2.5"(플래그십),"seedance-2.0","seedance-2.0-fast", 또는"seedance-1.5-pro"; 실시간 목록은GET /videos/models를 호출하세요prompt— text description of the desired videoratio—"16:9","9:16","4:3","3:4","21:9","1:1", or"adaptive"duration— length in seconds;-1lets the model choose automaticallyresolution—"480p","720p", or"1080p"content— multimodal input array for image-to-video or references, for example{ "type": "image_url", "image_url": { "url": "..." }, "role": "first_frame" }. Images containing real human faces must go through Portrait first — passasset://<asset_id>after onboarding (see Portrait guide); public URLs of real-person images may be rejected upstream for deepfake / consent compliance.
작업 상태 확인
Video generation is asynchronous. Poll for status:
$curl https://api.alltoken.ai/v1/videos/generations/{task_id} -H "Authorization: Bearer $ALLTOKEN_API_KEY"The response includes status (queued, processing, completed, failed, expired, or cancelled) and a download URL when complete.
작업 취소
Cancel a queued or processing task:
$curl -X POST https://api.alltoken.ai/v1/videos/generations/{task_id}/cancel -H "Authorization: Bearer $ALLTOKEN_API_KEY"Tasks already completed, failed, or cancelled cannot be cancelled.