Claude Opus 5.5을(를) SeedRouter에서 사용할 수 있습니다

Seedance API 사용법: API 키, 요청, 폴링, 참조

Seedance API 사용법을 단계별로: 키 발급, 동영상 작업 전송, 동영상 URL 폴링, 이미지·동영상·오디오 참조 추가, 에이전트에 맡기기까지 정리합니다.

Markdown으로 읽기

Seedance API를 사용하려면 API 키를 발급받고, 공식 ModelArk 동영상 작업 본문을 하나의 엔드포인트로 보낸 뒤, 반환된 작업을 동영상 URL이 준비될 때까지 폴링하면 됩니다. Seedance 2.0, Seedance 2.0 Fast, Seedance 2.0 Mini, Seedance 2.5 모두 같은 단계로 사용하며, model 값과 모델별 몇 가지 한도만 바뀝니다.

이 가이드는 동작하는 코드로 각 단계를 설명한 뒤, 참조를 추가하는 방법, Seedance 2.5로 클립을 편집하는 방법, 작업을 코딩 에이전트에 맡기는 방법을 보여 줍니다.

첫 요청 전에 무엇이 필요한가요?

  1. API 키. API 키 페이지에서 발급받고 서버에 보관하세요. 브라우저 코드에는 절대 넣지 마세요.
  2. 크레딧. 결제 페이지에서 잔액을 충전하세요. 크레딧은 만료되지 않으며, 실패한 작업은 과금되지 않습니다.
  3. 모델 ID. 아래 표에서 하나를 고르세요.
모델 ID모델해상도클립 길이
dreamina-seedance-2-0Seedance 2.0480p~4K4–15초
dreamina-seedance-2-0-fastSeedance 2.0 Fast480p, 720p4–15초
dreamina-seedance-2-0-miniSeedance 2.0 Mini480p, 720p4–15초
dreamina-seedance-2-5Seedance 2.5480p~1080p4–30초

어떤 것을 고를지 모르겠다면 Seedance 2.0 vs Fast vs Mini 가이드와 Seedance 2.5 vs 2.0 가이드에서 비교해 보세요.

export SEEDROUTER_API_KEY="your-key"

Seedance 요청은 어떻게 보내나요?

/v1/contents/generations/tasks로 작업을 POST하세요. 본문은 공식 ModelArk의 "동영상 생성 작업 생성" 요청입니다.

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

응답은 동영상이 아니라 작업 ID입니다.

{"id": "task_..."}

이미 ModelArk를 호출하고 있다면 base URL을 https://api.seedrouter.ai/v1로, API 키만 바꾸면 됩니다. 알 수 없는 필드는 과금 전에 거부되며, Fast나 Mini의 1080p처럼 모델이 지원하지 않는 설정도 마찬가지입니다.

동영상은 어떻게 받나요?

status가 succeeded, failed, expired 중 하나가 될 때까지 1020초 간격으로 작업을 폴링하세요. 5초 720p 클립은 보통 23분 걸립니다. Python 예시는 다음과 같습니다.

import os
import time
import requests

API = "https://api.seedrouter.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}

