GPT-6 Astra is now live on CometAPI →
technology/CometAPIリサーチ

Seedance 2.0 API の使い方

Seedance 2.0 API は、ByteDance の最新のマルチモーダルAI動画生成モデル(2026年4月9日ローンチ)です。1つのリクエストでテキスト、画像、動画クリップ、音声を受け付け、ネイティブな音声同期、監督レベルのカメラ制御、卓越した動きの一貫性を備えた映画的な4〜15秒のMP4動画を生成します。使い方:CometAPI.comでサインアップし、APIキーを取得、REST経由で非同期タスクを送信、完了をポーリングし、動画のURLをダウンロードします。

CometAPI
AnnaAIモデルとAPIの調査チーム
更新日 Sep 3, 2026 6 分読み
Seedance 2.0 API の使い方
このパターンを使う

最初のAPI呼び出しを行う。

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Seedance 2.0 は、ByteDance のフラッグシップであるマルチモーダル動画生成モデルで、2026年4月9日に正式ローンチし、fal.ai を含む主要プラットフォームで提供開始されました。この強力な AI ツールは、テキスト・画像・音声・動画リファレンスを映画的な 4〜15 秒の動画に変換し、ネイティブな音声同期、ディレクター級のカメラ制御、実世界物理を実現します—すべて単一の生成パスで。自動化された動画ワークフローを構築する開発者、バイラルなコンテンツを制作するマーケター、シーンをプロトタイピングするフィルムメイカーのいずれであっても、Seedance 2.0 API は従来よりも速くプロダクションクオリティの結果を届けます。

Seedance 2.0 とは? 主な機能と能力

Seedance 2.0 は、ByteDance の次世代統合型のマルチモーダル音声・映像共同生成モデルです。従来版やテキスト/単一画像入力に制限された競合と異なり、1 回のリクエストで最大でネイティブに「画像 9 点 + 動画クリップ 3 本 + 音声クリップ 3 本」(合計 12 アセット)をサポートします。

主な機能:

  • ネイティブな音声・映像の同時生成: 音楽、セリフ、効果音、リップシンクを動画と同時に生成—ポストプロダクション不要。
  • ディレクター級の制御: 精密なカメラ動作(ドリーズーム、トラッキングショット、POV 切り替え、ハンドヘルド)、ライティング、シャドウ、物理挙動。
  • マルチショットの物語構成: 4〜15 秒のクリップ内で自然なカットとトランジション。
  • 出力仕様: MP4(480p/720p)、アスペクト比(16:9、9:16、1:1 など)、一部ティアで最大 2K 解像度。

3 つの主要モード:

  • text_to_video: 純粋なプロンプトベース。
  • first_last_frames: 1〜2 枚の画像を開始/終了フレームに使用。
  • omni_reference: 厳密制御のための @reference 構文を備えたフル・マルチモーダル。

SeedVideoBench-2.0 のベンチマークでは、Seedance 2.0 は動きの安定性、プロンプト遵守、キャラクター一貫性において従来モデルを上回っています。映画的で没入感の高い出力において強力な Sora の代替として位置付けられています。2026年4月15日時点で、開発者は 10 秒クリップの生成時間が 2 分未満であり、実世界物理と音質が従来モデルよりも優れていると報告しています。

はじめに: CometAPI 経由で Seedance 2.0 API にアクセス

Seedance 2.0 は複数のプロバイダーから提供されていますが、開発者向けには CometAPI.com が優れています。500+ の AI モデル(Sora 2 や Gemini video などの動画ジェネレーターを含む)への統一ゲートウェイとして、CometAPI は次を提供します。

  • OpenAI 互換の REST エンドポイント
  • すべてのモデルで使える単一の API キー
  • 無料のスタータークレジットを含む競争力のある価格
  • 組み込み SDK、非同期ジョブ処理、使用状況ダッシュボード
  • ベンダーロックインなし—model ID を変えるだけで切り替え可能

API 認証と中核ワークフロー

多くのプロバイダーは 非同期ジョブ型の REST API を採用しています。

  • タスク作成に POST → task_id が返る
  • GET /tasks/{task_id} でステータスをポーリング(queued → processing → completed)
  • 成功時に video_url を取得

認証: Bearer トークンまたは X-API-Key ヘッダー

CometAPI でのステップバイステップ設定

1) CometAPI でのセットアップ

CometAPI.com にアクセスしてサインアップ(新規ユーザーは無料クレジットあり)。

