REST API リファレンス
バーチャル人物素材 API
非公開 AIGC 素材を作成します。ステータスが Active になった後、返却された asset:// URI を動画生成で利用できます。
エンドポイント
Base URL
https://yingtu.aiPOST /api/seedance-assets/virtual-humansGET /api/seedance-assets/virtual-humans/{id}認証
YingTu または Google へのログインは不要です。LaoZhang API Key を Authorization: Bearer <LAOZHANG_API_KEY> で送信します。
| ヘッダー | 必須 | 説明 |
|---|---|---|
Authorization | 可 | Bearer 認証で送信する LaoZhang API Key。 |
Content-Type | POST のみ | 作成操作は application/json を使用します。 |
リクエスト
| フィールド | 必須 | 説明 |
|---|---|---|
name | 不可 | 任意。素材名、最大64文字。 |
image_url | 可 | 必須の公開 HTTPS 画像 URL。公式 CreateAsset は URL のみ受け付けます。 |
作成リクエスト
cURL
curl --request POST \
--url https://yingtu.ai/api/seedance-assets/virtual-humans \
--header "Authorization: Bearer $LAOZHANG_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"image_url": "https://cdn.example.com/avatar.webp",
"name": "brand-avatar"
}'HTTP request
POST /api/seedance-assets/virtual-humans
Content-Type: application/json
Authorization: Bearer $LAOZHANG_API_KEY
{
"image_url": "https://cdn.example.com/avatar.webp",
"name": "brand-avatar"
}レスポンス例
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"request_id": "req_01JZEXAMPLE",
"id": "ast_eyJvcGFxdWUiOiJleGFtcGxlIn0",
"object": "seedance.asset",
"kind": "virtual_human",
"name": "brand-avatar",
"status": "Processing",
"uri": "asset://asset-20260729-example"
}コード例
JavaScript · Node.js
const response = await fetch("https://yingtu.ai/api/seedance-assets/virtual-humans", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.LAOZHANG_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
image_url: "https://cdn.example.com/avatar.webp",
name: "brand-avatar",
}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());Python · requests
import os
import requests
response = requests.post(
"https://yingtu.ai/api/seedance-assets/virtual-humans",
headers={"Authorization": f"Bearer {os.environ['LAOZHANG_API_KEY']}"},
json={
"image_url": "https://cdn.example.com/avatar.webp",
"name": "brand-avatar",
},
timeout=60,
)
response.raise_for_status()
print(response.json())素材ステータス照会
curl --request GET \
--url https://yingtu.ai/api/seedance-assets/virtual-humans/ast_eyJvcGFxdWUiOiJleGFtcGxlIn0 \
--header "Authorization: Bearer $LAOZHANG_API_KEY"ステータスレスポンス
HTTP/1.1 200 OK
Content-Type: application/json
{
"request_id": "req_01JZEXAMPLE",
"id": "ast_eyJvcGFxdWUiOiJleGFtcGxlIn0",
"object": "seedance.asset",
"kind": "virtual_human",
"status": "Active",
"uri": "asset://asset-20260729-example",
"created_at": "2026-07-29T05:00:00Z",
"updated_at": "2026-07-29T05:01:00Z"
}Failed · HTTP 200
{
"request_id": "req_01JZEXAMPLE",
"id": "ast_eyJvcGFxdWUiOiJleGFtcGxlIn0",
"object": "seedance.asset",
"kind": "virtual_human",
"status": "Failed",
"uri": "asset://asset-20260729-example",
"failure": {
"code": "InvalidImage",
"message": "The image did not pass upstream validation."
}
}エラー
| HTTP ステータス | エラーコード | 説明 | 再試行 |
|---|---|---|---|
| 400 | invalid_request | リクエスト本文、フィールド、または値が無効です。 | 不可 |
| 401 | invalid_api_key | API Key がない、無効、または停止されています。 | 不可 |
| 403 | resource_not_owned | 認証または素材がこの API Key に属していないか、公開 ID が無効です。 | 不可 |
| 403 | capability_unavailable | サービスアカウントで非公開人物素材の権限が有効ではありません。 | 不可 |
| 413 | payload_too_large | JSON リクエスト本文が 16 KB を超えています。 | 不可 |
| 415 | unsupported_media_type | POST リクエストが application/json ではありません。 | 不可 |
| 429 | rate_limit_exceeded | API Key の呼び出し上限に達しました。 | 可 |
| 500 | internal_error | サービスがリクエストを完了できませんでした。 | 不可 |
| 502 | upstream_error | 上流の素材または認証サービスでエラーが発生しました。 | 可 |
| 503 | authentication_unavailable | API Key 検証サービスが一時的に利用できません。 | 可 |
| 503 | service_unavailable | 素材 API のサーバー設定が一時的に利用できません。 | 可 |
Error object
{
"error": {
"code": "invalid_request",
"message": "image_url is required.",
"request_id": "req_01JZEXAMPLE",
"retryable": false
}
}レート制限と追跡
API Key ごとに作成系 POST は1時間あたり最大12回です。GET の状態照会はカウントされません。上流権限による追加制限があります。制限時は 429 と Retry-After(秒)を返します。
成功・エラー応答には request_id が含まれます。問い合わせ時はこの値を提示し、完全な API Key は送信しないでください。
X-RateLimit-Limit: <limit>
X-RateLimit-Remaining: <remaining>
X-RateLimit-Reset: <unix-seconds>
Retry-After: <seconds>