response = requests.post(
    f"{API}/contents/generations/tasks",
    headers=headers,
    json={
        "model": "dreamina-seedance-2-0",
        "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
        "resolution": "720p",
        "ratio": "16:9",
        "duration": 5,
    },
    timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(f"{API}/contents/generations/tasks/{task_id}", headers=headers, timeout=30)
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

성공한 작업에는 content.video_url에 동영상이, usage.completion_tokens에 과금된 동영상 토큰이 담기고, 모델이 고른 seed를 포함해 실제로 렌더링된 설정도 함께 반환됩니다. 동영상은 저희 스토리지에 호스팅되므로, 장기간 필요하다면 자체 스토리지에 내려받으세요.

폴링 중 타임아웃이 났다고 해서 동영상 생성이 실패한 것은 아닙니다. 작업 ID를 보관하고 다시 확인하세요. 새 작업을 제출하면 두 번째 동영상 비용을 내게 됩니다. 콜백 URL은 없으므로 결과는 폴링으로 받으며, 제출한 작업은 취소할 수 없습니다.

이미지, 동영상, 오디오는 어떻게 추가하나요?

content에 항목을 추가하세요. 각 항목은 공개 URL과 role로 구성됩니다.

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'
모드content에 들어가는 것
텍스트 → 동영상텍스트 항목 하나
첫 프레임텍스트와 role이 first_frame인 이미지 하나
첫 프레임과 마지막 프레임텍스트와 first_frame 이미지 하나, last_frame 이미지 하나
참조텍스트와 reference_image, reference_video, reference_audio의 임의 조합

Seedance 2.0과 그 Fast, Mini 버전은 참조 이미지 최대 9개, 동영상 3개, 오디오 트랙 3개를 받고, Seedance 2.5는 각각 최대 30개, 10개, 10개를 받습니다. 미디어는 URL이어야 하며 base64와 파일 업로드는 받지 않습니다. 실제 사람 얼굴이 담긴 참조 이미지와 동영상은 모델이 지원하지 않습니다. 미디어는 작업이 시작될 때 검사되며, 한도를 벗어난 파일은 생성 전에 작업을 실패시키고 과금되지 않습니다.

Seedance 2.5로 클립을 편집하거나 연장하려면?

클립을 reference_video로 보내고 omni_reference_task_type을 지정하세요.

{
  "model": "dreamina-seedance-2-5",
  "content": [
    {"type": "text", "text": "Change the jacket to red. Keep everything else the same."},
    {"type": "video_url", "video_url": {"url": "https://example.com/clip.mp4"}, "role": "reference_video"}
  ],
  "omni_reference_task_type": "edit"
}

영상 속 내용을 바꾸려면 edit를, 마지막 프레임 이후로 이어 가려면 extend를 쓰세요. edit에서는 duration을 기본값 -1로 두고, 두 경우 모두 ratio를 adaptive로 두세요. 입력 동영상의 길이(초)는 참조 요금으로 과금되며, 자세한 내용은 가격 가이드에서 설명합니다.

코딩 에이전트가 Seedance API를 쓰게 하려면?

Claude Code, Codex, Cursor 같은 코딩 에이전트는 셸 명령이나 짧은 스크립트로 API를 호출할 수 있습니다. SeedRouter는 MCP 서버, 패키지형 skill, ComfyUI 노드를 제공하지 않으며, 아래 프롬프트가 연동의 전부입니다. 먼저 키를 export한 뒤 붙여 넣으세요.

Use the SeedRouter API to generate a Seedance video for me.

Security: read SEEDROUTER_API_KEY from my local environment. Never ask me to paste it and never print it.

Goal: [subject, action, camera move, lighting, what the clip is for]
Model: [dreamina-seedance-2-0 | dreamina-seedance-2-0-fast | dreamina-seedance-2-0-mini | dreamina-seedance-2-5]
Resolution: [480p | 720p | 1080p | 4k]    Ratio: [16:9 | 9:16 | 1:1 | adaptive]    Duration: [seconds]
References: [public image, video or audio URLs with their roles, or none]

Send POST https://api.seedrouter.ai/v1/contents/generations/tasks with
{"model": "...",
 "content": [{"type": "text", "text": "..."}],
 "resolution": "...", "ratio": "...", "duration": 5}
Media goes in content as image_url, video_url or audio_url items with a role,
never base64. Do not add fields that are not in the API reference.

Before sending, show me the request body and wait for my approval: each
task is charged. Then poll GET https://api.seedrouter.ai/v1/contents/generations/tasks/{id}
every 15 seconds until status is succeeded, failed or expired. If polling
times out, keep checking the same task; never resubmit. Save
content.video_url into ./videos/ and tell me the file path.

승인 단계가 중요합니다. 에이전트는 잔액을 사용하므로 스스로 제출해서는 안 됩니다.

자주 묻는 질문

Seedance API 키는 어떻게 발급받나요?

로그인한 뒤 API 키 페이지를 열고 키를 만드세요. 같은 키로 모든 Seedance 모델과 SeedRouter의 다른 모델을 사용할 수 있습니다.

Seedance API 문서는 어디에 있나요?

Seedance 2.0과 Seedance 2.5 API 레퍼런스에 모든 필드, 한도, 오류가 cURL, Python, Node.js, Go 예시와 함께 나와 있으며, OpenAPI 파일과 복사 가능한 Markdown 버전도 제공됩니다.

여러 동영상을 한 번에 생성할 수 있나요?

동영상마다 작업을 하나씩 보내고 작업들을 병렬로 폴링하세요. 작업 하나는 동영상 하나를 반환하며 개별로 과금됩니다. 최근 작업 목록을 보려면 page_num, page_size와 filter.status 같은 필터로 GET /v1/contents/generations/tasks를 호출하세요.

어떤 오류를 처리해야 하나요?

400은 알 수 없는 필드나 지원하지 않는 해상도처럼 본문이 규칙을 어겼다는 뜻이며, 과금되지 않습니다. failed 또는 expired로 끝난 작업에는 오류 코드와 메시지가 담기며 역시 과금되지 않습니다. 오류 가이드에 모든 코드와 재시도 시점이 정리되어 있습니다.

첫 요청을 보내 보세요

키를 발급받고 소액을 충전한 뒤 위의 Python 예시를 실행하거나, Seedance 2.0 플레이그라운드에서 코드 없이 같은 요청을 시도해 보세요. 더 긴 클립과 편집이 필요하면 모델을 dreamina-seedance-2-5로 바꾸고 Seedance 2.5 페이지를 참고하세요.

관련 가이드