모델 가이드

Seedance 2.0 API: 가격, 파라미터, 동작하는 코드

Seedance 2.0은 소리를 지원하는 ByteDance의 멀티샷 영상 모델입니다. 이 가이드는 모델이 잘하는 것, API가 받는 모든 옵션, 해상도별 클립 비용, 터미널에 붙여 넣을 수 있는 요청을 다룹니다.

Seedance 2.0이 잘하는 것

ByteDance는 2026년 2월에 Seedance 2.0을 출시했습니다. 한 번의 패스로 영상과 사운드트랙을 함께 생성하고, 하나의 클립 안에서 여러 샷 사이를 컷으로 전환하며, 그 컷들 사이에서 캐릭터와 시각적 스타일을 유지합니다. 그래서 제품 광고, 스토리 비트, 처음부터 소리가 필요한 소셜 클립 같은 짧은 내러티브 영상의 강력한 기본 선택입니다.

  • 멀티샷 클립. 샷을 순서대로 설명하면 모델이 피사체의 일관성을 유지하면서 샷 사이를 컷으로 전환합니다.
  • 같은 패스에서 소리. audio를 true로 설정하면 배경음, 효과음, 음성이 영상과 함께 생성됩니다.
  • 이미지로 제어. 첫 프레임에서 시작하거나, 첫 프레임과 마지막 프레임을 모두 고정하거나, 캐릭터, 제품, 룩을 위한 최대 9장의 참조 이미지를 전달할 수 있습니다.
  • 유연한 프레이밍. 소셜용 세로 9:16부터 시네마틱 작업용 21:9까지 여섯 가지 고정 화면 비율과, 입력 이미지를 따르는 적응형 설정이 있습니다.

약점: 대부분의 영상 모델과 마찬가지로 Seedance 2.0은 화면 속 정확한 텍스트를 안정적으로 렌더링하지 못하므로, 제목, 가격, 로고는 프롬프트가 아니라 편집기에서 추가하세요. 많은 사람이 동시에 움직이는 복잡한 장면은 현재의 영상 모델 전반에서 어렵습니다. 피사체가 적고 동작이 분명할수록 더 안정적인 결과를 얻습니다.

입력과 제한

Seedance 2.0의 카탈로그에 표시된 옵션은 다음과 같습니다. 요청 형식은 Revana의 다른 모든 모델과 같으며 허용되는 값만 다릅니다.

옵션Seedance 2.0
모델 idseedance-2.0 (더 가벼운 등급: seedance-2.0-fast, seedance-2.0-mini)
작업텍스트 투 비디오, 이미지 투 비디오, 첫·마지막 프레임, 참조 이미지
해상도480p, 720p, 1080p, 4K
길이4~15초
화면 비율16:9, 9:16, 1:1, 4:3, 3:4, 21:9 또는 적응형
소리audio: true or false
참조 이미지최대 9장, image_urls

모델이 지원하지 않는 필드나 값은 요금이 청구되기 전에 422 오류로 거부되므로, 요청의 오타에는 비용이 들지 않습니다.

Seedance 2.0 가격 (2026년 10월)

Seedance 2.0은 출력 영상 1초당 청구됩니다. 아래 가격은 2026년 10월 Revana 카탈로그 기준이며, 480p 초당 $0.08부터 시작합니다.

Seedance 2.0의 초당 및 클립당 가격
해상도초당5초 클립10초 클립15초 클립
480p$0.08$0.40$0.80$1.20
720p$0.15$0.75$1.50$2.25
1080p$0.40$2.00$4.00$6.00
4K$0.83$4.15$8.30$12.45

Seedance 2.0에는 별도의 오디오 요금이 없습니다. 표시된 가격은 소리 켜짐/꺼짐과 관계없이 같습니다.

Revana의 Seedance 2.0은 텍스트와 이미지(첫 프레임, 첫·마지막 프레임, 참조 이미지)를 받습니다. 참조 영상은 받지 않으므로 별도의 영상 입력 요금은 없습니다.

작업을 제출하면 금액이 잔액에서 보류됩니다. 작업이 성공한 경우에만 청구되며, 실패하면 보류가 해제됩니다. 정확한 금액은 생성 결과에 cost_usd로 반환됩니다. 크레딧 팩과 전체 가격표는 요금을, 같은 모델에 대해 ByteDance, fal, EvoLink, Atlas Cloud가 청구하는 금액은 Seedance 2.0 가격 비교를 참고하세요.

Seedance 2.0 Fast와 Mini

같은 계열에는 작업, 화면 비율, 길이, 최대 9장의 참조 이미지가 같은 두 가지 경량 등급이 있지만 720p까지만 지원합니다. 초안과 대량 작업에 적합하며, 마음에 드는 프롬프트는 최종 품질과 더 높은 해상도를 위해 Seedance 2.0에서 다시 실행하세요.

