Seedance 2.0 Mini による動画生成(非同期)。入門等級で、当サイトでもっとも秒単価が安いモデルです。長さは 5〜15 秒の任意の整数、解像度は 480P / 720P、画面比率は 5 種類、audio で音声の有無を切り替えます(既定は true)。image を渡すと画像から動画になります。ジョブ ID が返るので(HTTP 202)、GET /v1/videos/jobs/{id} をポーリングしてください。秒単位の課金で(参照動画の秒数も含みます)、失敗時は全額返金します。
Playground で試す →認証
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
コンソールで API Key を作成すると利用を開始できます。
リクエストボディ
| パラメータ | 種別 | 必須 | 説明 |
|---|---|---|---|
| model | string | はい | モデル ID。ここでは seedance-2.0-mini です。 |
| prompt | string | はい | 動画の内容、カメラ、動きを説明するテキストプロンプト。最大 5000 バイト(UTF-8。漢字 1 文字は 3 バイト)。参照画像を複数渡すときは、プロンプトの中で @Image1 / @Image2 のように指名できます。例:「@Image1 の人物が @Image2 の場面にいる」。指名しない場合はモデルが自分で判断します。 |
| duration | integer | いいえ | 長さ(秒)。5〜15 の任意の整数で、既定は 5 です。seconds とも書けます。秒単位で課金します。 |
| resolution | string | いいえ | 解像度: 480P / 720P(既定は 720P)。等級ごとに単価が異なるので、モデルページの料金表をご覧ください。 |
| size | string | いいえ | 画面比率: 16:9 / 9:16 / 1:1 / 4:3 / 3:4(既定は 16:9)。aspect_ratio とも書けます。 |
| audio | boolean | いいえ | 出力される動画には常に音声が付きます(セリフ・効果音・音楽はプロンプトから生成)。オフにはできず、false を指定しても効果はありません。 |
| image | string | いいえ | 参照画像 1 枚(公開 URL、data: URI、base64)。人物・物・場面・スタイルの参照としてモデルに渡します。複数なら images を使ってください。このモデルには最初のフレームの指定がないため、画像がクリップの最初に来るとは限りません。参照素材を何も渡さなければテキストから動画です。 |
| images | array | いいえ | 複数枚の参照画像。このモデルは最大 9 枚です。各要素は公開 URL、data: URI、base64 のいずれでも構いません。上限を超えた場合は切り詰めずに拒否します。reference_images とも書けます。 1 枚あたり最大 16MB、jpg / png / webp / gif。プロンプトでは順に @Image1、@Image2 … と指名します。 |
| image_role | string | いいえ | 省略可。参照画像は常に参照として使われ(人物・場面・スタイル)、プロンプトでは @Image1… と指名します。このモデルには最初・最後のフレームの指定はありません。 |
| audio_reference | string / array | いいえ | 参照オーディオの公開 http(s) リンク。最大 3 件で、参照画像または参照動画と一緒に使う必要があります。audio_references とも書けます(両方を同時に送らないでください)。 base64(data:audio/mpeg;base64,...)も使えます。mp3 / wav / m4a。プロンプトでは @Audio1 と指名します。 |
| video_references | array | いいえ | 参照動画。最大 3 件。各要素は公開 http(s) リンクのほか、ローカルの動画を base64 で直接渡すこともできます(data:video/mp4;base64,...、mp4 / mov、1 件あたり最大 50MB)。こちらでホスティングしてから上流に渡します。同じリクエストで参照画像と併用できます(例:写真で人物の外見、動画で動きとカメラワーク)。プロンプトでは @Image1 / @Video1 のように指名してください。 各動画は最長 30 秒、合計 15 秒まで。こちらでホスティングした参照素材は 7 日間保存されます。 |
リクエスト例
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://kovapi.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "seedance-2.0-mini", "prompt": "a cat surfing a wave at sunset", "duration": 5, "resolution": "720P", "size": "16:9"}'
# with references: add "images": ["https://example.com/a.png"], "video_references": ["https://example.com/move.mp4"], "audio_reference": ["https://example.com/bgm.mp3"] and name them @Image1 / @Video1 / @Audio1 in the prompt
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://kovapi.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'レスポンス
{
"id": "img_3f9a...c2",
"object": "video.generation.job",
"status": "queued",
"model": "seedance-2.0-mini"
}非同期の動画ジョブ(送信 → ポーリング)
送信すると即座に HTTP 202 とジョブ ID が返ります。status=succeeded になるまでポーリングし、data[0].url(mp4 のリンク)を読んでください。指定できる長さ・解像度・画面比率は上のパラメータ表にあります。image パラメータを付けると画像から動画になります。
curl https://kovapi.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model": "seedance-2.0-mini", "prompt": "夕暮れにサーフィンをする猫", "size": "16:9"}'{ "id": "img_3f9a...c2", "object": "video.generation.job", "status": "queued", "model": "seedance-2.0-mini" }curl https://kovapi.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
{
"id": "img_3f9a...c2",
"object": "video.generation.job",
"status": "succeeded",
"model": "seedance-2.0-mini",
"data": [{ "url": "https://img.kovapi.com/i/9f86d081a8....mp4" }]
}🕑 data[0].url は当方の画像ホストのリンクで、15 日間保存された後に自動的に削除されます。継続して使う場合は、ダウンロードしてご自身のストレージや CDN に保存してください。
秒単位で課金($0.046/秒 x 長さ)。確保額と請求額は完全に一致し、生成が失敗またはタイムアウトした場合は自動的に全額返金します。
ポーリングしたくない場合は、送信時に callback_url を付けると、タスク終了時に結果をサーバーへ送信します。コンソールで既定の送信先を設定することもできます。 Webhook ドキュメント →
コンテンツ要件
Seedance のタスクはすべてコンテンツ審査を通ります。対象はプロンプト、参照素材、生成された動画で、映像も音声も審査されます。審査で不合格になったタスクは content_policy で失敗し、課金されません。
審査のタイミング
送信時にプロンプトと参照素材が審査され、動画の生成後に映像と音声がもう一度審査されます。そのため不合格の結果は、送信から数秒で返ることもあれば、レンダリングの終了後に返ることもあります(30分以上かかることもあります)。status が failed、error.code が content_policy で終わったタスクは審査で不合格です。Webhook では video.failed イベントが届きます。
課金なし
不合格のタスクは課金されません。送信時に仮押さえした金額はタスク終了時に全額返金され、呼び出しログでも課金なしと表示されます。
音声
音声(セリフ、ナレーション、歌、効果音)はプロンプトに沿ってモデルが生成し、映像と一緒に審査されます。プロンプトに書いたセリフ、ナレーション、歌詞は読み上げられたり歌われたりします。人の声が要らない動画なら、プロンプトにセリフや歌詞を書かないでください。このモデルは毎回音声付きで出力され、オフにできません(audio: false を指定しても効果はありません)。アップロードした参照音声も審査され、著作権のある音楽を参照音声に使うと弾かれることがあります。音声が不合格の場合、error.param は audio になり、message に生成された音声か参照音声かが書かれます。
よく弾かれる内容
- 性的な内容、裸、性的なほのめかし(AI で生成・合成した画像を含む)
- 流血、残虐な描写、自傷、銃撃や出血などの暴力による負傷
- 銃器、爆発物、薬物
- 未成年者を性的に扱う内容は一切不可。未成年者と酒・たばこ・薬物・危険な行為の組み合わせも弾かれます
- 政治家、芸能人、スポーツ選手、経済人など公人の容姿や声(よく似た人物を含む)
- 著作権で保護されたキャラクターや IP(ディズニーやマーベルのキャラクターなど)
- 憎悪や差別的な内容、フェイクニュース
長い絵コンテ台本
違反するカットが1つでもあれば動画全体が弾かれます。長い絵コンテ台本で特に起きやすく、アクションシーンの銃撃戦や出血のアップ、未成年者が飲酒や喫煙をする場面があると全体が失敗します。送信前に台本を通して読み、こうしたカットを削除するか書き直してください。
実在の人物
実在の人物の写真を参照に使うには、その人物の肖像を使う権利が必要です。各モデルが実在の人物の参照画像に対応しているかは、このページの上部に記載しています。
弾かれたあと
同じ内容で再送信しても再び弾かれます。問題になりそうな部分を見つけ、プロンプトを書き直すか参照素材を差し替えてから送信し直してください。
エラーコード: content_policy · status: failed
エラーコード
エラーはすべて error.message / error.type / error.code / error.param という構造です。code で判定してください。よくあるエラーは下の表のとおりで、完全な一覧は エラーコード にあります。
| HTTP | code | 説明 |
|---|---|---|
| 401 | invalid_api_key | キーがない、または無効・停止中(missing_api_key、invalid_api_key)。 |
| 402 | insufficient_quota | 残高不足、またはキーが予算の上限に達しました(insufficient_quota)。 |
| 400 | invalid_request | パラメータの誤り、または存在しないモデル(model_not_found など)。error.param が該当フィールドを示します。 |
| — | content_policy | コンテンツ審査で不合格:プロンプト、参照素材、または生成された映像・音声が違反と判定されました。課金されません。同じ内容では再び弾かれるため、プロンプトを書き直すか素材を差し替えてください。動画タスクでは status が failed のときの error で返されます。 |
| 429 | rate_limit_exceeded | このキーに設定した 1 分あたりの上限か無料モデルの 1 日の枠を超えたか、このモデルが混み合っています(rate_limit_exceeded)。Retry-After があればその秒数、なければ数秒待ってから再試行してください。 |
| 502 | upstream_* | 上流のエラーまたはタイムアウトで、自動の再試行でも失敗しました。理由は code(upstream_timeout、upstream_unavailable など)に入ります。課金されないので、そのまま再試行できます。 |