Seedance 2.0 Mini 動画生成API
Seedance 2.0 Mini のパラメータ、参照メディア、非同期タスク、認証済みダウンロード、およびAPIMasterでの時間単位課金について。
Seedance 2.0 Mini 動画生成
テキストから動画、画像から動画、最初/最後のフレーム生成、および動画または音声参照には seedance-2.0-mini を使用します。Miniは 480p と 720p をサポートし、出力時間は 4 秒から 15 秒です。
最初/最後のフレーム生成を行う場合は、明示的に
aspect_ratio: "adaptive"を設定してください。参照音声は画像または動画と一緒に指定する必要があります。APIMaster APIキーはサーバー上に保管してください。
エンドポイントと認証
ベースURL: https://apimaster.ai/v1。送信、クエリ、ダウンロードの際には Authorization: Bearer YOUR_API_KEY を送信してください。
| 操作 | メソッドとパス |
|---|---|
| 動画作成 | POST /v1/videos/generations |
| 互換性のある結果のクエリ | GET /v1/video/generations/{task_id} |
| OpenAIスタイルの結果のクエリ | GET /v1/videos/{task_id} |
| 動画ダウンロード | GET /v1/videos/{task_id}/content |
| 要求された最終フレームのダウンロード | GET /v1/videos/{task_id}/last-frame |
APIMasterから返される公開 task_id を使用してください。動画タスクとメディアレビュータスクは異なるリソースです:動画については上記の動画クエリエンドポイントを使用してください。受け付けられたリクエストは1つの非同期タスクを作成します;HTTP成功は動画が完了したことを意味しません。
パラメータ
| フィールド | タイプ | 必須 / デフォルト | 説明 |
|---|---|---|---|
model |
string | 必須 | seedance-2.0-mini |
prompt |
string | 必須 | APIMasterによってモデル固有のプロンプト長制限は課されていません。被写体、動き、シーン、カメラ、および希望する音声を記述してください;簡潔なプロンプトは制御しやすいです。 |
duration |
integer | 5 |
出力長、4–15 秒。-1 はサポートされていません。 |
resolution |
string | 720p |
480p または 720p;1080p と 4k はサポートされていません。 |
aspect_ratio |
string | 16:9 |
16:9、9:16、1:1、4:3、3:4、21:9、または adaptive。 |
ratio |
string | aspect_ratio と同じ |
APIMasterエイリアス。両方が存在する場合、それらの値は一致しなければなりません。 |
size |
string | aspect_ratio と同じ |
16:9 や adaptive などの比率。2つの寸法を別々に表現するには aspect_ratio と resolution を優先してください。矛盾する指定は 400 を返します。 |
seed |
integer | 省略時 | バリエーションを制御します;一致するシードでも同一の出力が保証されるわけではありません。 |
generate_audio |
boolean | true |
付随する音声を生成します;無音出力には false を使用してください。 |
image_urls |
string[] | 省略時 | 最大 9 枚の参照画像。公開画像URLまたは承認済みAPIMaster asset:// ID。 |
image_with_roles |
object[] | 省略時 | url と role を持つ画像オブジェクト;image_urls と同時に指定できません。以下の役割ルールを参照してください。 |
video_urls |
string[] | 省略時 | 最大 3 個の参照動画、課金対象の入力時間の合計は最大 15 秒。素材要件を参照してください。 |
audio_urls |
string[] | 省略時 | 最大 3 個の参照音声ファイル、合計時間は最大 15 秒。画像または動画参照が必要です。 |
return_last_frame |
boolean | false |
成功完了時に、結果に最終フレームが含まれる場合、認証済みAPIMaster最終フレームダウンロードURLを返します。 |
nsfw_check |
boolean | false |
生成前にテキスト/画像コンテンツのモデレーションをリクエストします。動画と音声はこのモデレーションパスには含まれません。 |
tools |
object[] | 省略時 | 検索ツール宣言:[{"type":"web_search"}]。 |
ドラフト生成とドラフトアップグレードはSeedance 2.5専用です。このモデルに draft: true または draft_task_id を渡さないでください。
参考資料
公開アクセス可能なHTTPS URL、またはAPIMasterメディアライブラリから承認済みのIDを提供してください。ログインページの背後にあるファイルや、独自の認証ヘッダーを必要とするファイルは取得できません。画像のアップロードが成功しても、すべてのモデル要件に対するコンテンツの承認または準拠を意味するものではありません。
| 資料 | 要件 |
|---|---|
| リファレンス画像 | 最大 9;読み取り可能なRGB JPEG/PNG画像を使用してください。APIMasterの画像アップロードエンドポイントには独自の 20 MiB 制限があり、JPEG、PNG、GIF、WebPを受け付けます。 |
| リファレンス動画 | 最大 3;MP4/MOV、H.264/H.265ビデオ;音声がある場合はAAC/MP3。480p–720p のリファレンス動画を使用してください。リファレンスの合計時間は 15 請求秒数以内に収める必要があります。APIMasterは課金前にアクセス可能なMP4/MOVの時間を検証します。このチェックと課金のため、入力クリップの時間は秒単位で切り上げられます。 |
| リファレンス音声 | 最大 3;WAVまたはMP3、ファイルあたり最大 20 MB、合計時間は最大 15 秒。必ず画像または動画のリファレンスと一緒に使用してください。 |
詳細が十分にある明確な画像を使用し、破損または不完全なファイルを避け、参考動画の動きはプロンプトと一致させてください。提出が受理された場合でも、メディアは非同期のフォーマットまたはコンテンツレビューで不合格になる可能性があります。
画像の役割
role |
意味 |
|---|---|
first_frame |
開始フレーム;最大1枚 |
last_frame |
終了フレーム;最大1枚、かつ開始フレームが必要 |
reference_image |
参考画像、承認済みキャラクターアセットを含む |
開始/終了フレームタスクの場合、aspect_ratioをadaptiveに設定し、video_urlsとaudio_urlsは省略してください。明示的な役割にはimage_with_rolesを使用します;image_urlsも同時に渡さないでください。
{
"model": "seedance-2.0-mini",
"prompt": "A paper boat drifts gently from the starting composition to the ending composition",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_with_roles": [
{"url": "https://your-storage.example/start.png", "role": "first_frame"},
{"url": "https://your-storage.example/end.png", "role": "last_frame"}
],
"generate_audio": false
}
アップロードとメディアライブラリ
ローカルの画像をPOST /v1/uploads/imagesでアップロードするには、マルチパートフィールドfileとBearer認証を使用します。返されたトップレベルのurlは、公開画像入力として使用できます。
curl "https://apimaster.ai/v1/uploads/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@reference.png"
再利用可能な素材やキャラクター素材の場合、POST /v1/seedance2/private-avatar/groupsでグループを作成し、POST /v1/seedance2/private-avatar/assetsで素材を提出し、GET /v1/tasks/{asset_task_id}でレビューを照会し、Active状態のアセットのみをasset://{asset_id}として使用してください。これらのリソースはあなたのアカウントに属します。model: "seedance-2.0-mini"を明示的に指定してください。他のプラットフォームやアカウントからのアセットIDはここでは使用できません。
作成、提出、レビュー、部分的な失敗、削除については、メディアライブラリのワークフローを参照してください。アップロードとアセット管理のエンドポイントは共有されています。このページの生成制限はMiniに適用されます。レビューが不合格の場合、詳細な理由が返されないことがあります。サポートされているフォーマットで明確で準拠した素材を使用し、新しいレビューを提出してください。既存のレビューがまだ処理中の間は、タスクを繰り返し再作成しないでください。
動画の提出
curl "https://apimaster.ai/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"seedance-2.0-mini",
"prompt":"A small paper boat on calm water at sunrise, gentle tracking shot",
"duration":5,
"resolution":"720p",
"aspect_ratio":"16:9",
"generate_audio":true,
"return_last_frame":true
}'
作成レスポンス:
{"code":200,"data":[{"status":"submitted","task_id":"task_PUBLIC_VIDEO_ID"}]}
提出タイムアウトは曖昧です:リクエストが受理された可能性があります。再提出する前にタスク履歴を確認してください。別の成功した提出は、別個の課金対象タスクを作成します。
動画および音声の参考資料
{
"model": "seedance-2.0-mini",
"prompt": "Follow the reference motion and keep the scene consistent with the image",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "adaptive",
"image_urls": ["https://your-storage.example/reference.png"],
"video_urls": ["https://your-storage.example/reference.mp4"],
"audio_urls": ["https://your-storage.example/reference.mp3"],
"generate_audio": true
}
照会とダウンロード
3–5秒ごとにポーリングしてください。成功または失敗したら停止します。
curl "https://apimaster.ai/v1/video/generations/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
互換クエリ成功:
{
"code":"success",
"message":"",
"data":{
"error":null,
"format":"mp4",
"metadata":null,
"status":"succeeded",
"task_id":"task_PUBLIC_VIDEO_ID",
"url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content",
"actual_time":138,
"last_frame_url":"https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame"
}
}
この例にはオプションの完了フィールドが含まれています。actual_timeは、送信から完了までの経過時間(秒)であり、課金対象の動画時間ではありません。last_frame_urlは、最終フレームがリクエストされていない場合、または利用できない場合は省略されます。失敗したタスクには、成功時のみの経過時間や最終フレームのフィールドは含まれません。
OpenAIスタイルのクエリ:
curl "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
| 意味 | 互換 data.status |
OpenAIスタイル status |
|---|---|---|
| 待機中 | queued |
queued |
| 生成中 | processing |
in_progress |
| 成功 | succeeded |
completed |
| 失敗 | failed |
failed |
OpenAIスタイルのオブジェクトでは、公開タスクIDにidを、動画ダウンロードURLにurlを使用します。オプションのactual_timeとlast_frame_urlはトップレベルに表示されます。失敗時は、対応する結果オブジェクト内のerror.messageを参照してください。レスポンスには金銭関連のフィールドは含まれません。
同じアカウントのAPIキーでダウンロードしてください。認証なしで結果URLを開くだけでは不十分です。出力は速やかに保存してください。
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/content" \
-H "Authorization: Bearer YOUR_API_KEY" -o output.mp4
curl -L "https://apimaster.ai/v1/videos/task_PUBLIC_VIDEO_ID/last-frame" \
-H "Authorization: Bearer YOUR_API_KEY" -o last-frame.jpg
Python 完全ワークフロー
import os
import time
import requests
base = "https://apimaster.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['APIMASTER_API_KEY']}"}
response = requests.post(base + "/videos/generations", headers=headers, json={
"model": "seedance-2.0-mini",
"prompt": "A small paper boat on calm water at sunrise",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": True,
"return_last_frame": True,
}, timeout=90)
response.raise_for_status()
task_id = response.json()["data"][0]["task_id"]
for _ in range(240):
response = requests.get(base + "/video/generations/" + task_id,
headers=headers, timeout=30)
response.raise_for_status()
task = response.json()["data"]
if task["status"] == "failed":
raise RuntimeError((task.get("error") or {}).get("message", "Video failed"))
if task["status"] == "succeeded":
print("Elapsed seconds:", task.get("actual_time"))
for field, filename in [("url", "output.mp4"), ("last_frame_url", "last-frame.jpg")]:
if task.get(field):
with requests.get(task[field], headers=headers, stream=True, timeout=120) as result:
result.raise_for_status()
with open(filename, "wb") as out:
for chunk in result.iter_content(1024 * 1024):
out.write(chunk)
break
time.sleep(5)
else:
raise TimeoutError("Task still processing; query the same task_id later")
時間課金
4つの階層があります: 480P、720P、480P-input、720P-input。「アップロードされた動画」とラベル付けされた階層は、リクエストに参照動画入力が含まれていることを意味します。画像/音声参照も存在する場合でも、要求された出力解像度に対応する入力階層を選択してください。
- 参照動画なし: 生成動画秒数 × 対応する解像度の単価。
- 参照動画あり: (参照動画の合計秒数 + 生成動画秒数) × 対応する入力階層の単価。
- 設定された基本単価に、適用可能なチャネルおよびアカウント/グループ係数を乗じて最終単価を取得します。適用される価格については、モデルカードとウォレットの消費記録を確認してください。
例えば、4秒の参照動画と5秒の出力では、入力階層で9秒の課金対象秒数を使用します。入力階層の単価は通常の階層と異なる場合があります。出力時間のみを計算したり、通常の階層を動画参照に適用したりしないでください。画像と音声は参照動画秒数を追加しません。生成された音声は、これら4つの設定価格に対して別個の音声/無音階層を導入しません。
送信時には、要求された出力時間に加え、存在する場合は検証済みの入力動画時間が確保されます。出力時間が省略された場合、5秒の出力秒数が確保されます。タスクは送信時の料金体系を保持します。完了時に実際の時間に基づいて精算されます。生成に失敗した場合、動画タスクの料金は返金されます。
エラーとトラブルシューティング
無効なリクエストはHTTPエラーを返します。ステータスコードと同様にJSONエラーメッセージを読んでください。パラメータ検証にはAPIMasterのエラーラッパーが使用されます。例:
{"code":"invalid_request","message":"First/last-frame tasks require adaptive aspect_ratio","data":null}
| 問題 | 対応策 |
|---|---|
| サポートされていない解像度 / 時間 | 480p または 720p、および4から15までの整数の時間を選択してください。 |
| 矛盾するアスペクト比またはサイズ | aspect_ratio、ratio、size、resolutionを一貫して使用してください。できれば明示的なアスペクト比/解像度のペアのみを保持してください。 |
| 最初/最後のフレーム制約 | adaptiveを使用し、各役割は最大1つまでとし、動画/音声参照は省略してください。 |
| 参照動画を検査できない | アクセス可能な完全なMP4/MOVを有効な時間で提供してください。 |
| 画像/動画なしの参照音声 | 画像/動画参照を追加するか、音声参照を削除してください。 |
| コンテンツモデレーション拒否 | テキストまたは画像を修正し、新しいリクエストを送信してください。モデレーションサービスの失敗により生成が継続される場合がありますが、これは絶対的な安全性の保証ではありません。 |
FormatUnsupported / 非同期形式/コンテンツ拒否 |
失敗したタスクのerror.messageを読み、形式と素材要件を確認し、ソースを置き換えてください。 |
401 |
有効なBearer APIキーを提供してください。 |
| 残高不足 | チャージするか、十分なクォータを持つキーを使用してください。 |
429 / 一時的なサービスエラー |
待機し、バックオフを伴って再試行してください。曖昧なタイムアウト後の重複送信は避けてください。 |
同期型の無効パラメータリクエストは動画タスクを作成せず、生成課金も発生しません。受理されたタスクでも非同期で失敗する可能性があります。結果を使用する前に最終的なタスクステータスを確認してください。
