Seedance 2.0 Mini
Seedance 2.0 Mini を使用して、テキスト、最初と最後のフレーム、またはマルチモーダルな参照データから動画を生成します。このページでは、このモデルにおけるリクエストの送信から生成結果の受け取りまでの一連のワークフローを解説します。
APIモデルID: seedance-2-0-mini
動画生成は非同期で行われます。タスク作成時に返される taskId を保存し、そのステータスを確認するか、ウェブフックで結果を受け取ってください。
対応機能
| 機能 | 対応している値 |
|---|---|
| 出力解像度 | 480p · 720p |
| 出力時間 | 4〜15 秒 |
| アスペクト比 | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| 参照画像 | 画像は9枚まで |
| 参照動画 | 動画は3本まで |
| 参照音声ファイル | 音声ファイルは3個まで |
| 参照ファイルの合計数 | 参考ファイルは最大12個まで |
| 動画/音声グループごとの合計再生時間 | 15 秒 |
| seed | -1 から 4294967295 まで |
料金とクレジット
動画生成の料金は、課金対象となる秒単位の長さに基づいて、クレジットで請求されます。動画の入力がない場合、課金対象は出力された動画の長さとなります。動画の入力がある場合は、参照動画の長さも課金対象に加算されます。
以下の表は、1秒あたりに消費されるクレジット数を示したものであり、タスク全体の総コストではありません。料金レートは、モデル、出力解像度、およびビデオ・ツー・ビデオ(V2V)モードで参照動画が提供されているかどうかによって異なります。総コストの計算方法については、表の下にある計算式と例をご参照ください。
| 出力解像度 | 動画入力なし | 動画入力あり |
|---|---|---|
480p | 3クレジット/秒 | 2クレジット/秒 |
720p | 6クレジット/秒 | 4クレジット/秒 |
- 動画入力なしの場合:出力秒数 × 動画入力なしの単価
- 動画入力ありの場合:(出力秒数 + 検出された参照動画の秒数)× 動画入力ありの単価。サーバー側で参照動画の合計再生時間を測定し、1秒未満を切り上げた秒数に基づいて課金します。
- 画像または音声のみを参照させる場合は、動画入力なしの単価が適用されます。動画入力ありの課金単価は、reference-to-video モードで参照動画が実際に提供された場合にのみ適用されます。
料金の計算例
5秒間の720p動画(テキストから動画):5 × 6 = 30 クレジット
5秒間の参照動画をもとに、5秒間の720p動画を出力:(5 + 5)× 4 = 40 クレジット
クレジットはリクエスト時に仮確保され、タスクが成功した時点で決済(実売上)されます。失敗またはタイムアウトしたタスクは、返金処理に回されます。課金ステータスが refund_failed になった場合は返金処理が未完了であることを意味します。APIログを確認するか、サポートまでお問い合わせください。
認証
ダッシュボードでAPIキーを作成してください。APIキーの全体が表示されるのは作成時の1回のみです。キーは安全なサーバー上で管理し、すべてのリクエストのヘッダーに Bearer トークンとして含めて送信してください。
ベースURL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonこれらのサンプルコードを実行する前に、環境変数 SEEVIO_API_KEY を設定してください。JavaScriptのサンプルはサーバー上の Node.js で、Pythonのサンプルは requests ライブラリを使用して実行します。
クイックスタート
この最小限のリクエストを送信し、返された taskId を保存した上で、後述のタスクステータス確認の例を実行してください。作成レスポンスに含まれる credits の値は、確保(仮売上)されたクレジット量を示しています。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'タスク作成時のレスポンス例
リクエストが承認されると、APIは次のJSONレスポンスを返します。taskIdは、その後のステータス照会に使用するタスク識別子です。creditsは、このタスクに確保されたクレジット数を示します。このレスポンスはタスクの作成が完了したことを示すものであり、動画の生成完了を意味するものではありません。動画の生成結果を取得するには、タスクステータスをポーリングするか、Webhookを使用する必要があります。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 30
}タスクの作成
POST https://api.seevio.ai/v1/videos/generationsmodel と input、および任意で callback_url を含む JSON オブジェクトを送信します。必ずこのページに表示されているモデルIDを指定してください。省略した場合は自動的に seedance-2-0 が選択されます。
リクエストボディ
| フィールド | データ型 | 必須 | 説明と制約条件 |
|---|---|---|---|
model | string | はい | モデルID。Seedance 2.0 Miniを使用するには、このフィールドをseedance-2-0-miniに設定してください。 |
callback_url | string | いいえ | タスク完了時または失敗時に POST コールバックを受け取るための、一般公開されている HTTPS エンドポイント。プライベートネットワークや localhost は指定できません。 例: https://example.com/webhooks/seevio |
input | object | はい | 生成の設定。空でないプロンプト(prompt)を含める必要があります。 |
入力パラメータ
image_urls、video_urls、audio_urlsは、URL文字列の配列(string[])として指定してください。指定するすべてのURLは、選択したモードで処理対象外となるメディアも含め、HTTPS経由でパブリックにアクセス可能である必要があります。
| フィールド | データ型 | 必須 | デフォルト値 | 説明と制約条件 |
|---|---|---|---|---|
input.prompt | string | はい | — | すべてのモードでプロンプトの入力が必要です。プロンプトは、前後の空白を除いて最大10,000文字まで入力できます。また、空白文字(スペース)のみのプロンプトは使用できません。 例: A cat surfing at sunset |
input.generation_type | string | いいえ | text-to-video | text-to-video はプロンプトのみを使用し、image-to-video は1〜2枚の画像を使用、reference-to-video は画像、動画、音声などの参照データを使用します。 対応している値 text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | 条件付き | [] | image-to-video:最初のフレームとして1枚の画像、または最初と最後のフレームとして順番に並んだ2枚の画像を指定します。reference-to-video:最大 9 枚の画像を指定できます。text-to-video では無視されます。 例: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | 条件付き | [] | reference-to-video でのみ送信されます。最大 3 件の動画で、合計 15 秒まで指定可能です。他のモードでは無視されます。 例: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | 条件付き | [] | reference-to-video でのみ送信されます。最大 3 件の音声ファイルで、合計 15 秒まで指定可能です。他のモードでは無視されます。 このモデルでは、音声データのみを参考素材として使用することはできません。audio_urls を指定する場合は、image_urls に少なくとも1つの参照画像を追加するか、video_urls に少なくとも1つの参照動画を追加する必要があります。 例: ["https://example.com/music.mp3"] |
input.duration | integer | いいえ | 5 | 4〜15 秒の範囲の整数で出力時間を指定します。 対応している値 4–15例: 5 |
input.aspect_ratio | string | いいえ | adaptive | 出力動画のアスペクト比。adaptive を指定すると、モデルが最適なアスペクト比を自動で決定します。 対応している値 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive例: adaptive |
input.resolution | string | いいえ | 720p | ここに記載されているサポート対象の出力解像度のいずれかを使用してください。 対応している値 480p | 720p例: 720p |
input.generate_audio | boolean | いいえ | true | 同期された音声の生成をリクエストします。 対応している値 true | false例: true |
input.watermark | boolean | いいえ | false | 生成された動画へのAIウォーターマーク(透かし)の挿入をリクエストします。 対応している値 true | false例: false |
input.web_search | boolean | いいえ | false | モデルが対応している場合に、ウェブ検索を有効にします。 対応している値 true | false例: false |
input.return_last_frame | boolean | いいえ | false | 最終フレームの取得をリクエストします。フレームが利用可能な場合、ステータス確認結果の data.last_frame_url にURLが含まれます。利用できない場合は null になります。 対応している値 true | false例: true |
input.seed | integer | いいえ | -1 | -1 から 4294967295 までの整数。-1 を指定するとランダムなシード値が選択されます。 対応している値 -1 から 4294967295 まで例: 42 |
真偽値のフィールドには、文字列や数値ではなく、JSONの true または false を指定してください。
作成時のレスポンス
HTTP 200 は taskId(文字列)と credits(数値)を返します。これはタスクの作成が受け付けられたことを意味し、生成の完了を示すものではありません。以下のクレジット数は、5秒間の720pクイックスタートに対応する額です。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 30
}生成モードとコード例
テキストから動画 (Text to Video)
テキストプロンプトから動画を生成します。このモードではメディアURLは送信されません。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'最初のフレーム (First frame)
最初のフレームとして画像を1枚提供し、プロンプトで動画の動きを説明します。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'最初と最後のフレーム (First & last frames)
1枚目に最初のフレーム、2枚目に最後のフレームとなるように、順番に2つの画像URLを提供します。この例では、生成された動画の最終フレーム画像もリクエストしています。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'マルチモーダル参照
画像、動画、音声の参照データを組み合わせます。プロンプトの指定は必須です。参照動画を入力すると料金の算出方法が変わります。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'タスクのステータス確認
GET https://api.seevio.ai/v1/tasks/{taskId}サンプルのIDを、作成時に返された taskId に置き換えてください。ステータス確認は、そのAPIキーを所有するユーザーのタスクのみ可能です。権限がない、または存在しないIDの場合は HTTP 404 が返されます。
最初は10〜20秒間隔でポーリングを開始し、HTTP 429(レートリミット)が発生した場合は間隔を空け、ステータスが completed または failed になったら終了します。本番環境ではウェブフックの使用を推奨します。以下の各コード例は、1回のステータス確認リクエストを行うものです。
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| ステータス | 説明と制約条件 |
|---|---|
queued | 受け付けられ、処理待ちの状態です。 |
generating | 動画を生成中です。 |
completed | 生成成功(最終状態)。有効期限が切れる前に data.results から動画をダウンロードしてください。 |
failed | 生成失敗(最終状態)。failed_reason と billing_status を確認してください。 |
| フィールド | データ型 | 説明と制約条件 |
|---|---|---|
id | string | タスク識別子。作成時のレスポンスに含まれる taskId と同一です。 |
created_at | number | Unixタイムスタンプ(秒)で表されるタスク作成日時。 |
model | string | このタスクに使用された公開モデルのID。 |
billing_status | string | reserved(仮確保)、charged(決済完了)、refunded(返金済み)、または refund_failed(返金失敗)。 |
credits | number | このタスクのために仮確保されたクレジット。返金された後もこの値は保持されます。実際の課金結果を判断するには billing_status を参照してください。 |
failed_reason | string | null | タスクが失敗した場合のエラー理由。それ以外は null。ステータス確認時にタスクが失敗している場合、レスポンスに data は含まれません。 |
data | object | タスクが失敗していない場合に返されます。出力結果と処理の詳細が含まれます。 |
data.results | string[] | 動画URLの配列。生成が完了するまで、または動画の有効期限が切れた後は空になります。 |
data.video_expires_at | string | null | ISO 8601 形式のタイムスタンプで表される動画の有効期限。まだ利用できない場合は null。この期限までに結果を保存してください。 |
data.last_frame_url | string | null | 最終フレームがリクエストされ、取得可能な場合はそのURL。それ以外は null。 |
data.processing_time | number | null | プロバイダー側での処理時間(秒)。取得できない場合は null。 |
タスク完了時:動画生成結果を含むクエリレスポンス
クエリのレスポンスとしてstatus=completedが返された場合は、動画の生成が完了しています。data.resultsから動画のURLを取得し、data.video_expires_atの期限までにダウンロードしてください。billing_status=chargedは、確保されていたクレジットの決済が確定したことを示します。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "completed",
"billing_status": "charged",
"credits": 30,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}タスク失敗時:エラー原因と決済詳細を含むクエリレスポンス
クエリのレスポンスとしてstatus=failedが返された場合は、動画生成が正常に終了しなかったことを意味します。失敗の理由はfailed_reasonで、返金結果はbilling_statusで確認できます。この例では、refundedとなっておりクレジットが返却されたことを示しています。creditsには最初に確保された額がそのまま表示され、レスポンスにdataは含まれません。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "failed",
"billing_status": "refunded",
"credits": 30,
"failed_reason": "provider_failed"
}ウェブフック
作成リクエスト時に callback_url を設定すると、タスクが完了または失敗した際、JSONデータが POST リクエストで送信されます。受信側は15秒以内に 2xx レスポンスを返してください。配信に失敗した場合は再試行されます。同一のタスクIDで重複してコールバックを受信することがあるため、冪等(べきとう)な処理を行ってください。
コールバックエンドポイントは、JSON形式のリクエストボディ(Content-Type: application/json)を含むPOSTリクエストを受け付ける必要があります。
コールバックを指定してタスクを作成
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-mini",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'ウェブフックのペイロードはステータス確認時のレスポンスと異なり、billing_status と credits が除外されます。失敗の詳細は data.failed_reason および data.credits_refunded に含まれます。ウェブフックの created_at は、イベントが生成されたUnixタイムスタンプ(秒)です。
タスク完了:処理成功時のコールバックペイロード
生成が成功すると、コールバックのステータスは「status=completed」になります。idでタスクを特定し、data.resultsから動画のURLを取得してください。data.video_expires_atの期限が切れる前に、結果をダウンロードして保存してください。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "completed",
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}タスク失敗:処理失敗時のコールバックペイロード
生成が失敗すると、コールバックのステータスは「status=failed」になります。idでタスクを特定し、data.failed_reasonで失敗の理由、data.credits_refundedで返還されたクレジット数を確認してください。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-mini",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 30
}
}レシーバーの実装例
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData.data;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}このNext.jsのサンプルコードは、JSON形式のコールバックボディを読み込み、成功したタスクと失敗したタスクを直接処理します。実際のアプリケーション開発では、永続化処理やタスクIDの重複排除を追加してください。また、時間のかかる処理はキューに登録してから、コールバックへの応答を返すようにしてください。
メディア要件と制限事項
- すべてのメディアURLおよびコールバックURLは、一般公開されている HTTPS URLである必要があります。localhost、プライベートIP、クッキーやログインが必要なファイルは避けてください。参照動画・音声のURLは、直接読み込み可能なメディアファイルである必要があります。
- reference-to-video モードでは、少なくとも1つの参照データを指定する必要があります。ただし、画像は 9枚、動画は 3件、音声は 3件、合計の参照ファイル数は 12件を超えてはなりません。また、動画および音声の合計再生時間はそれぞれ最大 15秒までです。
- text-to-video ではすべてのメディア参照が無視されます。image-to-video では、最初と最後のフレーム画像のみが送信され、動画や音声の参照データは無視されます。複数のメディアを組み合わせる場合は reference-to-video を使用してください。
- Seedance 2.0 モデルにおいて、音声を使用する場合はモデルの互換性のために少なくとも1つの画像または動画と組み合わせてください。音声のみの構成例は、Seedance 2.5 のページに掲載されています。
- Fast および Mini モデルは 480p と 720p に対応しています。リクエスト送信時のバリデーションを通過しても、このモデルでサポートされていない高解像度を指定した場合はエラーになります。
画像要件
- 画像ファイルサイズは1点あたり30 MB未満にする必要があります。
- 対応フォーマット:jpeg、png、webp、bmp、tiff、gif
- アスペクト比(幅 ÷ 高さ):0.4〜2.5(両端の値を含む)
- 幅と高さは、それぞれ300〜6,000ピクセルの範囲内(両端の値を含む)にする必要があります。
動画要件
- 対応フォーマット:mp4、mov
- 動画ファイルサイズは1点あたり100 MB以下にする必要があります。
- フレームレート:24〜60 FPS(両端の値を含む)
- アスペクト比(幅 ÷ 高さ):0.4〜2.5(両端の値を含む)
- 総ピクセル数(幅 × 高さ):407,696〜8,295,044(両端の値を含む)。例えば、614 × 664 = 407,696や3,326 × 2,494 = 8,295,044が該当します。これらは総ピクセル数の例であり、幅と高さの要件自体を固定するものではありません。
音声要件
- 対応フォーマット:wav、mp3
- 音声ファイルサイズは1点あたり15 MB以下にする必要があります。
エラー
HTTPエラーは、code と message を含む error オブジェクトを返します。正常に受け付けられたタスクであっても後から失敗することがあるため、タスクのステータスを確認するか、失敗時のコールバックを適切に処理してください。
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | フィールド | 対処方法 |
|---|---|---|
| 400 | invalid_request | JSONの構文、プロンプトの有無、パラメータの範囲、またはメディアURLに問題があります。修正して再試行してください。 |
| 401 | invalid_api_key | Bearer トークンが正しいか、およびAPIキーが有効化されているかを確認してください。 |
| 402 | insufficient_credits | クレジットを追加するか、タスクの消費想定を減らしてください。レスポンスには、必要なクレジット数と現在の保有クレジット数が含まれる場合があります。 |
| 403 | forbidden | エラーメッセージに記載されているアカウントレベルの制限事項を確認してください。 |
| 404 | not_found | タスクIDが正しいか、およびそのキーがタスクの作成者と一致しているかを確認してください。 |
| 429 | rate_limited | Retry-After ヘッダーに示された秒数が経過した後に再試行してください。 |
| 500 | internal_error | エラーメッセージとAPIログを確認してください。注意深く再試行してください。作成リクエストを再送信すると、新たに課金対象となるタスクが作成される可能性があります。 |
レートリミット
タスクの作成:デフォルトでは、APIキー1つにつき1分あたり最大100回のリクエストが可能です。現在、カスタムレート制限の設定はご利用いただけません。
タスクの照会:デフォルトでは、APIキー1つにつき1分あたり最大120回のリクエストが可能です。照会リクエストとタスク作成リクエストは別々にカウントされます。