Claude Opus 5.5 đã có trên SeedRouter
SeedRouter Docs

Seedance 2.0

Tạo video với Seedance 2.0 qua API tác vụ ModelArk chính thức: văn bản thành video, khung hình đầu và cuối, cùng ảnh, video và âm thanh tham chiếu, từ 480p đến 4K.

View Markdown

Seedance 2.0 là mô hình tạo video của ByteDance (Dreamina Seedance 2.0). Hãy gửi thân yêu cầu tác vụ ModelArk chính thức, giữ lại ID tác vụ được trả về, rồi đọc video đã hoàn thành từ tác vụ đó. Ảnh, video và âm thanh được đặt trong content dưới dạng URL.

ID mô hình

ID mô hìnhĐộ phân giảiGhi chú
dreamina-seedance-2-0480p, 720p, 1080p, 4KMô hình đầy đủ
dreamina-seedance-2-0-fast480p, 720pGiá mỗi giây thấp hơn
dreamina-seedance-2-0-mini480p, 720pGiá mỗi giây thấp nhất

Cả ba ID nhận cùng tham số. Xem giá hiện tại trên trang mô hình.

Ví dụ nhanh

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

Endpoint

POST https://api.seedrouter.ai/v1/contents/generations/tasks
HeaderGiá trị
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Thân yêu cầu chính là yêu cầu "create a video generation task" (tạo tác vụ tạo video) chính thức của ModelArk. Nếu bạn đã gọi ModelArk, chỉ cần đổi base URL thành https://api.seedrouter.ai/v1 và đổi khóa API. Phản hồi là {"id": "task_..."}, không phải video đã hoàn thành. Hãy giữ khóa API trong mã phía máy chủ.

Tham số

TênKiểuBắt buộcMặc địnhGhi chú
modelstringCó—Một trong ba ID mô hình ở trên.
contentobject[]Có—Prompt và media; xem bên dưới.
resolutionenumKhông720p480p, 720p, 1080p, 4k; ID Fast và Mini chỉ nhận 480p và 720p.
ratioenumKhôngadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationintegerKhông5Từ 4 đến 15 giây, hoặc -1 để mô hình tự chọn.
generate_audiobooleanKhôngtrueTạo âm thanh kèm video.
watermarkbooleanKhôngfalseThêm watermark.
return_last_framebooleanKhôngfalseTrả về thêm khung hình cuối dưới dạng URL ảnh.
execution_expires_afterintegerKhông172800Từ 3600 đến 259200 giây. Tác vụ vẫn chưa hoàn tất sau thời gian này sẽ chuyển sang expired và không bị tính phí.
priorityintegerKhông0Từ 0 đến 9.
safety_identifierstringKhông—Từ 1 đến 64 ký tự để định danh người dùng cuối của bạn. Có thể dùng giá trị băm.
service_tierenumKhôngdefaultChỉ default.
content_filterbooleanKhôngtruePhần mở rộng của SeedRouter. false tắt bộ lọc nội dung cho yêu cầu này.

Các mục content

