Endpoints
Last updated
Last updated
The v2 API is available at the base URL https://api.virtualstagingai.app/v2
.
The same API key can be used for both the v1 and v2 API. You can find or generate your API key in the Settings section of your Virtual Staging AI account.
Authenticate all requests by including an Authorization Header with the value (case sensitive):
Authorization: Api-Key {your_api_key_here}
Deprecated styles: Please note that the hamptons
, american
, and southwestern
styles have been deprecated, and now are mapped to other existing styles. The API will continue to support their use, but they may be removed in future versions
Returns information about the authenticated user including their usage limits
GET /v2/user HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Accept: */*
{
"user": {
"email": "text",
"uid": "text"
},
"photoLimit": {
"staging": 1,
"imageEditing": 1
},
"photosUsedThisPeriod": {
"staging": 1,
"imageEditing": 1
}
}
Returns all renders for the authenticated user
20
Render ID to start after
The order in which to display renders. Based on their creation date.
desc
Possible values: GET /v2/renders HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Accept: */*
{
"total_count": 1,
"next_cursor": null,
"items": [
{
"id": "text",
"created_at": 1,
"queued_at": null,
"variations": {
"total_count": 1,
"next_cursor": null,
"items": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
},
"eta": null
}
]
}
Returns details about a render including the status, variations, and result URL
The ID of the render to get details for
false
20
Variation ID to start after
The order in which to display variations. Based on their creation date.
asc
Possible values: GET /v2/renders/{render_id} HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Accept: */*
{
"id": "text",
"created_at": 1,
"queued_at": null,
"variations": {
"total_count": 1,
"next_cursor": null,
"items": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
},
"eta": null
}
Returns details about a variation including the status and result URL
The ID of the base render
The ID of the variation to get details for
GET /v2/renders/{render_id}/variations/{variation_id} HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Accept: */*
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
Removes the webhook secret used for HMAC signature verification
DELETE /v2/user/webhook-secret HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Accept: */*
{
"message": "Webhook secret removed successfully"
}
Creates a new render with the specified parameters. If a webhook_url is provided, status updates will be sent to that URL as the render progresses.
URL for an image, either HTTP/HTTPS URL or base64 encoded data URL.
^(https?:\/\/[^\s]+|data:image\/[a-zA-Z+]+;base64,[A-Za-z0-9+/=]+)$
URL to send progress updates to
false
POST /v2/renders HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 334
{
"config": {
"type": "staging",
"output_resolution": "default",
"add_virtually_staged_watermark": null,
"add_furniture": {
"style": "standard",
"room_type": "living"
},
"multi_view_staging": {
"image_url": "text"
},
"remove_furniture": {
"mode": "on",
"mask_url": "text"
}
},
"image_url": "text",
"webhook_url": null,
"variation_count": 1,
"wait_for_completion": false
}
{
"id": "text",
"created_at": 1,
"queued_at": null,
"variations": {
"total_count": 1,
"next_cursor": null,
"items": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
},
"eta": null
}
Create one or more variations for an existing render. Status updates will be sent to the webhook_url specified in the render if one was provided.
false
POST /v2/renders/{render_id}/variations HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 323
{
"config": {
"type": "staging",
"output_resolution": "default",
"add_virtually_staged_watermark": null,
"add_furniture": {
"style": "standard",
"room_type": "living",
"base_variation_id": "text"
},
"multi_view_staging": {
"image_url": "text"
},
"remove_furniture": {
"mode": "on",
"mask_url": "text"
}
},
"variation_count": 1,
"wait_for_completion": false
}
{
"variations": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
}
Creates multiple renders with the specified parameters.
false
POST /v2/renders/bulk HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 348
{
"webhook_url": null,
"wait_for_completion": false,
"renders": [
{
"config": {
"type": "staging",
"output_resolution": "default",
"add_virtually_staged_watermark": null,
"add_furniture": {
"style": "standard",
"room_type": "living"
},
"multi_view_staging": {
"image_url": "text"
},
"remove_furniture": {
"mode": "on",
"mask_url": "text"
}
},
"image_url": "text",
"variation_count": 1
}
]
}
{
"renders": [
{
"id": "text",
"created_at": 1,
"queued_at": null,
"variations": {
"total_count": 1,
"next_cursor": null,
"items": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
},
"eta": null
}
]
}
Creates multiple variations for an existing render with different configurations.
false
POST /v2/renders/variations/bulk HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 356
{
"wait_for_completion": false,
"renders": [
{
"render_id": "text",
"variation_count": 1,
"config": {
"type": "staging",
"output_resolution": "default",
"add_virtually_staged_watermark": null,
"add_furniture": {
"style": "standard",
"room_type": "living",
"base_variation_id": "text"
},
"multi_view_staging": {
"image_url": "text"
},
"remove_furniture": {
"mode": "on",
"mask_url": "text"
}
}
}
]
}
{
"results": [
{
"id": "text",
"type": "staging",
"render_id": "text",
"created_at": 1,
"status": "queued",
"result": {
"url": "text",
"optimized_url": null,
"thumbnail_url": null
},
"base_variation_id": "text",
"eta": null,
"config": {
"type": "legacy_staging",
"room_type": "living",
"style": "standard"
}
}
]
}
Submits an image for analysis to generate a furniture mask. If a webhook_url is provided, completion status will be sent to that URL.
URL for an image, either HTTP/HTTPS URL or base64 encoded data URL.
^(https?:\/\/[^\s]+|data:image\/[a-zA-Z+]+;base64,[A-Za-z0-9+/=]+)$
URL for completion payload
POST /v2/analyze HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 39
{
"image_url": "text",
"webhook_url": null
}
{
"id": "text",
"created_at": 1,
"result_url": "text",
"percentage_masked": 1,
"status": "done"
}
Analyzes two images to determine if they can be used together for multi-view staging.
Array of two image URLs to check for compatibility.
POST /v2/multi-view-compatibility HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 23
{
"image_urls": [
"text"
]
}
{
"compatible": true,
"hard_rejected": true,
"rejection_reason": null
}
Sets or updates the webhook secret used for HMAC signature verification
The webhook secret to use for HMAC signature verification
^[a-zA-Z0-9_-]+$
POST /v2/user/webhook-secret HTTP/1.1
Host: api.virtualstagingai.app
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 25
{
"webhook_secret": "text"
}
{
"message": "Webhook secret updated successfully"
}