ダッシュボード → API Tokens → Create new key に進む。

sk- で始まるキーをコピーして環境変数(COMETAPI_KEY)に設定。

Seedance 2.0 用に統一された /v1/chat/completions 形式または専用の動画エンドポイントを使用(モデル名: bytedance/seedance-2.0 または seedance-2-preview)。

この方法は、fal.ai や PiAPI などの個別キー管理と比べて数時間の工数削減になります。CometAPI は低レイテンシなルートや、プロダクションのスケールに最適なバンドルクレジットも提供します。

2) 強力なプロンプトを用意する

Seedance 2.0 は、プロンプトがミニ「監督ブリーフ」として機能するほど良く反応します。被写体、カメラの動き、望むスタイル、維持したい一貫性、変えてはならない点を明確に述べてください。複数のリファレンスをサポートしているため、すべてをテキストに詰め込むのではなく、フレームのリファレンス、モーションのリファレンス、音声のリファレンスを添付できます。

実用的なプロンプトの定型は、被写体 + 動作 + カメラ動作 + ビジュアルスタイル + ライティング + リファレンスメモ + 制約 です。例えば「スタイリッシュな車の広告」ではなく、「夜の濡れた屋上に停められた光沢のある電動セダン、ゆっくりとドリーイン、ネオンの反射、プレミアムなコマーシャル照明、カメラブレなし、車を中央にキープ、16:9」のように記述します。この種のプロンプトがモデルのディレクター級ポジショニングによりマッチします。

3) 非同期生成リクエストを送信する

以下は Seedance 2.0 スタイルのリクエストのわかりやすい curl 例です:

import json
import os
import time

import requests

# CometAPI キーを https://www.cometapi.com/console/token から取得し、ここに貼り付けてください
BASE_URL = "https://api.cometapi.com"
OUTPUT_DIR = "./output"
POLL_INTERVAL_SECONDS = 10
RETRY_DELAY_SECONDS = 5
MAX_CREATE_ATTEMPTS = 5
MAX_QUERY_ATTEMPTS = 3
TERMINAL_STATUSES = {"success", "completed", "failed", "error"}
SUCCESS_STATUSES = {"success", "completed"}


def is_progress_complete(progress):
    if isinstance(progress, int):
        return progress >= 100
    if isinstance(progress, float):
        return progress >= 100
    if isinstance(progress, str):
        try:
            return float(progress.rstrip("%")) >= 100
        except ValueError:
            return False
    return False


def is_transient_status(status_code):
    return status_code == 429 or 500 <= status_code < 600


def create_task(files):
    for attempt in range(1, MAX_CREATE_ATTEMPTS + 1):
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            files=files,
            timeout=30,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_CREATE_ATTEMPTS:
            response.raise_for_status()
        print(f"作成リクエストが {response.status_code} を返しました。リトライします…")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("タスクの作成に失敗しました。")


def get_task(task_id):
    for attempt in range(1, MAX_QUERY_ATTEMPTS + 1):
        response = requests.get(
            f"{BASE_URL}/v1/videos/{task_id}",
            headers=headers,
            timeout=15,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_QUERY_ATTEMPTS:
            response.raise_for_status()
        print(f"ステータスリクエストが {response.status_code} を返しました。リトライします…")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("タスクのクエリに失敗しました。")

if COMETAPI_KEY == "<YOUR_COMETAPI_KEY>":
    print("このサンプルを実行する前に COMETAPI_KEY を設定してください。")
    raise SystemExit(0)

headers = {"Authorization": f"Bearer G00igxF5pXVB56lrtvvgn3hGXJA4bsobmX9YMpGukWAwJDiy"}

create_response = create_task(
    {
        "prompt": (None, "夜明けの海岸風景を横切る、ゆったりとした映画的なカメラプッシュ。"),
        "model": (None, "doubao-seedance-2-0"),
        "seconds": (None, "5"),
        "size": (None, "16:9"),
    }
)
create_response.raise_for_status()
create_result = create_response.json()

task_id = create_result.get("id") or create_result.get("task_id")
if not task_id:
    print(json.dumps(create_result, indent=2))
    raise SystemExit("タスク ID が返されませんでした。")

print(f"タスクを作成しました: {task_id}")
print(f"初期ステータス: {create_result.get('status')}")

while True:
    task_response = get_task(task_id)
    task_response.raise_for_status()
    task = task_response.json()
    status = str(task.get("status") or "unknown")
    normalized_status = status.lower()
    progress = task.get("progress")
    should_try_download = normalized_status in SUCCESS_STATUSES or (
        normalized_status == "unknown" and is_progress_complete(progress)
    )

    print(f"ステータス: {status}, 進捗: {progress}")

    if should_try_download or normalized_status in TERMINAL_STATUSES:
        if should_try_download:
            video_url = task.get("video_url") or ""
            content_url = f"{BASE_URL}/v1/videos/{task_id}/content"
            output_path = os.path.join(OUTPUT_DIR, f"{task_id}.mp4")

            os.makedirs(OUTPUT_DIR, exist_ok=True)
            with requests.get(
                content_url,
                headers=headers,
                timeout=120,
                stream=True,
            ) as video_response:
                video_response.raise_for_status()
                with open(output_path, "wb") as output_file:
                    for chunk in video_response.iter_content(chunk_size=8192):
                        if chunk:
                            output_file.write(chunk)

            print(f"Video URL: {video_url}")
            print(f"コンテンツエンドポイント: {content_url}")
            print(f"{output_path} に保存しました")
            print(f"ファイルサイズ: {os.path.getsize(output_path)} バイト")
        else:
            print(json.dumps(task, indent=2))
            raise SystemExit(1)
        break

    time.sleep(POLL_INTERVAL_SECONDS)

CometAPI 自身の Seedance 2.0 ウォークスルーも同じエンドポイントパターンを使用しており、リクエスト構造の一部として output 制御(例: resolution: "1080p", duration_s: 12)を示しています。

4) 完了までポーリングし、結果をダウンロード