Seedance 2.0 등급 비교
모델480p / s720p / s720p 5초경로
Seedance 2.0$0.08$0.15$0.75경로 3개
Seedance 2.0 Fast$0.05$0.11$0.55경로 3개
Seedance 2.0 Mini$0.03$0.05$0.25경로 4개

Seedance 2.0 영상 생성하기

모든 요청은 API 키를 Bearer 토큰으로 담아 POST /v1/generations로 보냅니다. 호출은 생성 id와 함께 202를 즉시 반환하며, status가 succeeded 또는 failed가 될 때까지 몇 초마다 GET /v1/generations/{id}를 폴링하세요. 이 예제는 소리가 있는 5초 720p 클립을 요청하며 비용은 $0.75입니다.

cURL
export REVANA_API_KEY="sr_live_..."

# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
  -H "Authorization: Bearer $REVANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "input": {
      "prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
      "resolution": "720p",
      "duration": 5,
      "aspect_ratio": "16:9",
      "audio": true
    },
    "max_cost_usd": 2
  }'

# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JBX7Q2M4 \
  -H "Authorization: Bearer $REVANA_API_KEY"
Python
import os
import time

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}

resp = requests.post(f"{API}/generations", headers=HEADERS, json={
    "model": "seedance-2.0",
    "input": {
        "prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
        "resolution": "720p",
        "duration": 5,
        "aspect_ratio": "16:9",
        "audio": True,
    },
    "max_cost_usd": 2,
})
resp.raise_for_status()
job = resp.json()

while job["status"] in ("queued", "running"):
    time.sleep(5)
    job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()

if job["status"] == "succeeded":
    print(job["output"]["urls"], job["cost_usd"])
else:
    print("Failed:", job["error"])
Node.js
// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
  Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
  "Content-Type": "application/json",
};

const res = await fetch(`${API}/generations`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    model: "seedance-2.0",
    input: {
      prompt: "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
      resolution: "720p",
      duration: 5,
      aspect_ratio: "16:9",
      audio: true,
    },
    max_cost_usd: 2,
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();

while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 5000));
  job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}

if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);

max_cost_usd 은(는) 작업 비용의 상한입니다. 이를 초과하는 가격의 경로는 건너뛰며, 맞는 경로가 없으면 작업이 실행되지 않습니다. 예상 가격보다 약간 높게 설정하세요. 완료된 생성 결과는 다음과 같습니다.

응답
{
  "id": "gen_01JBX7Q2M4",
  "model": "seedance-2.0",
  "status": "succeeded",
  "output": {
    "urls": [
      "https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
    ]
  },
  "cost_usd": 0.75,
  "attempts": 1,
  "error": null,
  "created_at": "2026-10-19T14:02:11Z",
  "completed_at": "2026-10-19T14:03:47Z"
}

작업이 끝나면 파일을 바로 다운로드하세요. 출력 링크는 만료됩니다. 모든 필드, 상태, 오류 코드는 API 문서에 있습니다.

정지 이미지 움직이게 하기 (이미지 투 비디오)

시작 프레임을 image_url로 전달하세요. 이때 프롬프트에는 장면이 아니라 움직임과 소리를 적습니다. 장면은 이미 이미지에 있기 때문입니다. adaptive 화면 비율은 이미지의 모양을 따릅니다.

요청 본문
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "She turns toward the camera and smiles as a light breeze moves her hair. Distant city traffic, a bus passing.",
    "image_url": "https://example.com/first-frame.jpg",
    "resolution": "1080p",
    "duration": 5,
    "aspect_ratio": "adaptive",
    "audio": true
  },
  "max_cost_usd": 3
}

시작 프레임과 마지막 프레임

end_image_url를 추가하면 샷이 끝나는 위치를 고정할 수 있습니다. 모델이 두 프레임 사이의 움직임을 채우므로 전환, 공개 연출, 비포 앤 애프터 샷에 잘 맞습니다.

요청 본문
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "Smooth orbit around the sneaker as the light shifts from daylight to neon night",
    "image_url": "https://example.com/start.jpg",
    "end_image_url": "https://example.com/end.jpg",
    "resolution": "720p",
    "duration": 6,
    "aspect_ratio": "16:9",
    "audio": false
  },
  "max_cost_usd": 2
}

참조 이미지

첫 프레임을 고정하지 않고 캐릭터나 제품의 일관성을 유지하려면 최대 9장의 이미지를 image_urls로 보내고 프롬프트에서 각각을 설명하세요. 예: "첫 번째 이미지의 여성". 한 요청에서는 프레임과 참조 중 하나만 사용하세요. 서로 별개의 모드이므로 둘을 섞은 요청은 거부될 수 있습니다.

요청 본문
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "The woman from the first image walks through the market from the second image, carrying the bag from the third image. Handheld camera, golden hour, market chatter.",
    "image_urls": [
      "https://example.com/woman.jpg",
      "https://example.com/market.jpg",
      "https://example.com/bag.jpg"
    ],
    "resolution": "720p",
    "duration": 8,
    "aspect_ratio": "9:16",
    "audio": true
  },
  "max_cost_usd": 2
}