MụcDạngVai tròGiới hạn
Văn bản{"type": "text", "text": "..."}—Một mục.
Ảnh{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageTối đa 9 ảnh tham chiếu.
Video{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoTối đa 3.
Âm thanh{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioTối đa 3. Cần có ảnh hoặc video tham chiếu.

Các trường không xác định sẽ bị từ chối. Không hỗ trợ: seed, callback_url (hãy truy vấn tác vụ thay thế), draft và draft_task, tools, các trường chỉ có ở 1.x là frames và camera_fixed, cũng như output_format và omni_reference_task_type (chỉ có ở Seedance 2.5). Không thể hủy hoặc xóa tác vụ.

Các chế độ

Chế độ được xác định từ các mục trong content; không có tham số chế độ.

Chế độcontent
Văn bản thành videomột mục văn bản
Khung hình đầuvăn bản (tùy chọn) + một ảnh có vai trò first_frame, hoặc một ảnh không có vai trò
Khung hình đầu và cuốivăn bản (tùy chọn) + một ảnh first_frame + một ảnh last_frame
Tham chiếu đa phương thứcvăn bản + tổ hợp bất kỳ các mục reference_image, reference_video và reference_audio

Không thể kết hợp các chế độ khung hình đầu với các mục tham chiếu. Khi có nhiều ảnh hoặc có bất kỳ media nào khác, mỗi ảnh đều cần có role.

Ví dụ tham chiếu

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

Hãy thay các URL ví dụ bằng tệp của bạn mà hệ thống truy cập được.

Đầu vào media

API này chỉ nhận tham chiếu bằng URL. Không chấp nhận base64, URL data:, ID asset:// và tải lên dạng multipart. Playground tải các tệp đã chọn lên kho lưu trữ trước, rồi mới gửi URL của chúng.

Media phải là URL HTTP(S) công khai và đáp ứng các giới hạn chính thức của mô hình:

MediaĐịnh dạngGiới hạn
ẢnhJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFNhỏ hơn 30 MB; chiều rộng và chiều cao 300–6000 px; tỷ lệ khung hình (rộng / cao) 0,4–2,5; 1–9 ảnh tham chiếu
VideoMP4, MOV (H.264 hoặc H.265)Mỗi video 2–15 giây, tối đa 3 video, tổng cộng không quá 15 giây; không quá 200 MB; 24–60 FPS; chiều rộng và chiều cao 300–6000 px; tỷ lệ khung hình 0,4–2,5; 407.696–8.295.044 pixel (rộng × cao)
Âm thanhWAV, MP3Mỗi tệp 2–15 giây, tối đa 3 tệp, tổng cộng không quá 15 giây; cần có ảnh hoặc video tham chiếu; không quá 15 MB

Mô hình không hỗ trợ ảnh và video tham chiếu có chứa khuôn mặt người thật.

Media được kiểm tra khi tác vụ bắt đầu, trước khi tạo bất cứ thứ gì. Tác vụ có media vi phạm một trong các giới hạn này sẽ kết thúc ở trạng thái failed với invalid_request_error kèm thông báo nêu rõ quy tắc bị vi phạm, ví dụ The request was rejected: content reference videos must total at most 15 seconds., và không bị tính phí. Tệp không đọc được tại thời điểm đó sẽ được chuyển cho mô hình, mô hình sẽ chấp nhận hoặc từ chối tệp; trong cả hai trường hợp, tác vụ thất bại đều không bị tính phí.

Các yếu tố chi phí

Hãy xem phần giá của mô hình để biết biểu phí hiện tại. Seedance 2.0 tính phí theo token video, đơn vị chính thức:

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

Đơn giá cho mỗi triệu token phụ thuộc vào độ phân giải đầu ra và việc yêu cầu có kèm video tham chiếu hay không; yêu cầu có video tham chiếu áp dụng đơn giá thấp hơn cho toàn bộ token của nó. Đầu vào văn bản, ảnh và âm thanh không bị tính phí. Ở tỷ lệ 16:9, một giây tương ứng 10.044 token ở 480p (864×496), 21.600 ở 720p, 48.600 ở 1080p và 194.400 ở 4K.

Khoản phí dựa trên số token mà video hoàn chỉnh báo về (usage.completion_tokens), vì vậy duration: -1 được tính phí theo độ dài thực tế được tạo. Clip được xuất ra dài hơn một chút so với độ dài yêu cầu: một yêu cầu 5 giây, 720p, 16:9 xuất ra 121 khung hình và báo về 108.900 token thay vì 108.000. Hãy xem chi phí cuối cùng trong lịch sử sử dụng của tài khoản. Tác vụ thất bại và hết hạn không bị tính phí.

Lược đồ đầu ra

Khi gửi, API trả về ID tác vụ:

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

Lấy thông tin tác vụ

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

Hãy truy vấn 10–20 giây một lần cho đến khi status là succeeded, failed hoặc expired. Hết thời gian mạng trong lúc truy vấn không có nghĩa là việc tạo video đã thất bại: hãy giữ ID tác vụ và tiếp tục kiểm tra. Đừng tạo tác vụ khác chỉ để xem tiến độ.

Ví dụ truy vấn đầy đủ

Hãy chạy đoạn này sau ví dụ gửi bằng Python ở trên.

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}.")

Tác vụ thành công

{
  "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
}
TrườngÝ nghĩa
idHãy giữ ID này cho các lần truy vấn sau.
statusqueued, running, succeeded, failed hoặc expired.
content.video_urlVideo đã tạo.
content.last_frame_urlKhung hình cuối, khi return_last_frame là true.
usage.completion_tokensToken video của video hoàn chỉnh; đây là số lượng được tính phí.
duration, resolution, ratio, framespersecond, seedThông số thực tế đã được xuất; seed là giá trị do mô hình chọn.
created_at, updated_atDấu thời gian Unix tính bằng giây.
error{"code", "message"} của tác vụ thất bại hoặc hết hạn.

URL video được lưu trữ trên kho lưu trữ của chúng tôi. Hãy lưu tệp vào kho lưu trữ của riêng bạn nếu cần bản sao lâu dài.

Liệt kê tác vụ

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

Trả về {"total": N, "items": [...]} chứa các đối tượng tác vụ trong 7 ngày gần nhất, mới nhất trước. page_num và page_size nằm trong khoảng 1–500 (mặc định là 1 và 20). Bộ lọc: filter.status, filter.model, filter.task_ids (có thể lặp lại) và filter.service_tier.

Lỗi

Những yêu cầu bị từ chối trước khi tác vụ được tạo sẽ trả về lỗi HTTP kèm đối tượng error và không bị tính phí. Tác vụ thất bại sau khi đã được tiếp nhận sẽ trả về HTTP 200 khi truy vấn, kèm status: "failed" (hoặc "expired") và một đối tượng error. Đầu ra bị bộ lọc nội dung giữ lại sẽ thất bại với content_policy_violation; tác vụ chạy quá execution_expires_after sẽ kết thúc ở trạng thái expired với task_expired.

Hãy xem danh mục lỗi dùng chung để biết mã lỗi, mã trạng thái HTTP và hướng dẫn thử lại.

{
  "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."
  }
}

Nếu chính lần gửi bị hết thời gian chờ, hãy kiểm tra danh sách tác vụ trước khi gửi lại: yêu cầu đầu tiên có thể đã được tiếp nhận.

Mẹo

  • Hãy mô tả chủ thể, hành động, chuyển động máy quay và ánh sáng bằng câu hoàn chỉnh.
  • Hãy làm bản nháp ở 480p với duration ngắn, rồi xuất phiên bản đã chọn ở độ phân giải cao hơn.
  • Nối các cảnh quay bằng return_last_frame: dùng khung hình được trả về làm first_frame của tác vụ tiếp theo.

Liên quan