CheaperGen
ByteDance튜토리얼

Seedance 2.0 API 사용법

Node.js, Python, cURL로 Seedance 2.0 API를 단계별로 사용하는 튜토리얼입니다. 텍스트 → 동영상 작업을 제출하고 상태를 폴링하거나 웹훅을 받은 다음 video을 다운로드하세요. 아래 예제 비용은 $0.68입니다.

엔드포인트
3
텍스트 → 동영상 · 이미지 → 동영상 · 참조 → 동영상
요청 예시
$0.68
텍스트 → 동영상
언어
3
Node.js · Python · cURL
실패한 생성
$0
자동 환불
1

API 키 발급

계정을 만든 뒤 크레딧을 충전하고 Dashboard → API keys에서 키를 만드세요. 키를 CHEAPERGEN_API_KEY 서버에 보관하세요. 모든 요청에서 bearer token으로 전달합니다. 형식으로 저장하세요.

Seedance 2.0 API 키 발급 방법
2

Seedance 2.0 엔드포인트 선택하기

각 작업에는 자체 엔드포인트가 있습니다. 모든 엔드포인트는 JSON 본문을 받고 폴링할 수 있는 생성 ID를 반환합니다.

이 프로그램은 작업을 제출하고 완료될 때까지 3초마다 폴링한 뒤 Seedance 2.0 URL을 출력합니다. 프롬프트와 설정을 원하는 값으로 바꾸세요.
작업엔드포인트필수부터
텍스트 → 동영상bytedance/seedance-2.0/text-to-videoprompt$0.0631 초당
이미지 → 동영상bytedance/seedance-2.0/image-to-videoprompt, image_url$0.0668 초당
참조 → 동영상bytedance/seedance-2.0/reference-to-videoprompt$0.0668 초당
3

텍스트 → 동영상 작업 제출하기

이 프로그램은 작업을 제출하고 3초마다 폴링해 완료될 때까지 기다린 뒤 video URL을 출력합니다. 프롬프트와 설정을 바꿔 사용하세요.