一般的なフローは、ジョブを送信し、タスク ID を保存し、ステータスをポーリングし、その後動画 URL を取得する、というものです。タスクエンドポイントはタスク ID を返し、GET /volc/v3/contents/generations/tasks/{task_id} でジョブ完了までステータスを確認します。

Seedance 2.0 の生成モード解説

Mode最適な用途入力例最大リファレンス数
text_to_video迅速なアイデア出しテキストプロンプトのみ0
first_last_framesキーフレームを使った絵コンテ作成1〜2 枚の画像 + プロンプト2
omni_referenceプロ向けのシネマティック制御画像 + 動画 + 音声 + テキスト12

ステップバイステップ: Text-to-Video(Python コード例)

以下は適用可能な Python 例です:

import osimport timeimport requestsAPI_KEY = os.environ["COMETAPI_API_KEY"]BASE_URL = "https://api.cometapi.com/volc/v3/contents/generations/tasks"headers = {    "Authorization": f"Bearer {API_KEY}",    "Content-Type": "application/json",}payload = {    "model": "doubao-seedance-2-pro",    "content": [        {            "type": "text",            "text": (                "雨で濡れたネオン街を夜に空撮する映画的なドローンショット、"                "ゆっくりとしたプッシュイン、リアルな反射、さりげない群衆の動き。"            )        },        {            "type": "image",            "url": "https://example.com/reference-frame.jpg"        }    ],    "output": {        "resolution": "1080p",        "duration_s": 12    }}resp = requests.post(BASE_URL, json=payload, headers=headers, timeout=60)resp.raise_for_status()data = resp.json()task_id = data.get("id") or data.get("task_id")if not task_id:    raise RuntimeError(f"想定外のレスポンスです。タスク ID が見つかりません: {data}")status_url = f"{BASE_URL}/{task_id}"for _ in range(60):    status_resp = requests.get(status_url, headers=headers, timeout=30)    status_resp.raise_for_status()    status_data = status_resp.json()    status = status_data.get("status")    if status in {"succeeded", "failed"}:        break    time.sleep(5)print("最終ステータス:", status)if status == "succeeded":    result = status_data.get("result", {})    print("Video URL:", result.get("download_url"))else:    print("タスク詳細:", status_data)

このパターンは CometAPI の Seedance ページで文書化されている非同期ワークフロー(ジョブ送信 → タスクポーリング → 完了時に結果ペイロードを参照)と一致します。

Image-to-Video と First/Last Frames

payload に image_urls または reference_images を追加します:

payload = {
    "model": MODEL,
    "prompt": "キャラクターが振り向いてカメラに微笑む。自然な動き。",
    "image_urls": ["https://example.com/start-frame.jpg"],  # 最初のフレーム
    "task_type": "first_last_frames"  # あるいは omni_reference
}

高度なマルチモーダル Omni-Reference の例

