Room Visualizer

A responsive, flexible room visualization component that allows users to select room types and styles, generate room images, and view furniture product recommendations.

API

The Room Visualize API allows you to generate room visualizations based on room types and styles.

Authentication

You can authenticate using either:

Option 1: Authorization: Bearer YOUR_TOKEN header (obtain from /api/v1/token)

Option 2: x-client-secret: YOUR_CLIENT_SECRET header

Create Room Visualization

Endpoint: POST /api/v1/room-visualize

Generate a room visualization by specifying room type, styles, and optional base image.

curl -X POST "https://platform.youzu.ai/api/v1/room-visualize" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "room=living room" \
  -F "styles=modern" \
  -F "styles=minimal" \
  -F "aspectRatio=16:9"
curl -X POST "https://platform.youzu.ai/api/v1/room-visualize" \
  -H "x-client-secret: YOUR_CLIENT_SECRET" \
  -F "room=living room" \
  -F "styles=modern" \
  -F "styles=minimal" \
  -F "aspectRatio=16:9"
// Generate a room visualization using token
const formData = new FormData();
formData.append('room', 'living room');
formData.append('styles', 'modern');
formData.append('styles', 'minimal');
formData.append('aspectRatio', '16:9');

fetch('https://platform.youzu.ai/api/v1/room-visualize', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN'
  },
  body: formData
})
.then(response => response.json())
.then(data => {
  console.log('Generation started:', data);
  // Poll for completion using data.id
})
.catch(error => {
  console.error('Error:', error);
});
// Generate a room visualization using client secret
const formData = new FormData();
formData.append('room', 'living room');
formData.append('styles', 'modern');
formData.append('styles', 'minimal');
formData.append('aspectRatio', '16:9');

fetch('https://platform.youzu.ai/api/v1/room-visualize', {
  method: 'POST',
  headers: {
    'x-client-secret': 'YOUR_CLIENT_SECRET'
  },
  body: formData
})
.then(response => response.json())
.then(data => {
  console.log('Generation started:', data);
  // Poll for completion using data.id
})
.catch(error => {
  console.error('Error:', error);
});
import requests

# Generate a room visualization using token
url = 'https://platform.youzu.ai/api/v1/room-visualize'

headers = {
    'Authorization': 'Bearer YOUR_TOKEN'
}

data = {
    'room': 'living room',
    'styles': ['modern', 'minimal'],
    'aspectRatio': '16:9'
}

response = requests.post(url, headers=headers, data=data)

if response.status_code == 200:
    job = response.json()
    print('Generation started:', job)
    # Poll for completion using job['id']
else:
    print('Error:', response.status_code, response.text)
import requests

# Generate a room visualization using client secret
url = 'https://platform.youzu.ai/api/v1/room-visualize'

headers = {
    'x-client-secret': 'YOUR_CLIENT_SECRET'
}

data = {
    'room': 'living room',
    'styles': ['modern', 'minimal'],
    'aspectRatio': '16:9'
}

response = requests.post(url, headers=headers, data=data)

if response.status_code == 200:
    job = response.json()
    print('Generation started:', job)
    # Poll for completion using job['id']
else:
    print('Error:', response.status_code, response.text)

Get Visualization Status

Endpoint: GET /api/v1/room-visualize/{id}

Check the status of a room visualization job.

curl -X GET "https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"
curl -X GET "https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID" \
  -H "x-client-secret: YOUR_CLIENT_SECRET"
// Check visualization status using token
fetch('https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN'
  }
})
.then(response => response.json())
.then(data => {
  console.log('Job status:', data.status);
  if (data.status === 'COMPLETED') {
    console.log('Generated image URL:', data.outputUrls[0]);
  }
})
.catch(error => {
  console.error('Error:', error);
});
// Check visualization status using client secret
fetch('https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID', {
  method: 'GET',
  headers: {
    'x-client-secret': 'YOUR_CLIENT_SECRET'
  }
})
.then(response => response.json())
.then(data => {
  console.log('Job status:', data.status);
  if (data.status === 'COMPLETED') {
    console.log('Generated image URL:', data.outputUrls[0]);
  }
})
.catch(error => {
  console.error('Error:', error);
});
import requests

# Check visualization status using token
url = 'https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID'

headers = {
    'Authorization': 'Bearer YOUR_TOKEN'
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    job = response.json()
    print('Job status:', job['status'])
    if job['status'] == 'COMPLETED':
        print('Generated image URL:', job['outputUrls'][0])
else:
    print('Error:', response.status_code, response.text)
import requests

# Check visualization status using client secret
url = 'https://platform.youzu.ai/api/v1/room-visualize/YOUR_JOB_ID'

headers = {
    'x-client-secret': 'YOUR_CLIENT_SECRET'
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    job = response.json()
    print('Job status:', job['status'])
    if job['status'] == 'COMPLETED':
        print('Generated image URL:', job['outputUrls'][0])
else:
    print('Error:', response.status_code, response.text)
SDK

Props

Property Attribute Type Default
currency currency string undefined
customProperties custom-properties ApiV1LensPostRequestCustomProperties undefined
features features FeatureFlags undefined
generationId generation-id string undefined
lang lang string undefined
noIntro no-intro boolean undefined

Events

Event Description Type
generationComplete CustomEvent<Generation>
productAddedToBasket CustomEvent<ApiV1LensPost200ResponseInner>
productClicked CustomEvent<ApiV1LensPost200ResponseInner>
profileClicked CustomEvent<void>
roomSelected CustomEvent<{ roomId: string; roomName: string; }>
styleSelected CustomEvent<{ styleId: string; styleName: string; }>