Seedance
curl --request POST \
--url https://api.mixroute.ai/v1/video/generationsimport requests
url = "https://api.mixroute.ai/v1/video/generations"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.mixroute.ai/v1/video/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mixroute.ai/v1/video/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mixroute.ai/v1/video/generations"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mixroute.ai/v1/video/generations")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixroute.ai/v1/video/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body動画シリーズ
Seedance
Seedanceの動画生成パラメーター、対応する値、入力制約、およびリクエスト例。
Seedance
curl --request POST \
--url https://api.mixroute.ai/v1/video/generationsimport requests
url = "https://api.mixroute.ai/v1/video/generations"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.mixroute.ai/v1/video/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mixroute.ai/v1/video/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mixroute.ai/v1/video/generations"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mixroute.ai/v1/video/generations")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mixroute.ai/v1/video/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodySeedanceは、テキストと対応するメディア入力から動画を生成します。DoubaoとDreaminaのルートプレフィックスは同じパラメーター名を使用しますが、機能と制限は選択したモデルのバージョンによって異なります。
ルート別ガイド:Doubao | Dreamina
モデルの利用可否はアカウントによって異なります。モデルマーケットプレイスに表示される完全なIDを使用してください。
POST https://api.mixroute.ai/v1/video/generations
model、prompt、assetはルートに置いてください。content、duration、ratio、resolution、generate_audioを含む、すべてのプロバイダーフィールドを単一のmetadataオブジェクト内に配置してください。モデルID
| シリーズ | MixRouteのID |
|---|---|
| Seedance 2.5 | dreamina-seedance-2-5-260628 / doubao-seedance-2-5-260628 |
| Seedance 2.0 | dreamina-seedance-2-0-260128 / doubao-seedance-2-0-260128 |
| Seedance 2.0 Fast | dreamina-seedance-2-0-fast-260128 / doubao-seedance-2-0-fast-260128 |
| Seedance 2.0 Mini | dreamina-seedance-2-0-mini-260615 / doubao-seedance-2-0-mini-260615 |
トップレベルのフィールド
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | はい | モデル表に記載された、完全なMixRouteモデルID。 |
prompt | string | はい | MixRouteの動画プロンプト。metadata.contentにテキスト項目が含まれる場合は、両方のテキストの整合性を保ってください。 |
asset | boolean | 条件付き | MixRouteのメディア処理の切り替え設定であり、プロバイダーフィールドではありません。ルートに配置してください。テキストのみの例ではfalseを使用します。 |
metadata | object | はい | 以下で説明するプロバイダーフィールドを格納するコンテナ。 |
生成パラメータ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
metadata.content | object[] | はい | 動画の生成に使用する入力。テキスト、画像、動画、音声、または対応するドラフトタスクを指定します。テキストのみの生成ではテキストが必須です。メディア入力を組み合わせる場合、プロバイダーはテキスト項目の省略を認めています。 |
metadata.omni_reference_task_type | string | いいえ | Seedance 2.5のみ。デフォルトはautoです。値:auto、reference、edit、extend。モードを明示すると、タスク種別を早期に検証できます。宣言されたモードと推定された意図が一致しない場合は、それでも非同期で失敗することがあります。 |
metadata.resolution | string | いいえ | 出力解像度のティアです。対応する値とデフォルトはモデルのバージョンによって異なります。バージョン表を参照してください。値では大文字と小文字が区別されます。 |
metadata.ratio | string | いいえ | 値:16:9、4:3、1:1、3:4、9:16、21:9、adaptive。2.5、2.0、1.5 Proのデフォルトはadaptiveです。1.0では、テキストから動画を生成する場合のデフォルトは16:9で、具体的な比率を使用する必要があります。画像から動画を生成する場合のデフォルトはadaptiveです。 |
metadata.duration | integer | いいえ | リクエストする長さ(秒)。バージョン表を参照してください。対応バージョンでは、-1を指定すると長さが自動的に選択されます。Seedance 2.5のデフォルトは-1で、動画編集には-1が必要です。 |
metadata.frames | integer | いいえ | Seedance 1.0 Pro/Pro Fastのみ。正の整数nについて25 + 4nを満たす29〜289の値です。durationより優先されます。出力フレームレートは24 fpsです。 |
metadata.generate_audio | boolean | いいえ | 2.5、2.0、1.5 Proに対応しています。デフォルトのtrueでは、発話、効果音、音楽などの同期されたモノラル音声を生成します。falseでは無音の動画を生成します。 |
metadata.watermark | boolean | いいえ | デフォルトはfalseです。trueは右下にAI生成を示す透かしを追加し、falseは透かしを付けません。 |
metadata.output_format | string | いいえ | Seedance 2.5のみ。デフォルトはmp4。値: mp4、mov。MP4は一般的な再生向けです。MOVはポストプロダクション向けに高い色精度を保持し、対応する再生ソフトウェアが必要です。 |
metadata.seed | integer | いいえ | 1.5 Proと1.0のみ。範囲は-1~2147483647です。デフォルトの-1はランダムシードを意味します。同じシードを再利用すると似た結果が得られる場合がありますが、同一の出力は保証されません。 |
metadata.camera_fixed | boolean | いいえ | 1.5 Proと1.0のみ。参照画像モードでは使用できません。デフォルトはfalseです。trueはカメラ固定の指示を追加しますが、カメラが完全に静止することを保証するものではありません。 |
metadata.return_last_frame | boolean | いいえ | デフォルトはfalse。trueを指定すると、生成動画と同じピクセル寸法の、透かしのない最終フレームのPNGがタスク結果に返されます。 |
metadata.draft | boolean | いいえ | デフォルトはfalseです。ドラフトモードはDreamina Seedance 2.5および1.5 Proでサポートされ、480pを使用します。Dreamina 2.5の最終生成には1080pを使用します。パラメーターの再利用方法はバージョンによって異なります。これらのルールを2.0に適用しないでください。1.5 Proでは、Draftをreturn_last_frame=trueまたはオフライン推論と併用できません。 |
metadata.service_tier | string | いいえ | 1.5 Proと1.0のみ。デフォルトのdefaultはオンライン推論で、flexを指定するとオフライン推論になります。送信後にティアを変更することはできません。2.5および2.0ファミリーはflexに対応していません。 |
metadata.callback_url | string | いいえ | タスクステータスのコールバックURL。プロバイダーは、タスク照会レスポンスの構造でPOST通知を送信します。ステータスにはqueued、running、succeeded、failed、expiredがあります。 |
metadata.execution_expires_after | integer | いいえ | 範囲は3600~259200秒、デフォルトは172800(48時間)で、タスクの作成時から計測されます。このしきい値を超えたタスクは、ステータスexpiredで終了します。 |
metadata.priority | integer | いいえ | 2.5および2.0のみ。範囲は0~9、デフォルトは0です。値が大きいタスクは、同じエンドポイントのキューにある優先度の低いタスクより先に処理されます。同じ優先度ではFIFOが維持され、実行中のタスクは中断されません。flexとの併用はサポートされていません。 |
metadata.safety_identifier | string | いいえ | エンドユーザーを識別する安定した一意の識別子です。英字64文字以内に制限されます。生の個人情報ではなく、ハッシュ化した識別子を使用してください。 |
metadata.tools | object[] | いいえ | 2.5と2.0のみ。各ツールにはtypeが必要で、対応する値はweb_searchです。検索するかどうかはモデルが判断します。照会結果のusage.tool_usage.web_searchには検索回数が表示されます。 |
バージョンごとの制限
| バージョン | 解像度 | デフォルトの解像度 | 長さ | 参照の上限(画像 / 動画 / 音声) |
|---|---|---|---|---|
| Seedance 2.5 | 480p / 720p / 1080p | 720p | 4〜30秒 / -1 | 30 / 10 / 10 |
| Seedance 2.0 | 480p / 720p / 1080p / 4k | 720p | 4~15秒 / -1 | 9 / 3 / 3 |
| Seedance 2.0 Fast / Mini | 480p / 720p | 720p | 4~15秒 / -1 | 9 / 3 / 3 |
| Seedance 1.5 Pro | 480p / 720p / 1080p | 720p | 4〜12秒 / -1 | - |
| Seedance 1.0 Pro / Pro Fast | 480p / 720p / 1080p | 1080p | 2~12秒 | - |
コンテンツ項目
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
metadata.content[].type | string | はい | モデルの対応状況に応じて、text、image_url、video_url、audio_url、draft_taskのいずれか。 |
metadata.content[].text | string | 条件付き | type=textの場合は必須です。生成したい動画を記述します。プロンプトの推奨上限は、中国語で500文字、または英語で1000語です。これは目安であり、入力に対する厳密な上限ではありません。 |
metadata.content[].image_url.url | string | 条件付き | 画像項目には必須です。公開URL、Base64データURLのdata:image/<format>;base64,...、またはアクセス可能なasset:// IDを指定します。 |
metadata.content[].video_url.url | string | 条件付き | 動画項目では必須です。公開URLまたはアクセス可能なasset:// IDを指定します。この入力形式は、動画のBase64データURLには対応していません。 |
metadata.content[].audio_url.url | string | 条件付き | 音声項目では必須。公開URL、data:audio/<format>;base64,...、またはアクセス可能なasset:// ID。 |
metadata.content[].draft_task.id | string | 条件付き | Dreamina Seedance 2.5または1.5 Proで正常に完了した、プロバイダーのDraftタスクID。これはMixRouteのポーリング用タスクIDではありません。Dreamina 2.5のDraft IDは7日後に失効します。 |
metadata.content[].role | string | 条件付き | 最初のフレーム画像1枚の場合、roleを省略するかfirst_frameを指定できます。最初/最後のフレーム間の補間には、first_frameとlast_frameを明示した2つの画像項目が必要です。参照項目にはreference_image、reference_video、またはreference_audioを使用します。 |
メディアの制限
| メディア | 制約 |
|---|---|
| 画像 | JPEG/PNG/WebP/BMP/TIFF/GIF。1.5 Pro以降ではHEIC/HEIFもサポートします。画像1枚あたり30 MB未満、各辺300〜6000 px、アスペクト比0.4〜2.5です。最初のフレームの入力には画像1枚、最初/最後のフレームの入力には画像2枚を使用します。 |
| 動画 | MP4/MOV。各ファイルは最大200 MB、24〜60 fps、アスペクト比0.4〜2.5、各辺300〜6000 px、総ピクセル数407696〜8295044です。2.0:各クリップは2〜15秒、合計は最大15秒です。2.5:各クリップは2〜30秒、合計は最大30秒です。編集入力は4〜30秒である必要があります。 |
| 音声 | WAV/MP3。各ファイル最大15 MBです。2.0:各クリップ2〜15秒、合計最大15秒。2.5:各クリップ2〜30秒、合計最大30秒。 |
| リクエスト | JSONリクエスト全体のサイズは、Base64による増加分を含めて最大64 MBです。入力は、モデルのメディア利用許諾要件を満たす必要があります。 |
シナリオ別の制約
- 最初のフレーム、最初と最後のフレーム、マルチモーダル参照の各ワークフローは併用できません。フレーム用のロールと
reference_*ロールを混在させないでください。 - Seedance 2.5では、最初/最後のフレームの入力、編集、および延長に
ratio="adaptive"が必要です。編集には4〜30秒の参照動画が少なくとも1本とduration=-1が必要です。延長には参照動画が必要です。任意のomni_reference_task_typeを使用すると、自動分類の代わりにeditまたはextendを明示的に選択できます。 - Seedance 2.0の音声参照には、少なくとも1つの画像または動画の参照が必要です。Seedance 2.5は、音声のみの参照入力もサポートします。
- 旧バージョンは、マルチモーダル参照のワークフロー全体には対応していません。Seedance 1.0 Pro Fastは最初のフレームの入力に対応しますが、最初と最後のフレーム間の補間には対応しません。
例
APIを呼び出す前にMIXROUTE_API_KEYを設定してください。メディアのプレースホルダーは、アクセス可能な入力に置き換えてください。受け付けられたリクエストは課金対象の生成タスクを作成します。送信がタイムアウトしても自動的に再送信しないでください。
- テキストから動画を生成
- 最初と最後のフレーム(2.0)
- 最初のフレーム(2.5)
- 参照画像と音声
- 動画の編集(2.5)
curl --location "https://api.mixroute.ai/v1/video/generations" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-0-260128",
"prompt": "A professor is teaching a class in a classroom.",
"asset": false,
"metadata": {
"content": [
{
"type": "text",
"text": "A professor is teaching a class in a classroom."
}
],
"duration": 10,
"ratio": "16:9",
"resolution": "720p",
"generate_audio": false
}
}'
curl --location "https://api.mixroute.ai/v1/video/generations" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-0-260128",
"prompt": "A professor is teaching a class in a classroom.",
"asset": true,
"metadata": {
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://static.freebeatfit.com/aiImageEdit/result/L001510027166320955392/1780060289776-1.png"
},
"role": "first_frame"
},
{
"type": "image_url",
"image_url": {
"url": "https://static.freebeatfit.com/aiImageEdit/result/M1509975287180300288_0004_1780047826.png"
},
"role": "last_frame"
},
{
"type": "text",
"text": "A professor is teaching a class in a classroom."
}
],
"generate_audio": false,
"duration": 10,
"ratio": "16:9"
}
}'
curl --location "https://api.mixroute.ai/v1/video/generations" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "doubao-seedance-2-5-260628",
"prompt": "A professor is teaching a class in a classroom.",
"asset": true,
"metadata": {
"content": [
{
"type": "text",
"text": "A professor is teaching a class in a classroom."
},
{
"type": "image_url",
"image_url": {
"url": "https://static.freebeatfit.com/aiImageEdit/result/L001510027166320955392/1780060289776-1.png"
},
"role": "first_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": false
}
}'
curl --location "https://api.mixroute.ai/v1/video/generations" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "dreamina-seedance-2-0-fast-260128",
"prompt": "A professor is teaching a class in a classroom.",
"asset": true,
"metadata": {
"content": [
{
"type": "text",
"text": "A professor is teaching a class in a classroom."
},
{
"type": "image_url",
"image_url": {
"url": "https://static.freebeatfit.com/aiImageEdit/result/L001510027166320955392/1780060289776-1.png"
},
"role": "reference_image"
},
{
"type": "audio_url",
"audio_url": {
"url": "https://example.com/reference.mp3"
},
"role": "reference_audio"
}
],
"duration": 10,
"ratio": "16:9",
"generate_audio": true
}
}'
curl --location "https://api.mixroute.ai/v1/video/generations" \
--header "Authorization: Bearer $MIXROUTE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "doubao-seedance-2-5-260628",
"prompt": "Change the lighting in Video 1 to sunset and preserve its camera motion.",
"asset": true,
"metadata": {
"content": [
{
"type": "text",
"text": "Change the lighting in Video 1 to sunset and preserve its camera motion."
},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/source.mov"
},
"role": "reference_video"
}
],
"omni_reference_task_type": "edit",
"duration": -1,
"ratio": "adaptive",
"output_format": "mov"
}
}'
Python
import json
import os
import requests
payload = json.loads(r'''
{
"model": "dreamina-seedance-2-0-260128",
"prompt": "A professor is teaching a class in a classroom.",
"asset": false,
"metadata": {
"content": [
{
"type": "text",
"text": "A professor is teaching a class in a classroom."
}
],
"duration": 10,
"ratio": "16:9",
"resolution": "720p",
"generate_audio": false
}
}
''')
response = requests.post(
"https://api.mixroute.ai/v1/video/generations",
headers={"Authorization": "Bearer " + os.environ["MIXROUTE_API_KEY"]},
json=payload,
timeout=60,
)
response.raise_for_status()
print(response.json())