payload = {
    "model": MODEL,
    "prompt": "プロのシェフがパスタを料理しながら手順を説明する。@image1 でシェフの顔の一貫性を維持し、@video1 でキッチンのレイアウトを参照し、@audio1 で軽快なイタリア音楽とボイスオーバーを使用。",
    # プロバイダのダッシュボードまたは事前署名付き URL 経由でリファレンスをアップロード
    "references": {  # プラットフォーム固有のフィールド
        "image1": "https://.../chef.jpg",
        "video1": "https://.../kitchen.mp4",
        "audio1": "https://.../music.wav"
    }
}

Seedance 2.0 のプロンプトエンジニアリングのベストプラクティス

  • 具体的に記述する: 「ワイドからクローズアップへのスロードリーズーム、マジックアワーの光、リアルな物理挙動」。
  • リファレンスを使う: 常に @assetN を前置する。
  • カメラ言語: 「ハンドヘルドのトラッキングショット、ラックフォーカス、スムーズなオービット」。
  • 音声キュー: 「ベースのドロップに合わせてカットを同期、リップシンクした明瞭なセリフ」。
  • 長さの指定: 「8 秒のクリップ、5 ショット」。

プロのコツ: まずプロバイダのプレイグラウンドでプロンプトをテスト(CometAPI はワンクリックテストを提供)。

比較表: Seedance 2.0 と主要競合(2026)

機能Seedance 2.0Kling 3.0Runway Gen-4Luma Ray 2 / Sora 2
ネイティブオーディオ⭐⭐⭐⭐⭐ (best)⭐⭐⭐⭐⭐⭐⭐⭐⭐
マルチモーダル参照最大 12 ファイル限定的画像のみさまざま
最大尺15s10–15s8–16s8–20s
カメラ制御ディレクター級強力優れた良好
動きの一貫性業界最先端とても良い良好優れた
最適な用途シネマティックな物語性キャラクターの一貫性芸術的な磨き上げフォトリアリズム

Seedance 2.0 はネイティブオーディオとマルチモーダル制御で優位です。

実世界でのユースケース

  • マーケティング: ボイスオーバーと同期した製品デモ。
  • ソーシャルメディア: 音楽ドリブンのカットを用いたバイラル短編。
  • フィルム・プリビズ: 一貫したキャラクターで絵コンテから動画へ。
  • 教育: リップシンク付きのアニメーション解説。

CometAPI ユーザーは、同一コードベースで Seedance 2.0 と補完モデルを切り替えることで、反復が 40% 高速化したと報告しています。

ベストプラクティス、スケーリング、エラーハンドリング

  • ポーリングには指数バックオフを実装。
  • リトライには冪等性キーを使用。
  • CometAPI ダッシュボードで使用状況を監視。
  • 一部ティアでウォーターマーク除去が利用可能。
  • コンテンツモデレーションを順守(違法/欺瞞的コンテンツは禁止)。

Python のエラーハンドリングスニペット:

try:
    video_url = generate_seedance_video(...)
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 429:
        print("レート制限 — バックオフ後に再試行")

よくある問題のトラブルシューティング

  • タスクがキューで停滞: プロバイダのステータスを確認し、迅速なティアを使用。
  • 一貫性が低い: @ 構文で参照画像を増やす。
  • 音声のずれ: プロンプトでリズムを明示する。
  • コストが高い: テストには高速プレビュー用モデルに切り替える。

まとめと次のステップ

Seedance 2.0 API は、制御性とネイティブオーディオ対応において AI 動画生成を大きく前進させます。上記のコード例と CometAPI.com の統一プラットフォームを使えば、30 分以内にプロダクション向け動画ワークフローの構築を開始できます。

試してみますか? CometAPI.com にアクセスして無料クレジットを入手し、今すぐ最初の Seedance 2.0 動画を生成しましょう。ソロクリエイター、代理店、エンタープライズチームのいずれでも、CometAPI は Seedance 2.0 と 500+ の他モデルへの最小摩擦・高い価値のアクセスを提供します。

今日から映画的な AI 動画の構築を始めましょう—次のバイラルキャンペーン(または長編のプリビズ)は、たった 1 回の API コールの先にあります。

学習を続ける

この記事を次の判断につなげる。

すべてのトピックを見る
公開日 Apr 17, 2026
最終更新 Sep 3, 2026
729 回視聴
明確性、出典の帰属、最新のAPI用語について確認済みです。

AI開発コストを20%削減する準備はできていますか?

数分で無料スタート。無料トライアルクレジット付き。クレジットカード不要。

もっと読む