アセットライブラリ(バーチャルヒューマン)
POST /v1/assets · GET /v1/assets · GET /v1/assets/{id} · DELETE /v1/assets/{id}
海外ライン(-hw シリーズ)の Seedance 動画はバーチャルヒューマン・アセットライブラリに対応しています:人物画像を 1 枚アセットとしてアップロードして asset://<アセット ID> を取得し、その後動画生成リクエストで人物/キャラクター参照として使うことで、生成される動画の人物の顔や服装などの特徴を一貫させます。
組織私有 + 分離:アップロードしたアセットはあなたの組織のみに属し、参照できるのはあなただけです。他の組織はあなたの
asset://ID を入手しても使えず、一覧照会でも自組織のアセットしか見えません。バーチャルヒューマンのみ:アセットライブラリは合成/バーチャルヒューマンのみ受け付けます。素材は実在の自然人に似ていてはいけません(上流が審査し、実在人物に似ているものは拒否されます)。
1. アセットのアップロード: POST /v1/assets
アップロード方法は 2 つ、いずれかを選択:
1.1 方法 A:画像ファイルを直接アップロード(multipart/form-data、推奨)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
file |
file | はい | 画像ファイル。形式 jpeg / png / webp / bmp / tiff / gif / heic;アスペクト比 (0.4, 2.5);幅・高さ 300–6000px;< 30 MB。 |
name |
string | いいえ | アセット名。自己管理用(生成には使われません)。 |
curl https://api.portal.aiin1.ai/v1/assets \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@portrait.jpg" \
-F "name=主役-メイ"1.2 方法 B:公開画像 URL を指定(application/json)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
source_url |
string | はい | 公開アクセス可能な http(s) 画像 URL(上流が取得できる必要があります)。 |
name |
string | いいえ | アセット名。 |
curl https://api.portal.aiin1.ai/v1/assets \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "source_url": "https://example.com/portrait.jpg", "name": "主役-メイ" }'1.3 レスポンス
アップロードは非同期の前処理(上流の審査 + 取り込み、通常約 10 秒)です。エンドポイントは少しの間インラインで待機します:
- 前処理完了 →
200、status: "active"(すぐに生成に使えます)。 - まだ処理中 →
202、status: "processing"(後で照会でポーリングしてactiveを待つ)。 - 審査失敗 →
200、status: "failed"、fail_reason付き。
{
"id": "asset-20260722081357-abcde",
"asset": "asset://asset-20260722081357-abcde",
"status": "active",
"name": "主役-メイ",
"asset_type": "Image"
}| フィールド | 説明 |
|---|---|
id |
アセット ID。 |
asset |
動画リクエストの image_url / reference_image_urls にそのまま貼り付けられる参照文字列。 |
status |
processing / active / failed。active のみ生成に使えます。 |
status=activeのアセットのみ動画リクエストで参照できます。processing/failedのものは動画エンドポイントが 400 で拒否します。
2. アセットの照会: GET /v1/assets/{id}
ID で単一のアセットを照会します。まだ processing の場合は最新の状態を自動で 1 回更新します。
curl https://api.portal.aiin1.ai/v1/assets/asset-20260722081357-abcde \
-H "Authorization: Bearer YOUR_API_KEY"{ "id": "asset-20260722081357-abcde", "asset": "asset://asset-20260722081357-abcde", "status": "active", "name": "主役-メイ", "asset_type": "Image", "created_at": "2026-07-22T08:13:57+00:00" }自組織でないアセットは 404 を返します。
3. アセットの一覧: GET /v1/assets
自組織の全アセット(削除済みを除く)を作成日時の降順で一覧します。
curl https://api.portal.aiin1.ai/v1/assets \
-H "Authorization: Bearer YOUR_API_KEY"{
"object": "list",
"data": [
{ "id": "asset-20260722081357-abcde", "asset": "asset://asset-20260722081357-abcde", "status": "active", "name": "主役-メイ", "asset_type": "Image", "created_at": "2026-07-22T08:13:57+00:00" }
]
}4. アセットの削除: DELETE /v1/assets/{id}
curl -X DELETE https://api.portal.aiin1.ai/v1/assets/asset-20260722081357-abcde \
-H "Authorization: Bearer YOUR_API_KEY"{ "id": "asset-20260722081357-abcde", "deleted": true }自組織でないアセットは 404 を返します。
5. 動画でアセットを使う
active の asset://<id> を取得したら、動画生成リクエストの image_url(単一)または reference_image_urls(複数)に入れます。model は -hw の海外ライン名である必要があります。そして prompt 内では @Image1 / @Image2 の番号で指定します(asset ID は書かない):
curl https://api.portal.aiin1.ai/v1/videos \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-hw",
"prompt": "@Image1 の人物がカフェでカメラに向かって微笑んで手を振る、自然光",
"seconds": "5",
"size": "1280x720",
"reference_image_urls": ["asset://asset-20260722081357-abcde"]
}'6. よくあるエラー
| HTTP | 状況 | 説明 |
|---|---|---|
| 400 | file / source_url がない |
どちらか一方を必ず指定。 |
| 400 | 画像タイプが非対応 | jpeg / png / webp / bmp / tiff / gif / heic のみ。 |
| 400 | 動画で自組織でないアセットを参照した | asset:// は自組織がアップロード済みで active のアセットである必要があります。さもないと動画エンドポイントが 400。 |
| 401 | API キーが無効 | Authorization ヘッダーを確認。 |
| 404 | アセットが存在しない / 自組織でない | 照会/削除の ID が誤りか、自組織に属さない。 |
| 413 | 画像が大きすぎる | 1 枚 < 30 MB。 |
| 503 | アセットライブラリが利用不可 | 自組織が海外(-hw)ラインを開通していないか、ストレージが一時的に利用不可。 |