This document describes the ReRoom Enterprise API, which allows enterprise users to submit rendering requests, check their status, and retrieve the results. The base URL for all API endpoints is https://reroom.ai.
The Enterprise API provides endpoints for:
- Uploading images for processing (supports JPEG and PNG formats)
- Submitting rendering requests with specific styles and creativity levels
- Checking the status of rendering requests
- Retrieving user account information (API key status)
This API is designed for enterprise users who have been granted a unique API key. All requests require authentication using this key.
All API requests require an Authorization header with a bearer token:
Authorization: Bearer <your_enterprise_api_key>
Replace <your_enterprise_api_key> with your actual API key. If the header is missing, malformed, or the key is invalid, the API will return a 401 Unauthorized error.
- Maximum file size: 15MB per upload
- Maximum concurrent renders: 10 per account
Endpoint: POST /api/enterprise/upload
Description:
Uploads an image to be used in a rendering request. This endpoint does not initiate the rendering process; it only prepares the image for a subsequent render request.
Headers:
Authorization:Bearer <your_enterprise_api_key>RequiredContent-Type:image/jpeg,image/jpg, orimage/png(case-insensitive) Required
Request Body:
Raw image file data (binary). Do not send base64 encoded data.
Image Requirements:
- Supported Formats:
- JPEG/JPG (recommended)
- PNG
- Resolution:
- Minimum: 512x512 pixels
- Maximum: 4096x4096 pixels
- Aspect Ratio: Between 4:3 and 16:9
- Maximum File Size: 15MB
Response:
-
Success (200 OK):
{ "success": true, "fileName": "<uuid>.<ext>" }fileName: The unique filename assigned to the uploaded image. This filename should be used in the/api/enterprise/renderendpoint. The<uuid>is a version 4 UUID, and<ext>is the file extension (jpg, jpeg, or png).
-
Error Response:
{ "err": "<error_message>" }Status Code Possible Error Messages 400 "Invalid file format", "JPEG and PNG files only", "Empty file", "Max file size: 15MB" 500 "Upload failed. Try again.", "Connection error. Try again."
Examples:
curl -X POST \
'https://reroom.ai/api/enterprise/upload' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: image/jpeg' \
--data-binary '@path/to/your/image.jpg'import requests
url = "https://reroom.ai/api/enterprise/upload"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "image/jpeg"
}
with open("path/to/your/image.jpg", "rb") as f:
response = requests.post(url, headers=headers, data=f)
if response.status_code == 200:
data = response.json()
file_name = data["fileName"]
print(f"Upload successful. File name: {file_name}")
else:
print(f"Upload failed: {response.text}")Endpoint: POST /api/enterprise/render
Description:
Submits a rendering request using either a previously uploaded image (via the upload endpoint) or an external image URL. The endpoint uses a query parameter field to differentiate between interior and exterior rendering requests.
Headers:
Authorization:Bearer <your_enterprise_api_key>RequiredContent-Type:application/jsonRequired
Query Parameters:
| Parameter | Type | Required | Description | Default | Values |
|---|---|---|---|---|---|
field |
string | No | Type of rendering request to submit | interior |
interior, exterior |
Request Body:
The request body parameters depend on the value of the field query parameter.
Use these parameters when specifying field=interior or omitting the field parameter (as interior is the default).
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
creativity |
string | Yes | Variation level preset | "precise", "balanced", or "creative" |
*Either file_name or file_url must be provided.
Optional Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
type |
string | No | The interior space type | Must be one of the supported interior types. Defaults to "no-type" if not specified |
style |
string | No | The desired rendering style | Must be one of the supported interior styles. Defaults to "no-style" if not specified |
daylight |
string | No | Time of day for lighting | Must be one of the supported daylight options |
season |
string | No | Season to be depicted | Must be one of the supported seasons |
color |
string | No | Color palette | Must be one of the supported color schemes |
architectural_material |
string | No | Primary building material | Must be one of the supported architectural materials |
prompt |
string | No | Additional text instructions | Free-form text |
creativity_level |
number | No | Fine-tuned variation control | Range: 0.5 (conservative) to 1.0 (creative). Defaults to 0.7. Only applies when creativity is "precise" |
Use these parameters when specifying field=exterior in the query string.
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
creativity |
string | Yes | Variation level preset | "precise", "balanced", or "creative" |
*Either file_name or file_url must be provided.
Optional Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
type |
string | No | The building/structure type | Must be one of the supported exterior types. Defaults to "no-type" if not specified |
style |
string | No | The desired rendering style | Must be one of the supported exterior styles. Defaults to "no-style" if not specified |
daylight |
string | No | Time of day for lighting | Must be one of the supported daylight options |
sky |
string | No | Sky condition | Must be one of the supported sky styles |
season |
string | No | Season to be depicted | Must be one of the supported seasons |
landscape |
string | No | Surrounding environment | Must be one of the supported landscapes |
architectural_material |
string | No | Primary building material | Must be one of the supported architectural materials |
prompt |
string | No | Additional text instructions | Free-form text |
creativity_level |
number | No | Fine-tuned variation control | Range: 0.5 (conservative) to 1.0 (creative). Defaults to 0.7. Only applies when creativity is "precise" |
Request Body Example:
{
"file_name": "<uuid>.<ext>",
"creativity": "balanced",
"type": "single-family-home",
"style": "sleek-international",
"daylight": "sunset"
}Exterior Rendering Example:
curl -X POST \
'https://reroom.ai/api/enterprise/render?field=exterior' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>",
"creativity": "balanced",
"type": "single-family-home",
"style": "sleek-international",
"daylight": "sunset"
}'import requests
url = "https://reroom.ai/api/enterprise/render"
params = {
"field": "exterior"
}
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>",
"creativity": "balanced",
"type": "single-family-home",
"style": "sleek-international",
"daylight": "sunset"
}
response = requests.post(url, headers=headers, params=params, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Render request submitted. Render ID: {render_id}")
else:
print(f"Render request failed: {response.text}")Use these parameters when specifying tool=sketch in the request body. You can also use the field query parameter to specify "interior" or "exterior".
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
tool |
string | Yes | The tool to use for rendering | Must be "sketch" |
*Either file_name or file_url must be provided.
Optional Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
type |
string | No | The space or building type | Must be one of the supported types based on the field value specified (interior or exterior) |
style |
string | No | The desired rendering style | Must be one of the supported styles based on the field value specified (interior or exterior) |
view |
string | No | The view type for sketch | One of: "drawing", "floorplan", "section", "elevation" |
Query Parameters:
| Parameter | Type | Required | Description | Default | Values |
|---|---|---|---|---|---|
field |
string | No | Type of rendering request to submit | interior |
interior, exterior |
Request Body Example:
{
"file_name": "<uuid>.<ext>",
"tool": "sketch",
"type": "living-room",
"style": "modern-fusion",
"view": "floorplan"
}Note: The type and style parameters accept the same values as listed in the Interior or Exterior rendering parameters sections, depending on the field value.
Sketch Rendering Example:
curl -X POST \
'https://reroom.ai/api/enterprise/render?field=interior' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>",
"tool": "sketch",
"type": "living-room",
"style": "minimalist-haven",
"view": "floorplan"
}'import requests
url = "https://reroom.ai/api/enterprise/render"
params = {
"field": "interior"
}
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>",
"tool": "sketch",
"type": "living-room",
"style": "minimalist-haven",
"view": "floorplan"
}
response = requests.post(url, headers=headers, params=params, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Render request submitted. Render ID: {render_id}")
else:
print(f"Render request failed: {response.text}")Use these parameters when specifying tool=empty-room in the request body.
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
tool |
string | Yes | The tool to use for rendering | Must be "empty-room" |
*Either file_name or file_url must be provided.
Description:
The empty-room tool removes all furniture, decorations, and personal items from an image, leaving only the architectural elements. This is useful for virtual staging or when you want to start with a clean slate before adding new furniture or decorations. Unlike other rendering tools, the empty-room tool processes images independently of the interior/exterior distinction and does not require or use the field parameter.
Request Body Example:
{
"file_name": "<uuid>.<ext>",
"tool": "empty-room"
}Empty Room Rendering Example:
curl -X POST \
'https://reroom.ai/api/enterprise/render' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>",
"tool": "empty-room"
}'import requests
url = "https://reroom.ai/api/enterprise/render"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>",
"tool": "empty-room"
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Empty room request submitted. Render ID: {render_id}")
else:
print(f"Empty room request failed: {response.text}")Use these parameters when specifying tool=virtual-staging in the request body.
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
tool |
string | Yes | The tool to use for rendering | Must be "virtual-staging" |
action |
string | Yes | The staging approach to use | Must be "preset" or "reference" |
*Either file_name or file_url must be provided.
Parameters for Preset Mode:
When action is set to "preset", the following parameters are required:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
type |
string | Yes | The type of room to stage | Must be one of the supported staging types |
style |
string | Yes | The design style for virtual staging | Must be one of the supported staging styles |
Parameters for Reference Mode:
When action is set to "reference", the following parameters are required:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
reference_file_urls |
string[] | Yes | URLs of reference images for staging style | Must be valid image URLs |
Description:
The virtual-staging tool adds furniture and decorations to an empty or sparsely furnished room based on either preset design styles or reference images. This tool processes images immediately and returns a completed staged image without queuing, unlike other rendering tools. It's useful for real estate marketing, interior design visualization, or showing clients how a space could look when furnished.
Request Body Example (Preset Mode):
{
"file_name": "<uuid>.<ext>",
"tool": "virtual-staging",
"action": "preset",
"type": "living-room",
"style": "modern"
}Request Body Example (Reference Mode):
{
"file_name": "<uuid>.<ext>",
"tool": "virtual-staging",
"action": "reference",
"reference_file_urls": [
"https://example.com/reference1.jpg",
"https://example.com/reference2.jpg"
]
}Virtual Staging Example (Preset Mode):
curl -X POST \
'https://reroom.ai/api/enterprise/render' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>",
"tool": "virtual-staging",
"action": "preset",
"type": "living-room",
"style": "modern"
}'import requests
url = "https://reroom.ai/api/enterprise/render"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>",
"tool": "virtual-staging",
"action": "preset",
"type": "living-room",
"style": "modern"
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Virtual staging request submitted. Render ID: {render_id}")
else:
print(f"Virtual staging request failed: {response.text}")| Option | Description |
|---|---|
living-room |
Living Room |
dining-room |
Dining Room |
kitchen |
Kitchen |
bedroom |
Bedroom |
bathroom |
Bathroom |
office |
Office |
meeting-room |
Meeting Room |
restaurant |
Restaurant |
| Option | Description |
|---|---|
modern |
Modern |
scandinavian |
Scandinavian |
mediterranean |
Mediterranean |
industrial |
Industrial |
american-vintage |
American Vintage |
neo-classical |
Neo-Classical |
luxury |
Luxury |
futuristic |
Futuristic |
Use these parameters when specifying tool=edit in the request body.
Required Parameters:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be rendered | Must be a valid URL |
tool |
string | Yes | The tool to use for rendering | Must be "edit" |
action |
string | Yes | The type of edit to perform | Must be one of: "object", "remove", "material", "prompt" |
mask |
string | Yes | Base64-encoded mask image data | Valid base64 string representing the mask |
field |
string | No | Type of space to edit | Must be "interior" or "exterior". Defaults to "interior" |
*Either file_name or file_url must be provided.
Action-Specific Parameters:
Depending on the action value, you must provide additional parameters:
- For
action="material":
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
material |
string | Yes | The material to apply to the mask | Must be one of the Edit Materials |
- For
action="prompt":
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
prompt |
string | Yes | Text instructions for what to add in the mask area | Free-form text |
- For
action="object":
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
object |
object | Yes | The object to place in the masked area | Object with category and name properties |
The object parameter should have the following structure:
{
"category": "<category>",
"name": "<name>"
}Where:
-
For interiors (
field="interior"):categorymust be one of: "furniture", "decoration", "creature" (see Edit Object Categories and Edit Object Names (Interior)). -
For exteriors (
field="exterior"):categorymust be one of: "street_landscape", "street_furniture", "street_creature" (see Edit Object Categories and Edit Object Names (Exterior)). -
The
namemust be one of the valid options for the selected category. -
For
action="remove", no additional parameters are required. The masked area will be removed and filled in based on the surrounding context.
Description:
The edit tool allows targeted modifications to specific areas of an image defined by a mask. You can change materials, add objects, remove elements, or apply custom prompts to the masked region. This is useful for modifying existing designs, testing different materials, or adding/removing specific elements.
Request Body Example (Material Edit):
{
"file_name": "<uuid>.<ext>",
"tool": "edit",
"action": "material",
"mask": "base64-encoded-mask-data",
"material": "marble",
"field": "interior"
}Request Body Example (Object Edit):
{
"file_name": "<uuid>.<ext>",
"tool": "edit",
"action": "object",
"mask": "base64-encoded-mask-data",
"object": {
"category": "furniture",
"name": "sofa"
},
"field": "interior"
}Edit Example (Material):
curl -X POST \
'https://reroom.ai/api/enterprise/render?field=interior' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>",
"tool": "edit",
"action": "material",
"mask": "<base64-encoded-mask-data>",
"material": "marble",
"field": "interior"
}'import requests
url = "https://reroom.ai/api/enterprise/render"
params = {
"field": "interior"
}
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>",
"tool": "edit",
"action": "material",
"mask": "<base64-encoded-mask-data>",
"material": "marble",
"field": "interior"
}
response = requests.post(url, headers=headers, params=params, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Edit request submitted. Render ID: {render_id}")
else:
print(f"Edit request failed: {response.text}")pine, oak, walnut, marble, granite, limestone, leather, fabrics, carpet, paint, plaster, wallpaper, brick, unglazed-tiles, glazed-tiles, mirror, clear-glass, frosted-glass, steel, bronze, aluminum, polished-concrete, exposed-concrete, stone-veneer
| Field | Categories (use in object.category) |
|---|---|
| interior | furniture, decoration, creature |
| exterior | street_landscape, street_furniture, street_creature |
| Category | Names (use in object.name) |
|---|---|
| furniture | sofa, table, chair, cabinet, shelves, kitchen-island, desk, bed |
| decoration | painting, wall-clock, book, bottle, fruit, potted-plant, vase-with-flower, lamp |
| creature | child, standing-man, sitting-man, standing-woman, sitting-woman, dog, cat |
| Category | Names (use in object.name) |
|---|---|
| street_landscape | tree, bush, potted-plant, flower, grass, bunch-of-rocks, pond |
| street_furniture | car, scooter, bicycle, a-urban-tree, a-urban-seating-unit, a-public-bench, a-picnic-table, a-street-lamp, a-public-sculpture, a-water-fountain |
| street_creature | one-people, one-child, one-old-people, one-sitting-people-on-an-object, a-group-of-people, dog, cat, bird |
This section organizes the available options for both interior and exterior rendering fields.
| Option | Description |
|---|---|
no-type |
No specific interior type |
living-room |
Living Room |
kitchen |
Kitchen |
bedroom |
Bedroom |
bathroom |
Bathroom |
attic |
Attic |
dining-room |
Dining Room |
study-room |
Study Room |
home-office |
Home Office |
gaming-room |
Gaming Room |
house-exterior |
House Exterior |
outdoor-pool-area |
Outdoor Pool Area |
outdoor-patio |
Outdoor Patio |
outdoor-garden |
Outdoor Garden |
meeting-room |
Meeting Room |
workshop |
Workshop |
fitness-gym |
Fitness Gym |
coffee-shop |
Coffee Shop |
clothing-store |
Clothing Store |
walk-in-closet |
Walk-in Closet |
toilet |
Toilet |
restaurant |
Restaurant |
office |
Office |
coworking-space |
Coworking Space |
hotel-lobby |
Hotel Lobby |
hotel-room |
Hotel Room |
hotel-bathroom |
Hotel Bathroom |
exhibition-space |
Exhibition Space |
onsen |
Onsen |
mudroom |
Mudroom |
| Option | Description |
|---|---|
no-style |
No Style |
minimalist-haven |
Minimalist Haven |
modern-fusion |
Modern Fusion |
contemporary-elegance |
Contemporary Elegance |
industrial-loft |
Industrial Loft |
bohemian-oasis |
Bohemian Oasis |
coastal-breeze |
Coastal Breeze |
desert-retreat |
Desert Retreat |
mountain-escape |
Mountain Escape |
victorian-elegance |
Victorian Elegance |
art-deco-glamour |
Art Deco Glamour |
mid-century-modern |
Mid-Century Modern |
french-country-charm |
French Country Charm |
colonial-classic |
Colonial Classic |
scandinavian-sanctuary |
Scandinavian Sanctuary |
japanese-zen |
Japanese Zen |
moroccan-mystique |
Moroccan Mystique |
mediterranean-retreat |
Mediterranean Retreat |
indian-exuberance |
Indian Exuberance |
travelers-trove |
Traveler's Trove |
cyber-eclectic-fusion |
Cyber Eclectic Fusion |
neon-noir |
Neon Noir |
techno-wonderland |
Techno Wonderland |
retro-futurism |
Retro Futurism |
digital-zen |
Digital Zen |
rustic |
Rustic |
vintage |
Vintage |
shabby-chic |
Shabby Chic |
| Option | Description |
|---|---|
warm-earth-tones |
Browns, terracottas, and warm neutrals |
historical-romance |
Muted, vintage-inspired colors |
laid-back-blues |
Calming blue palette |
palm-springs-modern |
Bright retro-inspired colors |
sweet-pastels |
Soft, light color palette |
rich-jewel-tones |
Deep, saturated colors |
desert-chic |
Warm, sand-inspired neutrals |
forest-inspired |
Natural greens and browns |
high-contrast-neutrals |
Black, white, and gray combinations |
airy-neutrals |
Light, barely-there neutrals |
coastal-neutrals |
Beach-inspired light colors |
ecletic-boho |
Mix of bright, diverse colors |
| Option | Description |
|---|---|
no-type |
No specific building type |
single-family-home |
Single Family Home |
apartment-complex |
Apartment Complex |
townhouse |
Townhouse |
condominium |
Condominium |
co-housing-community |
Co-Housing Community |
office-building |
Office Building |
retail-store |
Retail Store |
shopping-mall |
Shopping Mall |
restaurant |
Restaurant |
bank |
Bank |
factory |
Factory |
warehouse |
Warehouse |
distribution-center |
Distribution Center |
power-plant |
Power Plant |
data-center |
Data Center |
school |
School |
university |
University |
hospital |
Hospital |
courthouse |
Courthouse |
police-station |
Police Station |
sports-arena |
Sports Arena |
theater |
Theater |
concert-hall |
Concert Hall |
amusement-park |
Amusement Park |
swimming-pool |
Swimming Pool |
barn |
Barn |
silo |
Silo |
greenhouse |
Greenhouse |
animal-shelter |
Animal Shelter |
farmhouse |
Farmhouse |
airport-terminal |
Airport Terminal |
train-station |
Train Station |
bus-station |
Bus Station |
parking-garage |
Parking Garage |
subway-station |
Subway Station |
hotel |
Hotel |
motel |
Motel |
bed-and-breakfast |
Bed and Breakfast |
resort |
Resort |
hostel |
Hostel |
museum |
Museum |
art-gallery |
Art Gallery |
library |
Library |
performing-arts-center |
Performing Arts Center |
| Option | Description |
|---|---|
no-style |
No Style |
sleek-international |
Sleek International |
eco-futurism |
Eco Futurism |
high-tech |
High Tech |
biomorphic |
Biomorphic |
neo-futurism |
Neo Futurism |
smart-city |
Smart City |
space-colony |
Space Colony |
glassy-minimalist |
Minimalisme Verrier |
dynamic-parametric |
Dynamic Parametric |
eco-friendly-sustainable |
Eco-friendly Sustainable |
expressive-high-tech |
Expressive High-tech |
warm-wooden-modern |
Warm Wooden Modern |
cantilevered-contemporary |
Cantilevered Contemporary |
warehouse-conversion |
Warehouse Conversion |
factory-loft |
Factory Loft |
steel-frame-vintage |
Steel Frame Vintage |
industrial-chic-townhouse |
Industrial Chic Townhouse |
repurposed-factory |
Repurposed Factory |
industrial-farmhouse |
Industrial Farmhouse |
enchanting-gothic |
Enchanting Gothic |
opulent-baroque |
Opulent Baroque |
earthy-vernacular |
Earthy Vernacular |
graceful-moorish |
Graceful Moorish |
whimsical-art-deco |
Whimsical Art Deco |
intricate-tudor |
Intricate Tudor |
bold-brutalist |
Bold Brutalist |
playful-post-modern |
Playful Post-Modern |
serene-scandinavian |
Serene Scandinavian |
curvaceous-organic |
Curvaceous Organic |
dramatic-deconstructivist |
Dramatic Deconstructivist |
romanesque-revival |
Romanesque Revival |
spanish-revival |
Spanish Revival |
colonial-revival |
Colonial Revival |
gothic-revival |
Gothic Revival |
art-nouveau-revival |
Art Nouveau Revival |
neogothic-revival |
Neogothic Revival |
adobe-pueblo |
Adobe Pueblo |
new-england-cottage |
New England Cottage |
tropical-bamboo |
Tropical Bamboo |
mediterranean-village |
Mediterranean Village |
african-mud-hut |
African Mud Hut |
scandinavian-log-cabin |
Scandinavian Log Cabin |
ancient-egyptian |
Ancient Egyptian |
greek-classical |
Greek Classical |
roman-imperial |
Roman Imperial |
pre-columbian-mesoamerican |
Pre-Columbian Mesoamerican |
ancient-chinese |
Ancient Chinese |
ancient-indian |
Ancient Indian |
islamic-moorish |
Islamic Moorish |
islamic-ottoman |
Islamic Ottoman |
islamic-persian |
Islamic Persian |
islamic-mughal |
Islamic Mughal |
islamic-fatimid |
Islamic Fatimid |
islamic-seljuk |
Islamic Seljuk |
| Option | Description |
|---|---|
clear |
Clear Sky |
cloudy |
Cloudy Sky |
rainy |
Rainy Sky |
snowy |
Snowy Sky |
misty |
Misty Sky |
| Option | Description |
|---|---|
cityscape |
Urban environment with buildings |
countryside |
Rural setting with fields |
forest |
Wooded natural environment |
desert |
Arid landscape with minimal vegetation |
mountain |
Elevated terrain with peaks |
coastal |
Oceanside environment |
tropical |
Lush, exotic vegetation |
grassland |
Open field with grasses |
tundra |
Cold, treeless arctic landscape |
wetland |
Marshy area with water features |
| Option | Description |
|---|---|
concrete |
Modern cement-based material |
steel |
Metal structural elements |
glass |
Transparent panels and windows |
wood |
Natural timber elements |
stone |
Natural rock material |
brick |
Clay building blocks |
bamboo |
Sustainable reed material |
clay |
Earth-based material |
gypsum |
Mineral-based wall material |
plastic |
Synthetic polymer material |
| Option | Description |
|---|---|
midday |
Midday |
night |
Night |
sunset |
Sunset |
sunrise |
Sunrise |
| Option | Description |
|---|---|
spring |
Blooming flowers, fresh greenery |
summer |
Vibrant greens, full foliage |
autumn |
Fall colors, orange/red foliage |
winter |
Snow-covered, bare trees |
| Option | Description |
|---|---|
precise |
Stays very close to the original image |
balanced |
Moderate changes while maintaining original structure |
creative |
More significant artistic interpretation |
Endpoint: POST /api/enterprise/upscale
Description:
Submits an upscaling request using either a previously uploaded image (via the upload endpoint) or an external image URL. This enhances the resolution and quality of the image. The upscaled image will have a dimension of 1536 pixels on its shortest side.
Headers:
Authorization:Bearer <your_enterprise_api_key>RequiredContent-Type:application/jsonRequired
Request Body:
| Parameter | Type | Required | Description | Constraints |
|---|---|---|---|---|
file_name |
string | Yes* | The filename returned by the upload endpoint | Must be a valid UUID+extension format |
file_url |
string | Yes* | The URL of the file to be upscaled | Must be a valid URL |
*Either file_name or file_url must be provided.
Request Body Example:
{
"file_name": "<uuid>.<ext>"
}Response:
-
Success (200 OK):
{ "success": true, "data": { "render_id": "<render_id>" } }render_id: The unique ID of the upscaling request. Use this ID to check the upscale status (via the same endpoint used for checking render status).- Each upscale request produces 1 output image.
-
Error Responses:
{ "err": "<error_message>" }Status Code Possible Error Messages 400 "Invalid request", "Invalid filename", "Invalid URL", "No file name or file URL provided", "Not enough credits", "Maximum concurrent renders reached" 401 "Unauthorized" 500 "Image processing failed"
Examples:
curl -X POST \
'https://reroom.ai/api/enterprise/upscale' \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
-H 'Content-Type: application/json' \
-d '{
"file_name": "<your_file_name>"
}'import requests
url = "https://reroom.ai/api/enterprise/upscale"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>",
"Content-Type": "application/json"
}
payload = {
"file_name": "<your_file_name>"
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
data = response.json()
render_id = data["data"]["render_id"]
print(f"Upscale request submitted. Render ID: {render_id}")
else:
print(f"Upscale request failed: {response.text}")Note: The upscaling process consumes 4 credits per request. Use the same endpoint for checking render status (GET /api/enterprise/render/<render_id>) to check the status of upscaling requests.
Success (200 OK):
{
"success": true,
"data": {
"render_id": "<render_id>"
}
}render_id: The unique ID of the rendering request. Use this ID to check render status.- Each render request produces 1 output image.
Error Responses:
{ "err": "<error_message>" }| Status Code | Possible Error Messages |
|---|---|
| 400 | "Invalid request", "Invalid filename", "Invalid URL", "No file name or file URL provided", "Not enough credits", "Maximum concurrent renders reached" |
| 401 | "Unauthorized" |
| 500 | "Image processing failed" |
Empty Room Response Format:
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"field": "<field>",
"status": "painted",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}Virtual Staging Response Format:
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"field": "<field>",
"status": "painted",
"outputs": ["<s3_url_1>"],
"reference_file_urls": ["<s3_url_ref1>", "<s3_url_ref2>"],
"created_at": "<date>",
"updated_at": "<date>"
}Edit Image Response Format (action=prompt):
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"field": "<field>",
"tool": "edit",
"action": "<action>",
"prompt": "<prompt>",
"status": "<status>",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}- Endpoint:
GET /api/enterprise/render/<render_id> - Description: Checks the status of a rendering request.
- Headers:
Authorization:Bearer <your_enterprise_api_key>
- Parameters:
render_id: (Required) The ID of the rendering request (obtained from the response ofPOST /api/enterprise/render).
Response (Success - 200 OK):
The response format varies based on the render type (interior or exterior). Both response types include common status values and share base fields, with type-specific fields included based on the initial render request.
Status Values:
queued: Rendering has not started yetrendering: Rendering is in progresscompleted: Rendering is completefailed: Rendering has failed
Interior Render Response Format:
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"field": "interior",
"type": "<interior_type>",
"style": "<style>",
"daylight": "<daylight>",
"season": "<season>",
"color": "<color>",
"architectural_material": "<architectural_material>",
"creativity": "<creativity>",
"creativity_level": 0.7,
"prompt": "<prompt>",
"status": "<status>",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}Exterior Render Response Format:
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"field": "exterior",
"type": "<exterior_type>",
"style": "<style>",
"daylight": "<daylight>",
"sky": "<sky>",
"season": "<season>",
"landscape": "<landscape>",
"architectural_material": "<architectural_material>",
"creativity": "<creativity>",
"creativity_level": 0.7,
"prompt": "<prompt>",
"status": "<status>",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}Sketch Response Format:
{
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"type": "<type>",
"style": "<style>",
"view": "<view>",
"prompt": "<prompt>",
"status": "<status>",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}Upscale Response Format:
{
"success": true,
"data": {
"_id": "<render_id>",
"uid": "<user_id>",
"source": "<s3_url>",
"status": "<status>",
"outputs": ["<s3_url_1>"],
"created_at": "<date>",
"updated_at": "<date>"
}
}Note: The outputs array will be empty for statuses queued, rendering, and failed. When status is completed, it will contain URLs to the rendered images on S3.
Response (Error):
{ "err": "<error_message>" }| Status Code | Possible Error Messages |
|---|---|
| 401 | "Unauthorized" |
| 404 | "Render not found" |
- Example:
curl -X GET \
-H 'Authorization: Bearer <your_enterprise_api_key>' \
'https://reroom.ai/api/enterprise/render/<your_render_id>'import requests
url = f"https://reroom.ai/api/enterprise/render/<your_render_id>"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
status = data["status"]
print(f"Render status: {status}")
if status == "completed":
print("Output URLs:", data["outputs"])
else:
print(f"Status check failed: {response.text}")Endpoint: GET /api/enterprise/status
Description:
Returns information about the current status of your enterprise account, including available credits, key information, and account status.
Headers:
Authorization:Bearer <your_enterprise_api_key>Required
Response:
-
Success (200 OK):
{ "_id": "<account_id>", "uid": "<user_id>", "key": "<api_key>", "credits": -1, "is_active": true, "is_enterprise": true, "created_at": "<date>", "updated_at": "<date>" }_id: The unique identifier for the account recorduid: The user identifier associated with the accountkey: The API key being used (same as provided in Authorization header)credits: Available credits (-1 indicates unlimited credits)is_active: Whether the API key is currently activeis_enterprise: Whether the account has enterprise privilegescreated_at: When the account was createdupdated_at: When the account was last updated
-
Error Responses:
{ "err": "<error_message>" }Status Code Possible Error Messages 401 "Unauthorized" 404 "Account not found"
Examples:
curl -X GET \
'https://reroom.ai/api/enterprise/status' \
-H 'Authorization: Bearer <your_enterprise_api_key>'import requests
url = "https://reroom.ai/api/enterprise/status"
headers = {
"Authorization": "Bearer <your_enterprise_api_key>"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
credits = data["credits"]
is_active = data["is_active"]
print(f"Account status: {'Active' if is_active else 'Inactive'}")
print(f"Available credits: {'Unlimited' if credits == -1 else credits}")
else:
print(f"Status check failed: {response.text}")