APIMaster.ai

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.