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

Seedance 2.0

공식 ModelArk 작업 API로 Seedance 2.0 동영상을 생성합니다: 텍스트로 동영상 생성, 첫 프레임과 마지막 프레임, 이미지·동영상·오디오 참조, 480p부터 4K까지.

View Markdown

Seedance 2.0은 ByteDance의 동영상 생성 모델(Dreamina Seedance 2.0)입니다. 공식 ModelArk 작업 요청 본문을 보내고, 반환된 작업 ID를 보관한 뒤 그 작업에서 완성된 동영상을 받아오세요. 이미지, 동영상, 오디오는 content에 URL로 넣습니다.

모델 ID

모델 ID해상도설명
dreamina-seedance-2-0480p, 720p, 1080p, 4K전체 모델
dreamina-seedance-2-0-fast480p, 720p초당 가격이 더 낮음
dreamina-seedance-2-0-mini480p, 720p초당 가격이 가장 낮음

세 ID 모두 같은 파라미터를 받습니다. 현재 가격은 모델 페이지에서 확인하세요.

간단한 예제

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
  }'

엔드포인트

POST https://api.seedrouter.ai/v1/contents/generations/tasks
헤더값
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

요청 본문은 공식 ModelArk의 "동영상 생성 작업 만들기" 요청 그대로입니다. 이미 ModelArk를 호출하고 있다면 base URL을 https://api.seedrouter.ai/v1로 바꾸고 API 키만 교체하면 됩니다. 응답은 완성된 동영상이 아니라 {"id": "task_..."}입니다. API 키는 서버 측 코드에 보관하세요.

파라미터

이름타입필수기본값설명
modelstring예—위의 세 모델 ID 중 하나입니다.
contentobject[]예—프롬프트와 미디어입니다. 아래를 참고하세요.
resolutionenum아니요720p480p, 720p, 1080p, 4k. Fast와 Mini ID는 480p와 720p만 받습니다.
ratioenum아니요adaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationinteger아니요54~15초. 모델이 길이를 정하게 하려면 -1.
generate_audioboolean아니요true동영상과 함께 사운드를 생성합니다.
watermarkboolean아니요false워터마크를 추가합니다.
return_last_frameboolean아니요false마지막 프레임도 이미지 URL로 함께 반환합니다.
execution_expires_afterinteger아니요1728003600~259200초. 이 시간이 지나도 완료되지 않은 작업은 expired가 되며 과금되지 않습니다.
priorityinteger아니요00~9.
safety_identifierstring아니요—최종 사용자를 식별하는 1~64자 문자열입니다. 해시값을 써도 됩니다.
service_tierenum아니요defaultdefault만 가능합니다.
content_filterboolean아니요trueSeedRouter 확장 필드입니다. false로 설정하면 이 요청의 콘텐츠 필터링이 꺼집니다.

content 항목

