HiAPI
블로그

사용 가이드

Seedance-2.0-Fast와 hiapi API로 숏폼 영상 만들기

Sep 15, 2026
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 모델 페이지에 전체 파라미터 참고와 현재 가격이 있으니 더 깊이 파고들 수 있습니다.

영구 AI 아티팩트로 빌드 시작하기

API 키를 받아 태스크 기반의 하나의 API로 이미지, 비디오, 오디오 모델을 호출하세요.

API 문서 보기