Seedance 2.0 Fast 비디오 생성 API
APIMaster에서의 Seedance 2.0 고속 매개변수, 참조 미디어, 비동기 작업, 인증된 다운로드 및 지속 시간 과금.
Seedance 2.0 고속 비디오 생성
텍스트-투-비디오, 이미지-투-비디오, 첫/마지막 프레임 생성, 비디오 또는 오디오 참조에 seedance-2.0-fast을 사용하세요. 고속 모드는 480p와 720p을 지원하며, 출력 지속 시간은 4초부터 15초까지입니다.
첫/마지막 프레임 생성을 위해서는
aspect_ratio: "adaptive"을 명시적으로 설정하세요. 참조 오디오는 이미지나 비디오와 함께 제공되어야 합니다. APIMaster API 키는 서버에 보관하세요.
엔드포인트 및 인증
기본 URL: https://apimaster.ai/v1. 작업 제출, 조회 및 다운로드 시 Authorization: Bearer YOUR_API_KEY을 전송하세요.
| 작업 | 메서드 및 경로 |
|---|---|
| 비디오 생성 | POST /v1/videos/generations |
| 호환 결과 조회 | GET /v1/video/generations/{task_id} |
| OpenAI 스타일 결과 조회 | GET /v1/videos/{task_id} |
| 비디오 다운로드 | GET /v1/videos/{task_id}/content |
| 요청된 마지막 프레임 다운로드 | GET /v1/videos/{task_id}/last-frame |
APIMaster가 반환한 공개 task_id을 사용하세요. 비디오 작업과 미디어 검토 작업은 다른 리소스입니다: 비디오에 대해서는 위의 비디오 조회 엔드포인트를 사용하세요. 수락된 요청은 하나의 비동기 작업을 생성하며, HTTP 성공은 비디오가 완료되었음을 의미하지 않습니다.
매개변수
| 필드 | 유형 | 필수 / 기본값 | 설명 |
|---|---|---|---|
model |
문자열 | 필수 | seedance-2.0-fast |
prompt |
문자열 | 필수 | 최대 4000자. 주제, 동작, 장면, 카메라, 원하는 오디오를 설명하세요; 간결한 프롬프트가 제어하기 쉽습니다. |
duration |
정수 | 5 |
출력 길이, 4–15초. -1은 지원되지 않습니다. |
resolution |
문자열 | 720p |
480p 또는 720p; 1080p 및 4k은 지원되지 않습니다. |
aspect_ratio |
문자열 | 16:9 |
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 또는 adaptive. |
ratio |
문자열 | aspect_ratio과 동일 |
APIMaster 별칭. 둘 다 나타나면 값이 일치해야 합니다. |
size |
문자열 | aspect_ratio과 동일 |
16:9 또는 adaptive와 같은 비율. 두 차원을 별도로 표현하려면 aspect_ratio와 resolution를 사용하는 것이 좋습니다. 충돌하는 명세는 400을 반환합니다. |
seed |
정수 | 생략됨 | 변이를 제어합니다; 일치하는 시드가 동일한 출력을 보장하지는 않습니다. |
generate_audio |
불리언 | true |
동반 오디오 생성; 무음 출력에는 false을 사용하세요. |
image_urls |
문자열[] | 생략됨 | 최대 9개의 참조 이미지. 공개 이미지 URL 또는 승인된 APIMaster asset:// ID. |
image_with_roles |
객체[] | 생략됨 | url 및 role을 가진 이미지 객체; image_urls와 함께 나타날 수 없습니다. 아래 역할 규칙을 참조하세요. |
video_urls |
문자열[] | 생략됨 | 최대 3개의 참조 비디오, 총 과금 가능 입력 지속 시간은 최대 15초입니다. 소재 요구 사항을 참조하세요. |
audio_urls |
문자열[] | 생략됨 | 최대 3개의 참조 오디오 파일, 결합된 지속 시간 최대 15초. 이미지 또는 비디오 참조가 필요합니다. |
return_last_frame |
불리언 | false |
성공적으로 완료되면 결과에 마지막 프레임이 포함될 때 인증된 APIMaster 마지막 프레임 다운로드 URL을 반환합니다. |
nsfw_check |
불리언 | false |
생성 전 텍스트/이미지 콘텐츠 검토를 요청합니다. 비디오와 오디오는 이 검토 단계에 포함되지 않습니다. |
tools |
객체[] | 생략됨 | 검색 도구 선언: [{"type":"web_search"}]. |
초안 생성 및 초안 업그레이드는 Seedance 2.5에만 해당됩니다. 이 모델에 draft: true 또는 draft_task_id를 전달하지 마세요.
참고 자료
공개적으로 접근 가능한 HTTPS URL 또는 APIMaster 미디어 라이브러리에서 승인된 ID를 제공하세요. 로그인 페이지 뒤에 있거나 자체 인증 헤더가 필요한 파일은 가져올 수 없습니다. 이미지 업로드가 성공했다고 해서 모든 모델 요구사항에 대한 콘텐츠 승인 또는 준수를 의미하지는 않습니다.
| 자료 | 요구사항 |
|---|---|
| 참고 이미지 | 최대 9; 읽을 수 있는 RGB JPEG/PNG 이미지를 사용하세요. APIMaster 이미지 업로드 엔드포인트는 자체 20 MiB 제한이 있으며 JPEG, PNG, GIF, WebP를 허용합니다. |
| 참고 동영상 | 최대 3; MP4/MOV, H.264/H.265 비디오; 오디오가 있는 경우 AAC/MP3 오디오. 480p–720p 참고 동영상을 사용하세요. 결합된 참고 동영상 지속 시간은 15 청구 가능 초 내에 맞아야 합니다. APIMaster는 요금 부과 전에 접근 가능한 MP4/MOV 지속 시간을 확인합니다; 입력 클립 지속 시간은 이 확인 및 청구를 위해 전체 초로 올림 처리됩니다. |
| 참고 오디오 | 최대 3; WAV 또는 MP3, 파일당 최대 20 MB, 결합된 지속 시간 최대 15 초. 항상 이미지 또는 동영상 참고 자료와 함께 제공하세요. |
충분한 디테일이 있는 선명한 이미지를 사용하고, 손상되거나 불완전한 파일을 피하며, 참고 동영상의 움직임이 프롬프트와 일관되게 유지되도록 하세요. 제출이 수락되더라도 미디어는 비동기적 형식 또는 콘텐츠 검토에서 실패할 수 있습니다.
이미지 역할
role |
의미 |
|---|---|
first_frame |
시작 프레임; 최대 하나 |
last_frame |
종료 프레임; 최대 하나, 시작 프레임 필요 |
reference_image |
참고 이미지, 승인된 캐릭터 에셋 포함 |
시작/종료 프레임 작업의 경우, aspect_ratio을 adaptive로 설정하고 video_urls 및 audio_urls을 생략하세요. 명시적인 역할에는 image_with_roles를 사용하세요; image_urls를 함께 전달하지 마세요.
{
"model": "seedance-2.0-fast",
"prompt": "A paper boat drifts gently from the starting composition to the ending composition",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_with_roles": [
{"url": "https://your-storage.example/start.png", "role": "first_frame"},
{"url": "https://your-storage.example/end.png", "role": "last_frame"}
],
"generate_audio": false
}
업로드 및 미디어 라이브러리
로컬 이미지를 POST /v1/uploads/images로 업로드하려면 멀티파트 필드 file와 Bearer 인증을 사용하세요. 반환된 최상위 url는 공개 이미지 입력으로 사용할 수 있습니다.
curl "https://apimaster.ai/v1/uploads/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@reference.png"
재사용 가능하거나 캐릭터 자료의 경우, POST /v1/seedance2/private-avatar/groups로 그룹을 생성하고, POST /v1/seedance2/private-avatar/assets로 자료를 제출하며, GET /v1/tasks/{asset_task_id}로 검토를 조회하고, Active 에셋만 asset://{asset_id}으로 사용하세요. 이러한 리소스는 귀하의 계정에 속합니다. model: "seedance-2.0-fast"를 명시적으로 지정하세요. 다른 플랫폼이나 계정의 에셋 ID는 여기서 사용할 수 없습니다.
생성, 제출, 검토, 부분 실패 및 삭제에 대해서는 미디어 라이브러리 워크플로를 참조하세요. 업로드 및 에셋 관리 엔드포인트는 공유됩니다. 이 페이지의 생성 제한은 Fast에 적용됩니다. 실패한 검토는 상세한 이유를 반환하지 않을 수 있습니다. 지원되는 형식의 명확하고 준수된 자료를 사용하고 새로운 검토를 제출하세요. 기존 검토가 아직 처리 중일 때 작업을 반복적으로 다시 생성하지 마세요.
동영상 제출
curl "https://apimaster.ai/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"seedance-2.0-fast",
"prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
"duration":5,
"resolution":"720p",
"aspect_ratio":"16:9",
"generate_audio":true,
"return_last_frame":true
}'
생성 응답:
{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}
제출 타임아웃은 모호합니다: 요청이 수락되었을 수 있습니다. 다시 제출하기 전에 작업 기록을 확인하세요. 또 다른 성공적인 제출은 별도의 청구 가능 작업을 생성합니다.
동영상 및 오디오 참고
{
"model": "seedance-2.0-fast",
"prompt": "Follow the reference motion and keep the scene consistent with the image",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://your-storage.example/reference.png"],
"video_urls": ["https://your-storage.example/reference.mp4"],
"audio_urls": ["https://your-storage.example/reference.mp3"],
"generate_audio": true
}
조회 및 다운로드
3–5초마다 폴링하세요. 성공 또는 실패 시 중지하세요.
curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
호환 가능한 조회 성공:
{
"code":"success",
"message":"",
"data":{
"error":null,
"format":"mp4",
"metadata":null,
"status":"succeeded",
"task_id":"task_PUBLIC_VIDEO_ID",
"url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
"actual_time":118,
"last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
}
}
예시에는 선택적 완료 필드가 포함되어 있습니다. actual_time은 제출부터 완료까지 경과된 시간(초)이며, 청구 가능한 비디오 지속 시간이 아닙니다. last_frame_url은 마지막 프레임이 요청되지 않았거나 사용할 수 없는 경우 생략됩니다. 실패한 작업에는 성공 시에만 제공되는 경과 시간 또는 마지막 프레임 필드가 포함되지 않습니다.
OpenAI 스타일 조회:
curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
| 의미 | 호환 가능한 data.status |
OpenAI 스타일 status |
|---|---|---|
| 대기 중 | queued |
queued |
| 생성 중 | processing |
in_progress |
| 성공 | succeeded |
completed |
| 실패 | failed |
failed |
OpenAI 스타일 객체는 공개 작업 ID에 id를, 비디오 다운로드 URL에 url을 사용합니다. 선택적 actual_time 및 last_frame_url는 최상위 수준에 나타납니다. 실패 시 해당 결과 객체에서 error.message을 확인하세요. 응답에는 금액 관련 필드가 포함되지 않습니다.
동일한 계정의 API 키로 다운로드하세요. 인증 없이 결과 URL을 여는 것만으로는 충분하지 않습니다. 출력물을 즉시 저장하세요.
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
-H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
-H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg
Python 전체 워크플로
import os
import time
import requests
base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
"model": "seedance-2.0-fast",
"prompt": "A small paper boat on calm water at sunrise",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
"return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
response = requests.get(base + "/video/generations/" + task_id,
headers=headers, timeout=30)
response.raise_for_status()
task = response.json()["data"]
if task["status"] == "failed":
raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
if task["status"] == "succeeded":
print("Elapsed seconds:", task.get("actual_time"))
for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
if task.get(field):
with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
result.raise_for_status()
with open(filename, "wb") as out:
for chunk in result.iter_content(1024 * 1024):
out.write(chunk)
break
time.sleep(5)
else:
raise TimeoutError("Task still processing; query the same task_id later")
기간별 과금
네 가지 등급이 있습니다: 480P, 720P, 480P-input, 720P-input. "업로드된 비디오"로 표시된 등급은 요청에 참조 비디오 입력이 포함됨을 의미합니다. 이미지/오디오 참조도 함께 존재하는 경우에도 요청된 출력 해상도에 대한 입력 등급을 선택하세요.
- 참조 비디오 없음: 생성된 비디오 초 × 해당 해상도의 단가.
- 참조 비디오 있음: (총 참조 비디오 초 + 생성된 비디오 초) × 해당 입력 등급 단가.
- 구성된 기본 단가는 적용 가능한 채널 및 계정/그룹 계수와 곱해져 최종 단가를 산출합니다. 적용 가능한 가격은 모델 카드와 지갑 사용 기록을 확인하세요.
예를 들어, 4초 길이의 참조 비디오와 5초 길이의 출력은 입력 등급에서 9 청구 가능 초를 사용합니다. 입력 등급 단가는 일반 등급과 다를 수 있습니다; 출력 지속 시간만 계산하거나 비디오 참조에 일반 등급을 적용하지 마세요. 이미지와 오디오는 참조 비디오 초를 추가하지 않습니다. 생성된 오디오는 이 네 가지 구성된 가격에 대해 별도의 소리/무음 등급을 도입하지 않습니다.
제출 시 요청된 출력 지속 시간과, 존재하는 경우 검증된 입력 비디오 지속 시간이 예약됩니다. 생략된 출력 지속 시간은 5 출력 초를 예약합니다. 작업은 제출 시점의 요금제를 유지하며, 완료 시 실제 지속 시간으로 정산됩니다. 생성 실패 시 비디오 작업 요금이 환불됩니다.
오류 및 문제 해결
잘못된 요청은 HTTP 오류를 반환합니다. 상태 코드뿐만 아니라 JSON 오류 메시지도 읽으세요. 매개변수 유효성 검사는 APIMaster의 오류 래퍼를 사용합니다. 예를 들어:
{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
| 문제 | 조치 |
|---|---|
| 지원되지 않는 해상도 / 지속 시간 | 480p 또는 720p, 그리고 4부터 15까지의 정수 지속 시간을 선택하세요. |
| 충돌하는 비율 또는 크기 | 일관된 aspect_ratio, ratio, size, resolution를 사용하세요; 가능하면 명시적인 비율/해상도 쌍만 유지하는 것이 좋습니다. |
| 첫 번째/마지막 프레임 제약 조건 | adaptive을 사용하고, 각 역할은 최대 하나씩만 사용하며, 비디오/오디오 참조는 생략하세요. |
| 참조 비디오를 검사할 수 없음 | 접근 가능한 완전한 MP4/MOV 파일과 유효한 지속 시간을 제공하세요. |
| 이미지/비디오 없이 참조 오디오만 있음 | 이미지/비디오 참조를 추가하거나 오디오 참조를 제거하세요. |
| 콘텐츠 심사 거부 | 텍스트나 이미지를 수정하고 새 요청을 제출하세요. 심사 서비스 실패로 생성이 계속될 수 있습니다; 이는 절대적인 안전성 보장이 아닙니다. |
FormatUnsupported / 비동기식 형식/콘텐츠 거부 |
실패한 작업의 error.message을 읽고, 형식과 자료 요구 사항을 확인한 후 소스를 교체하세요. |
401 |
유효한 Bearer API 키를 제공하세요. |
| 잔액 부족 | 충전하거나 충분한 할당량이 있는 키를 사용하세요. |
429 / 일시적 서비스 오류 |
대기하고 백오프와 함께 재시도하세요; 모호한 타임아웃 후 중복 제출을 피하세요. |
동기식 잘못된 매개변수 요청은 비디오 작업을 생성하거나 생성 요금을 부과하지 않습니다. 수락된 작업도 비동기적으로 실패할 수 있습니다; 결과를 사용하기 전에 최종 작업 상태를 확인하세요.
참고: 비디오 생성 개요, Seedance 2.0, Seedance 2.0 Mini, Seedance 2.5.