항목형태역할제한
텍스트{"type": "text", "text": "..."}—1개.
이미지{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_image참조 이미지 최대 9장.
동영상{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_video최대 3개.
오디오{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audio최대 3개. 참조 이미지나 참조 동영상이 필요합니다.

알 수 없는 필드는 거부됩니다. 지원하지 않는 항목: seed, callback_url(대신 작업을 폴링하세요), draft와 draft_task, tools, 1.x 전용인 frames와 camera_fixed, 그리고 output_format과 omni_reference_task_type(Seedance 2.5 전용). 작업은 취소하거나 삭제할 수 없습니다.

모드

모드는 content 항목에 따라 정해지며, 모드 파라미터는 없습니다.

모드content
텍스트로 동영상 생성텍스트 항목 1개
첫 프레임텍스트(선택) + 역할이 first_frame인 이미지 1장, 또는 역할이 없는 이미지 1장
첫 프레임과 마지막 프레임텍스트(선택) + first_frame 이미지 1장 + last_frame 이미지 1장
멀티모달 참조텍스트 + reference_image, reference_video, reference_audio 항목의 임의 조합

첫 프레임 계열 모드는 참조 항목과 함께 쓸 수 없습니다. 이미지가 여러 장이거나 다른 미디어가 함께 있으면 모든 이미지에 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
  }'

예제의 URL은 접근 가능한 본인의 파일로 바꾸세요.

미디어 입력

이 API는 URL 참조만 받습니다. Base64, data: URL, asset:// ID, multipart 업로드는 받지 않습니다. Playground는 선택한 파일을 스토리지에 업로드한 뒤 그 URL을 전송합니다.

미디어는 공개 HTTP(S) URL이어야 하며 모델의 공식 제한을 충족해야 합니다:

미디어형식제한
이미지JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF30MB 미만, 가로·세로 3006000px, 가로세로 비율(가로 / 세로) 0.42.5, 참조 이미지 1~9장
동영상MP4, MOV (H.264 또는 H.265)개당 215초, 최대 3개, 합계 15초 이하, 200MB 이하, 2460 FPS, 가로·세로 3006000px, 가로세로 비율 0.42.5, 407,696~8,295,044픽셀(가로 × 세로)
오디오WAV, MP3개당 2~15초, 최대 3개, 합계 15초 이하, 참조 이미지나 참조 동영상 필요, 15MB 이하

실제 사람의 얼굴이 담긴 참조 이미지와 참조 동영상은 모델에서 지원하지 않습니다.

미디어는 작업이 시작될 때, 생성에 앞서 검사됩니다. 미디어가 이 제한 중 하나라도 어기면 작업은 invalid_request_error와 위반한 규칙을 알려 주는 메시지(예: The request was rejected: content reference videos must total at most 15 seconds.)와 함께 failed로 끝나며 과금되지 않습니다. 그 시점에 읽을 수 없는 파일은 모델에 그대로 전달되고, 모델이 받아들이거나 거부합니다. 어느 쪽이든 실패한 작업은 과금되지 않습니다.

과금에 영향을 주는 요소

현재 요금은 모델 가격 섹션에서 확인하세요. Seedance 2.0은 공식 단위인 동영상 토큰으로 과금합니다:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

100만 토큰당 요율은 출력 해상도와 요청에 참조 동영상이 포함되는지 여부에 따라 달라집니다. 참조 동영상이 포함된 요청은 모든 토큰에 더 낮은 요율이 적용됩니다. 텍스트, 이미지, 오디오 입력은 과금되지 않습니다. 16:9 기준으로 1초는 480p(864×496)에서 10,044토큰, 720p에서 21,600토큰, 1080p에서 48,600토큰, 4K에서 194,400토큰입니다.

과금은 완성된 동영상이 보고하는 토큰(usage.completion_tokens)을 따르므로, duration: -1은 실제로 생성된 길이를 기준으로 과금됩니다. 렌더링된 클립은 요청한 길이보다 약간 길게 나옵니다. 5초 720p 16:9 요청은 121프레임으로 렌더링되며 108,000토큰이 아니라 108,900토큰이 보고됩니다. 최종 과금액은 계정의 사용 내역에서 확인하세요. 실패하거나 만료된 작업은 과금되지 않습니다.

출력 스키마

제출하면 작업 ID가 반환됩니다:

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

작업 조회

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

status가 succeeded, failed, expired 중 하나가 될 때까지 10~20초마다 폴링하세요. 폴링 중 네트워크 타임아웃이 발생해도 생성이 실패한 것은 아닙니다. 작업 ID를 유지한 채 조회를 이어가세요. 진행 상황 확인을 위해 다른 작업을 만들지 마세요.

전체 폴링 예제

위의 Python 제출 예제 다음에 실행하세요.

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        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}.")

성공한 작업

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
필드의미
id이후 조회를 위해 이 ID를 보관하세요.
statusqueued, running, succeeded, failed, expired 중 하나입니다.
content.video_url생성된 동영상입니다.
content.last_frame_urlreturn_last_frame이 true일 때 반환되는 마지막 프레임입니다.
usage.completion_tokens완성된 동영상의 동영상 토큰이며, 과금 수량입니다.
duration, resolution, ratio, framespersecond, seed실제로 렌더링된 값입니다. seed는 모델이 고른 값입니다.
created_at, updated_at초 단위 Unix 타임스탬프입니다.
error실패하거나 만료된 작업의 {"code", "message"}입니다.

동영상 URL은 저희 스토리지에 호스팅됩니다. 오래 보관해야 한다면 파일을 직접 스토리지에 저장하세요.

작업 목록

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

최근 7일간의 작업 객체를 최신순으로 담은 {"total": N, "items": [...]}를 반환합니다. page_num과 page_size는 1~500입니다(기본값은 각각 1과 20). 필터: filter.status, filter.model, filter.task_ids(반복 가능), filter.service_tier.

오류

작업이 생성되기 전에 거부된 요청은 HTTP 오류와 error 객체를 반환하며 과금되지 않습니다. 접수된 뒤 실패한 작업은 조회 시 HTTP 200과 함께 status: "failed"(또는 "expired") 및 error 객체를 반환합니다. 콘텐츠 필터링으로 출력이 보류되면 content_policy_violation으로 실패하고, execution_expires_after를 넘겨 실행된 작업은 task_expired와 함께 expired로 끝납니다.

코드, HTTP 상태, 재시도 지침은 공통 오류 카탈로그를 참고하세요.

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

제출 자체가 타임아웃된 경우에는 다시 보내기 전에 작업 목록을 확인하세요. 첫 번째 요청이 이미 접수되었을 수 있습니다.

팁

  • 피사체, 동작, 카메라 움직임, 조명을 완전한 문장으로 설명하세요.
  • 480p와 짧은 duration으로 초안을 만든 뒤, 마음에 드는 결과를 더 높은 해상도로 렌더링하세요.
  • return_last_frame으로 샷을 이어 붙이세요. 반환된 프레임을 다음 작업의 first_frame으로 사용하면 됩니다.

관련 자료