사용 가이드
Seedance-2.0-Fast와 hiapi API로 숏폼 영상 만들기
TL;DR
- 무엇인가: hiapi API를 통해 seedance-2.0-fast로 TikTok/Reels 스타일의 세로형 숏폼을 제작하는 완전한 워크플로입니다. 첫 비동기 작업 호출부터 배치 스크립트로 일주일치 게시물을 한 번에 렌더링하는 것까지 다룹니다. 아래에 삽입된 숏폼은 이 가이드에서 보여주는 것과 정확히 동일한 요청으로 생성되었습니다.
- 숏폼에 이 모델을 선택하는 이유: 네이티브
9:16출력, 4–15초 길이, 720p 렌더링 기준 초당 $0.1772 — 5초 세로형 숏폼 한 편은 약 $0.89입니다(실시간 가격). 480p 초안 티어는 초당 $0.0843으로, 최종 렌더를 확정하기 전에 오프닝 훅을 저비용으로 반복 다듬을 수 있습니다. - 검증된 API 사실:
prompt,resolution(480p|720p),duration(정수, 4–15)은 필수입니다.aspect_ratio는1:1,4:3,3:4,16:9,9:16,21:9,adaptive를 받습니다. 이미지→영상은image_urls로 정지 이미지 한 장을 전달합니다. 모든 것이 통합 비동기/v1/tasks엔드포인트로 처리됩니다. 따로 배워야 할 영상 전용 API는 없습니다. - 워크플로: 먼저 480p로 초안을 뽑아 콘셉트를 확정하고, 최종으로 남길 버전만 720p로 다시 렌더링합니다. 또한 작업 제출이 블로킹되지 않으므로 여러 프롬프트를 병렬로 분배할 수 있습니다.
seedance-2.0-fast가 숏폼 루프에 적합한 이유
숏폼 콘텐츠는 규모의 게임입니다. 단 하나의 숏폼만 올리는 일은 드물고, 오히려 하나의 큐를 올린 뒤 잘 된 것만 남깁니다. 그래서 영상 모델에 실제로 요구하는 것이 달라집니다. 원본 화질보다 빠른 속도, 저렴한 비용, 네이티브 세로형 출력이 더 중요해집니다. seedance-2.0-fast는 바로 이 트레이드오프를 중심으로 설계되었습니다.
- 초 단위 과금으로 반복 비용을 통제할 수 있습니다. 480p에서 4초 초안은 약 $0.34이며, 아래와 같은 5초 숏폼은 480p에서 $0.42, 720p에서 $0.89입니다. 과금이 순전히
duration × rate로 이루어지므로duration이 유일한 비용 레버입니다. 예산에 별도로 고려해야 할 '화질' 할증은 없습니다(실시간 가격 페이지와 대조 검증 완료). - 네이티브
9:16. 16:9 숏폼을 크롭해 프롬프트가 묘사한 구도를 잃는 대신,aspect_ratio로 세로형을 직접 렌더링합니다. - 참조 영상 모드가 더 비싸지 않고 더 저렴합니다. 스타일/모션 가이드용으로
reference_video_urls숏폼을 전달하면 요금이 720p 기준 초당 $0.1072, 480p 기준 초당 $0.0486으로 낮아집니다. 한 가지 스타일을 찾아 배치 전체에 반복하고 싶을 때 유용합니다.
일상적인 대량 콘텐츠가 아니라 핵심 작품을 올리는 경우에도 아래 워크플로는 그대로 적용됩니다. 더 넓은 모델 소개는 동반 글 API 통합을 위한 seedance-2.0-fast를 참고하세요.
준비물
hiapi API 키만 있으면 됩니다. SDK는 필요 없습니다:
export HIAPI_API_KEY="sk-..."
hiapi의 모든 영상 모델은 동일한 비동기 작업 엔드포인트를 사용합니다. POST https://api.hiapi.ai/v1/tasks가 즉시 taskId를 반환하고, 이후 GET /v1/tasks/{taskId}를 완료될 때까지 폴링합니다. 전체 참고는 문서를 보세요.
첫 세로형 숏폼
최소 유효 요청에는 prompt, resolution, duration이 필요합니다. 숏폼 화면비를 위해 aspect_ratio: "9:16"을 추가하세요:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"input": {
"prompt": "클로즈업 세로형 샷: 두 손이 노릇하게 구운 팬케이크 한 장을 높이 쌓인 팬케이크 더미 위에 올린다. 팬케이크는 햇살이 잘 드는 컨트리 스타일 주방의 소박한 나무 테이블 위 유리 접시에 담겨 있고 김이 피어오른다. 따뜻한 아침 빛이 왼쪽에서 들어온다. 이어서 꿀이 맨 위 팬케이크 위로 천천히 부어지며 빛을 받아 반짝이고, 김은 계속 피어오른다. 아늑하고 자연스러운 핸드헬드 느낌, 얕은 심도, 따뜻한 색감. 텍스트 오버레이 없음.",
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 5
}
}'
응답은 즉시 작업 ID를 반환합니다:
{"code": 200, "data": {"taskId": "tk-hiapi-..."}, "message": "success"}
status가 success가 될 때까지 폴링한 뒤 output[0].url을 즉시 다운로드하세요. 해당 URL은 유효기간이 있습니다. 아래는 이 요청으로 실제 생성된 숏폼입니다:
이 렌더는 720×1280(깔끔한 9:16)이며 길이는 5초를 약간 넘고, 과금은 $0.886입니다. 정확히 5 × $0.1772로, 초 단위 과금이 가격 페이지의 주장이 아니라 실제로 작동함을 확인해 줍니다.
실시간 API로 검증한 입력 스키마
seedance-2.0-fast의 스키마는 엄격합니다. 지원하지 않는 필드를 보내면 조용히 무시되지 않고 400이 반환됩니다:
| 필드 | 타입 | 필수 | 값 |
|---|---|---|---|
prompt |
string | ✅ | 샷 설명 |
resolution |
string | ✅ | 480p, 720p |
duration |
integer | ✅ | 4–15(초) |
aspect_ratio |
string | 선택 | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive |
image_urls |
array | 선택 | 이미지→영상용 소스 정지 이미지 |
필수 필드를 생략하면 아무것도 생성되기 전에 작업이 거부됩니다. 형식이 잘못된 요청에는 과금되지 않습니다. 이 표의 필드명을 정확히 맞추세요. 다른 영상 모델용으로 작성한 숏폼 스크립트(motion_strength, seed, first_frame_url 포함)는 여기서 무시되지 않고 400을 받습니다.
재사용 가능한 Python 함수
제출, 폴링, 다운로드 — 약 30줄이면 프로덕션 루프가 완성됩니다:
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def submit(prompt: str, duration: int = 5, resolution: str = "720p",
aspect_ratio: str = "9:16", **extra) -> str:
r = requests.post(API, headers=HEADERS, json={
"model": "seedance-2.0-fast",
"input": {"prompt": prompt, "duration": duration,
"resolution": resolution, "aspect_ratio": aspect_ratio, **extra},
}, timeout=60)
data = r.json()
task_id = (data.get("data") or {}).get("taskId")
if not task_id:
raise RuntimeError(f"submit failed: {data}")
return task_id
def wait(task_id: str, timeout_s: int = 900) -> dict:
deadline = time.time() + timeout_s
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
return task
if task["status"] == "fail":
raise RuntimeError(f"task failed: {task.get('error')}")
time.sleep(8)
raise TimeoutError(task_id)
def make_clip(prompt: str, out_path: str, **kw):
task = wait(submit(prompt, **kw))
url = task["output"][0]["url"] # 유효기간 있음 — 즉시 다운로드
with open(out_path, "wb") as f:
f.write(requests.get(url, timeout=120).content)
5초 720p 렌더는 보통 1~2분 안에 완료됩니다. 피크 부하 시에는 타임아웃으로 간주하기 전에 최대 약 10분까지 여유를 두세요.
이미지→영상: 고정된 화면에서 시작하기
제품이나 브랜드가 주도하는 숏폼에서는 프롬프트 드리프트가 진짜 위험입니다. 모델이 해석한 대상이 아니라 당신의 제품이나 접시가 화면에 담기길 원하기 때문입니다. image_urls가 이 문제를 해결합니다. 정지 이미지를 생성하거나 촬영한 뒤 움직이게 하면 됩니다.
task_id = submit(
"팬케이크 더미가 살며시 자리 잡고 김이 계속 위로 피어오르다가, 이내 꿀이 화면 밖에서 부어지기 시작해 처음 몇 방울이 맨 위 팬케이크에 떨어진다. 느리고 안정적인 핸드헬드 모션, 따뜻한 아침 빛.",
duration=5, resolution="720p", aspect_ratio="9:16",
image_urls=["https://your-cdn.example/pancake-still.jpg"],
)
구도, 조명, 피사체 위치가 참조 정지 이미지에 고정됩니다. 프롬프트는 이후에 일어나는 모션만 묘사하면 됩니다. 모델의 자체 해석보다 오프닝 화면이 더 중요한 모든 숏폼(요리 한 접시, 제품 사진, 브랜드 세트)에 이상적입니다.
하루치 숏폼 배치 생성
/v1/tasks가 비동기이므로 배치 제작은 전부 제출한 뒤 수집하는 것입니다.
briefs = [
("hook-pancakes", "클로즈업 세로형 샷: 두 손이 노릇하게 구운 팬케이크를 쌓는다..."),
("hook-latte", "세로형 샷: 우유를 붓는 동안 갓 만든 라떼 위로 김이 피어오른다..."),
("hook-citrus", "세로형 매크로 샷: 칼이 감귤류 과일을 가른다..."),
]
tasks = {name: submit(p, duration=5) for name, p in briefs} # 병렬 분배
for name, tid in tasks.items(): # 결과 수집
result = wait(tid)
url = result["output"][0]["url"]
open(f"{name}.mp4", "wb").write(requests.get(url, timeout=120).content)
과금이 엄격히 duration × rate이므로 비용은 예측 가능하게 유지됩니다:
| 시나리오 | 사양 | 비용 |
|---|---|---|
| 초안 반복 1회 | 4초 · 480p | 약 $0.34 |
| 게시 가능한 숏폼 1편 | 5초 · 720p | 약 $0.89 |
| 숏폼 5편(일일 배치) | 5 × 5초 · 720p | 약 $4.43 |
| 스타일 매칭 배치 | 5초 · 720p, reference_video_urls 사용 |
편당 약 $0.54 |
실무에서 통하는 워크플로: 아이디어마다 480p로 초안을 뽑고, 게시할 가치가 있는 것만 남겨 720p로 다시 렌더링합니다. 반복할 가치가 있는 스타일을 찾았다면 reference_video_urls가 새 720p 렌더보다 낮은 초당 요금으로 스타일을 고정해 줍니다.
피드용 프롬프트 팁
테스트 렌더에서 실제로 출력을 형성한 요소들, 특히 숏폼에 해당하는 것들:
- 화면을 세로형으로 묘사하고
aspect_ratio: "9:16"으로 맞추세요. 16:9 장면용으로 작성한 프롬프트는 9:16으로 강제 변환되면 중앙 크롭됩니다. 미리 가까운 세로형 구도를 묘사하면(위의 팬케이크 숏폼처럼) 피사체가 화면을 가득 채웁니다. - 세팅이 아니라 모션으로 시작하세요. 피드 숏폼의 첫 순간은 이미 무언가를 하고 있어야 합니다. 손이 이미 쌓고 있거나 꿀이 이미 부어지고 있어야 하며, 보상을 주기 전에 느린 설정 샷을 먼저 보여주면 안 됩니다.
- 숏폼마다 명확한 동작 하나를 유지하세요. 위의 5초 렌더는 정확히 두 가지 일을 순서대로 합니다(쌓기, 그다음 붓기). 읽기에 명확합니다. 서로 무관한 동작 세 개를 한 숏폼에 밀어 넣으면 대개 모두 흐려집니다.
- 조명과 질감을 명시하세요. '따뜻한 아침 빛', '김이 피어오름', '반짝임' — 구체적인 감각 디테일이 구체적이고 매력적인 렌더를 평범한 결과와 구분 짓는 핵심입니다.
자주 묻는 질문
seedance-2.0-fast는 특히 TikTok과 Reels에 적합한가요?
네. 네이티브 9:16 지원과 초 단위 과금(편당 고정 요금이 아님) 덕분에, 여러 개의 짧은 옵션을 렌더링한 뒤 가장 강한 것을 남기는 게시 리듬에 아주 잘 맞습니다.
숏폼 한 편에 얼마가 드나요?
720p 기준 비용은 길이(초) × $0.1772입니다. 5초 숏폼은 $0.886, 10초 숏폼은 $1.772입니다. 480p 기준 요금은 초당 $0.0843으로 낮아집니다. 배치 예산을 짜기 전에 반드시 가격 페이지에서 현재 요금을 확인하세요.
텍스트만으로 생성하지 않고 정지 이미지를 움직이게 할 수 있나요?
네. 요청의 image_urls를 통해 가능합니다. 위의 이미지→영상 섹션을 참고하세요. 특정 제품, 접시, 세트가 촬영한 그대로 정확히 등장해야 할 때 더 신뢰할 수 있는 경로입니다.
생성할 수 있는 가장 짧은 숏폼과 가장 긴 숏폼은 몇 초인가요?
duration은 4에서 15초 사이의 정수를 받습니다. 초 단위 소수점은 지원되지 않습니다.
해상도가 픽셀 크기와 가격 외에 다른 것에도 영향을 주나요?
스키마 자체에서는 아닙니다. resolution은 출력 크기와 초당 요금만 제어합니다. 구도와 모션은 전적으로 프롬프트와 aspect_ratio에 의해 결정됩니다.
정리
seedance-2.0-fast로 숏폼을 만드는 것은 하나의 비동기 엔드포인트, 세 개의 필수 필드, 그리고 먼저 반복한 뒤 확정하도록 장려하는 초 단위 과금으로 요약됩니다. 480p로 세로형 콘셉트 초안을 뽑고, 특정 제품이나 피사체가 완전히 정확하게 등장해야 한다면 image_urls로 승리안의 오프닝 화면을 고정한 뒤, 최종으로 남길 버전만 720p로 다시 렌더링하세요. API 키를 발급받아 이 가이드 상단의 요청으로 시작하세요. seedance-2.0-fast 모델 페이지에 전체 파라미터 참고와 현재 가격이 있으니 더 깊이 파고들 수 있습니다.
관련 글
모든 아티클 보기 →-
사용 가이드
seedream-5.0-pro/image-to-image 시작 가이드: 기능, 가격 및 연동 핵심 포인트
ByteDance 이미지 편집 모델의 기능 경계, 과금 방식 및 엔지니어링 연동 실무
-
사용 가이드
seedream-5.0-pro 텍스트-이미지 생성 입문 가이드: 능력 경계, API 연동 및 비용 관리
개발자를 위한 실무 관점: 파라미터 핵심부터 장당 $0.05 비용 추정까지
-
사용 가이드
Hailuo 2.3 Fast 이미지-투-비디오 입문 가이드: 성능 범위, 가격 및 연동 실무
개발자를 위한 MiniMax 이미지-투-비디오 모델 선택과 연동 핵심 포인트