const API = "https://cheapergen.com/api/v1";
const headers = {
  Authorization: `Bearer ${process.env.CHEAPERGEN_API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Submit the job
let job = await fetch(`${API}/run/bytedance/seedance-2.0/text-to-video`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "골든아워에 꽃병을 빚는 도예가에게 천천히 다가가는 카메라, 빛 속 먼지 입자, 얕은 심도",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5
  }),
}).then((r) => r.json());

// 2. Poll until it finishes (or pass webhook_url and skip polling)
while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 3000));
  job = await fetch(`${API}/generations/${job.id}`, { headers }).then((r) => r.json());
}

console.log(job.status === "succeeded" ? job.output.video.url : job.error);
4

중요한 매개변수 설정하기

bytedance/seedance-2.0/text-to-video 설정:

Seedance 2.0 텍스트 → 동영상 매개변수와 가격 영향
매개변수형식 · 기본값기능가격 영향
aspect_ratiostring (enum) · 16:9출력 프레임 비율입니다.
16:9 · 9:16 · 1:1 · 4:3 · 3:4 · 21:9
16:9: $0.0631 초당
resolutionstring (enum) · 720p출력 해상도입니다. 해상도가 높을수록 초당 요금이 비쌉니다.
480p · 720p · 1080p · 4k
480p: $0.0631 초당
720p: $0.1356 초당
1080p: $0.3361 초당
4K: $0.6959 초당
durationinteger · 5생성할 클립 길이(초) (4–15초). 초당 요금이 부과됩니다.초당 과금
generate_audioboolean · true동기화된 사운드, 주변음, 대사를 추가합니다. 추가 비용은 없습니다.없음
seedinteger같은 시드와 설정을 사용하면 결과를 재현할 수 있습니다. 비워 두면 무작위로 설정됩니다.없음

다른 Seedance 2.0 엔드포인트도 각자 입력 필드만 다를 뿐 같은 요청 형식을 사용합니다:

POST /api/v1/run/bytedance/seedance-2.0/image-to-video

{
  "prompt": "그녀가 돌아서 미소 짓고 바람에 머리카락이 흩날리는 동안 카메라가 다가갑니다.",
  "image_url": "https://cdn.cheapergen.com/samples/portrait.jpg",
  "aspect_ratio": "16:9",
  "resolution": "720p",
  "duration": 5
}

POST /api/v1/run/bytedance/seedance-2.0/reference-to-video

{
  "prompt": "@Image1이 대리석 책상 위에서 @Image2의 제품을 개봉하고 @Video1의 카메라 움직임을 따라 합니다.",
  "reference_image_urls": [
    "https://cdn.cheapergen.com/samples/reference-1.jpg",
    "https://cdn.cheapergen.com/samples/reference-2.jpg"
  ],
  "reference_video_urls": [
    "https://cdn.cheapergen.com/samples/reference-1.mp4"
  ],
  "aspect_ratio": "16:9",
  "resolution": "720p",
  "duration": 5
}
5

결과 가져오기

작업 상태는 queued에서 running을 거쳐 succeeded, failed, canceled 중 하나가 됩니다. GET /api/v1/generations/{id}를 폴링하거나 제출 시 webhook_url을 전달하면 결과를 POST로 보내 드립니다. 출력 파일을 다운로드해 직접 저장하세요.

200 — 성공
{
  "id": "gen_8c2QmX1nq0k4",
  "object": "generation",
  "model": "bytedance/seedance-2.0",
  "endpoint": "bytedance/seedance-2.0/text-to-video",
  "mode": "text-to-video",
  "status": "succeeded",
  "input": {
    "prompt": "골든아워에 꽃병을 빚는 도예가에게 천천히 다가가는 카메라, 빛 속 먼지 입자, 얕은 심도",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5
  },
  "output": {
    "video": {
      "url": "https://cdn.cheapergen.com/outputs/gen_8c2Q.mp4",
      "content_type": "video/mp4",
      "duration": 5,
      "width": 1280,
      "height": 720
    }
  },
  "error": null,
  "cost": {
    "amount_usd": 0.2255,
    "currency": "usd",
    "estimated": false,
    "official_usd": 0.264,
    "list_price_source": "official",
    "list_price_label": "Official",
    "saved_usd": 0.0385
  },
  "source": "api",
  "created_at": "2026-10-15T09:21:04Z",
  "started_at": "2026-10-15T09:21:06Z",
  "completed_at": "2026-10-15T09:22:31Z"
}
웹훅 서명 확인하기
6

실행 전 요청 가격 확인

견적 엔드포인트는 무료이며 API 키가 필요 없습니다. 전송한 입력값을 기준으로 가격, 공식 가격, 할인율을 반환합니다.

curl -X POST https://cheapergen.com/api/v1/quote/bytedance/seedance-2.0/text-to-video \
  -H "Content-Type: application/json" \
  -d '{"prompt":"골든아워에 꽃병을 빚는 도예가에게 천천히 다가가는 카메라, 빛 속 먼지 입자, 얕은 심도","aspect_ratio":"16:9","resolution":"720p","duration":5}'
API 오류 및 해결 방법
상태코드의미
400invalid_request매개변수가 누락되었거나 허용 범위를 벗어났습니다. 오류 메시지에 해당 항목이 표시됩니다.
401unauthorizedAPI 키가 없거나 형식이 잘못되었거나 폐기되었습니다.
402insufficient_balance견적 가격을 결제할 크레딧이 부족합니다. 충전하거나 자동 충전을 설정하세요.
429rate_limited요청이 너무 많거나 진행 중인 생성이 너무 많습니다. 잠시 기다린 뒤 백오프를 적용해 다시 시도하세요.
502upstream_error모델 제공업체 오류입니다. 보류 금액은 환불되며 다시 시도할 수 있습니다.
503model_unavailable현재 정상 경로가 없습니다. 나중에 다시 시도하거나 다른 모델을 선택하세요.
전체 Seedance 2.0 API 문서

자주 묻는 질문

Seedance 2.0 API 관련 질문

아니요. API는 JSON을 사용하는 일반 HTTPS 방식이므로 이 페이지의 Node.js(fetch) 및 Python(requests) 예제만으로 실행할 수 있습니다. HTTP 요청을 보낼 수 있는 모든 언어를 사용할 수 있습니다.

네. 요청 본문에 "webhook_url"을 추가하면 CheaperGen-Signature 헤더(timestamp와 원본 본문의 HMAC-SHA256)로 서명해 완료된 생성 결과를 POST로 보냅니다. GET /api/v1/generations/{id}를 폴링해도 됩니다.

공개 URL을 "image_url", "end_image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls"에 전달하세요. 공개 URL이 없는 파일은 POST /api/v1/uploads로 먼저 업로드하면 요청에 사용할 URL이 반환됩니다.

텍스트 → 동영상의 시작 가격은 $0.0631 초당입니다. 이 페이지의 요청 예제는 $0.68공식 가격보다 공식 가격 낮게, 최대 10%입니다. 생성 실패는 자동 환불됩니다.