Virtual Staging ART Developer API
Virtual Staging ART API を使うと、画像のアップロード、ステージングや片付けのリクエスト、ステータス確認、Webhook による完了通知を行えます。
Base URL
このページの例では、互換性維持のための /api/... パスを使っています。
https://www.virtualstaging.art/api/...
必要に応じて、同等の /v1/... パスも利用できます。
認証
すべての Developer API リクエストでは Bearer トークンを使用します。
Authorization: Bearer YOUR_API_TOKEN
API トークンは Virtual Staging ART のアカウント設定から発行できます。
基本的な流れ
多くの連携では、次の手順になります。
/api/image/uploadで画像をアップロードするか、公開されたimage_urlをそのまま使います。/api/image/render/requestまたは/api/image/render/declutterにリクエストします。- 返ってきた
upload_idで/api/image/check-statusをポーリングするか、callback_urlを指定して Webhook を待ちます。 - 完成した
render_urlsを自分のアプリで利用します。
1. 画像をアップロードする
Endpoint
POST /api/image/upload
Response
{
"url": "https://..."
}
返ってきた url を、後続のレンダーリクエストの image_url として使います。
Option A: Multipart upload
multipart/form-data で通常のファイルアップロードを行います。
フォームフィールド:
file
例:
curl -X POST "https://www.virtualstaging.art/api/image/upload" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-F "[email protected]"
Option B: Base64 JSON upload
JSON で raw base64 または data URL を送れます。
raw base64 の例:
{
"image_base64": "BASE64_HERE",
"content_type": "image/jpeg"
}
data URL の例:
{
"data_url": "data:image/png;base64,iVBORw0KGgoAAA..."
}
Upload limits
- 最大アップロードサイズ:
10 MB - 対応形式:
- JPEG
- PNG
- WebP
- HEIC / HEIF
2. アップロードせずに自分の image_url を使う
すでに自社で画像をホストしている場合は、/api/image/upload を使わず、そのまま image_url をレンダーリクエストに渡せます。
image_url は次の条件を満たす必要があります。
- 画像ファイルそのものを指す URL であること
- 公開アクセス可能であること
https://であること- 通常の
200レスポンスで画像ファイルを返すこと
失敗しやすい例:
- 有効期限付きの一時 URL
- ログインや Cookie が必要な URL
- 画像ではなく HTML を返す共有ページ
- localhost やプライベートネットワークの URL
3. ステージングをリクエストする
Endpoint
POST /api/image/render/request
Request body
{
"image_url": "https://example.com/source.jpg",
"room_type": "living",
"style": "modern",
"number_of_renders": 1,
"upload_id": "optional-grouping-id",
"layout_type": "studio",
"ai_notes": "Keep the room bright and add a premium contemporary feel.",
"callback_url": "https://example.com/callback",
"tier": "premium"
}
Required fields
image_urlroom_typestyle
tier options
classic- 未指定時のデフォルト
- 1つの upload group あたり最大
20レンダー
premium- この互換エンドポイントでは 1 クレジットあたり最大
8レンダー
- この互換エンドポイントでは 1 クレジットあたり最大
Supported room_type
livingbedkitchenofficediningstudioldk* premium onlybathroom* premium onlyentrance* premium only
Legacy note: home_office も office のエイリアスとして受け付けます。
Supported style
modernscandinavianindustrialcoastalluxurymid-century modernfarmhousestandardminimalist* premium onlyjapandi* premium onlybohemian* premium onlytraditional* premium only
Optional fields
number_of_renders- デフォルト:
1 - 1リクエストあたり最大:
10
- デフォルト:
upload_id- 同じ画像に対する複数リクエストを同じ upload group にまとめます
layout_type- 互換性のため
studioをサポートします
- 互換性のため
callback_url- 完了通知を送る Webhook URL
ai_notes* premium only- モデル向けの追加テキスト指示
- 最大長:
500文字
tierclassicまたはpremium- 既存 API ユーザーは未指定時に
classicになります
Response
{
"upload_id": "uuid-or-existing-group-id",
"status": "rendering",
"tier": "classic"
}
4. 片付けをリクエストする
Endpoint
POST /api/image/render/declutter
tier options
classic- 未指定時のデフォルト
- 1つの upload group あたり最大
20レンダー
premium- この互換エンドポイントでは 1 クレジットあたり最大
8レンダー
- この互換エンドポイントでは 1 クレジットあたり最大
Request body
{
"image_url": "https://example.com/source.jpg",
"number_of_renders": 1,
"upload_id": "optional-grouping-id",
"ai_notes": "Remove clutter while preserving the natural lighting.",
"callback_url": "https://example.com/callback",
"tier": "premium"
}
ai_notes は tier が premium の場合のみ利用できます。
Response
{
"upload_id": "uuid-or-existing-group-id",
"status": "rendering",
"tier": "classic"
}
5. レンダーステータスを確認する
Endpoint
POST /api/image/check-status
推奨リクエスト
{
"upload_id": "uuid-or-existing-group-id"
}
互換リクエスト
{
"image_url": "https://example.com/source.jpg"
}
Response
{
"status": "rendering"
}
取りうる値:
renderingdoneerror
推奨される照会方法は upload_id です。
6. upload に対して何件レンダーしたか確認する
Endpoint
POST /api/image/check-rendering-amount
Request body
{
"uploadId": "uuid-or-existing-group-id"
}
次の形式も使えます。
{
"sourceImage": "https://example.com/source.jpg"
}
互換エイリアスも受け付けます。
{
"upload_id": "uuid-or-existing-group-id",
"image_url": "https://example.com/source.jpg"
}
Response
{
"renderCount": 3,
"limitExceeded": false,
"maxRenders": 20
}
7. Webhook callbacks
レンダーリクエストに callback_url を指定すると、完了時に Virtual Staging ART から POST されます。
Success payload
{
"status": "done",
"render_urls": [
"https://assets.example.com/render-1.jpg",
"https://assets.example.com/render-2.jpg"
]
}
Error payload
{
"status": "error",
"error": "Internal server error. Please try again later."
}
既存 Virtual Staging 連携向けの互換性メモ
継続して使えるもの
- 従来の
/api/...画像系エンドポイントは引き続き利用可能 - 既存 API ユーザーは
tier未指定時にclassic - 繰り返しリクエスト時の
upload_idグルーピングを維持 layout_type="studio"をサポート- callback payload は従来どおり
status+render_urls
変更されたもの
旧 Vercel Blob upload handshake はサポートされなくなりました。
/api/image/upload は現在、次を受け付けます。
multipart/form-dataimage_base64を含む JSONdata_urlを含む JSON
旧方式の Vercel アップロードを送ると、multipart または base64 upload へ切り替えるよう案内する明確なエラーを返します。
Common errors
400リクエストボディ不正、画像形式不正、画像 URL 不正、未対応の content type、または render cap 超過401API トークン不正または未指定402クレジット不足403アカウント制限中413アップロードサイズ超過503一時的なサービス障害またはキュー処理失敗