Seedance 2.0 프롬프트 팁

  • 샷을 순서대로 쓰세요. "샷 1: 와이드 설정 샷. 샷 2: 그녀의 손 클로즈업"처럼 라벨을 붙이면 모델이 컷 지점을 분명히 알 수 있습니다.
  • 카메라 움직임을 지정하세요. 푸시 인, 오빗, 핸드헬드, 고정 삼각대, 드론 풀백처럼 샷당 하나의 움직임이 여러 개를 나열하는 것보다 잘 전달됩니다.
  • 소리를 설명하세요. "양철 지붕 위의 빗소리, 멀리서 들리는 천둥, 음악 없음"처럼 쓰는 것이 오디오를 운에 맡기는 것보다 낫습니다. 음성을 원하지 않으면 그렇게 적으세요.
  • 대사는 짧게 하세요. 대사를 따옴표 안에 넣고 누가 말하는지 적습니다. 5초 클립에는 짧은 문장 하나 정도가 들어갑니다.
  • 프레임 안에 텍스트를 넣지 마세요. 자막, 제목, 로고는 편집 단계에서 추가하세요.
  • 저렴하게 초안을 만든 다음 해상도를 높이세요. 480p나 Seedance 2.0 Mini에서 반복한 뒤, 가장 좋았던 프롬프트를 1080p로 다시 실행하세요. 해상도와 등급에 따라 결과가 똑같지는 않으므로 초안은 참고용으로 보세요.

Seedance 2.0의 라우팅과 대체 경로 방식

Revana는 API 라우터입니다. 같은 모델을 제공하는 여러 업스트림 제공업체 앞에 하나의 키와 하나의 요청 형식을 둡니다. Seedance 2.0에는 현재 세 개의 경로가 있습니다. 라우터는 각 작업을 가장 저렴한 경로로 먼저 보내고, 그 경로가 실패하거나 시간이 초과되면 다음 경로로 자동으로 다시 제출합니다.

  • 어느 경로가 작업을 처리하든 표시된 가격을 지불하며, 성공한 경로에 대해서만 청구됩니다.
  • 생성 결과의 attempts 필드에서 시도된 경로 수를 확인할 수 있습니다.
  • 모든 경로가 실패하면 작업은 오류와 함께 failed로 끝나며 비용은 발생하지 않습니다.

대체 경로는 결과를 얻을 확률을 높여 주지만 가동 시간이나 속도를 보장하지는 않습니다. 앱에서 failed 작업을 처리하세요. 예를 들어 나중에 재시도하거나 다른 모델을 제안할 수 있습니다.

써 볼 준비가 되셨나요? API 키를 받고 Seedance 2.0을 다른 영상 모델과 비교해 보세요.

자주 묻는 질문

Seedance 2.0 API는 얼마인가요?

2026년 10월 기준 Seedance 2.0은 480p 초당 $0.08, 720p $0.15, 1080p $0.40, 4K $0.83입니다. 5초 720p 클립은 $0.75입니다. 소리는 같은 가격에 포함됩니다.

Seedance 2.0은 오디오를 생성하나요?

네. audio를 true로 설정하면 모델이 같은 패스에서 영상과 함께 배경음, 효과음, 음성을 생성합니다. 무음 클립을 원하면 false로 설정하세요. 어느 쪽이든 가격은 같습니다.

Seedance 2.0 영상은 얼마나 길게 만들 수 있나요?

요청당 4~15초입니다. 더 긴 영상은 여러 클립을 생성해 편집으로 이어 붙이거나, 최대 30초까지 지원하는 Seedance 2.5를 사용하세요.

Seedance 2.0에서 참조 이미지를 사용할 수 있나요?

네. 캐릭터, 제품, 스타일을 위해 image_urls로 최대 9장입니다. 한 요청에서 프레임(image_url과 end_image_url)과 참조 중 하나만 사용하고, 둘을 함께 쓰지는 마세요.

Seedance 2.0 Fast와 Mini는 Seedance 2.0과 어떻게 다른가요?

작업과 옵션은 같지만 720p까지만 지원합니다. 720p에서 Seedance 2.0 Fast는 초당 $0.11, Seedance 2.0 Mini는 $0.05이며, Seedance 2.0은 $0.15입니다.

Seedance 2.0 생성이 실패하면 어떻게 되나요?

라우터가 다음 경로를 자동으로 시도합니다. 성공한 경로에 대해서만 한 번 청구되며, 모든 경로가 실패하면 작업은 실패하고 요금은 없습니다.

하나의 키로 Seedance 2.0 호출하기

키를 만들고 $10부터 크레딧을 충전하면, 같은 키로 Seedance 2.0과 카탈로그의 다른 모든 모델을 사용할 수 있습니다.