アセットライブラリ(バーチャルヒューマン)

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 秒)です。エンドポイントは少しの間インラインで待機します:

  • 前処理完了 → 200status: "active"(すぐに生成に使えます)。
  • まだ処理中 → 202status: "processing"(後で照会でポーリングして active を待つ)。
  • 審査失敗 → 200status: "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 / failedactive のみ生成に使えます

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. 動画でアセットを使う

activeasset://<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)ラインを開通していないか、ストレージが一時的に利用不可。