Youzu Swap
The Youzu Swap component allows users to swap furniture items in a room visualization.
API
The Swap API allows you to swap furniture items in room images with new products.
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 Swap Job
Endpoint: POST /api/v1/swap
Swap furniture in room images by providing the room image and the catalog image of the new furniture.
curl -X POST "https://platform.youzu.ai/api/v1/swap" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "roomImage=@room.jpg" \
-F "catalogImage=@furniture.png" \
-F "prompt=Replace furniture with new item"
curl -X POST "https://platform.youzu.ai/api/v1/swap" \
-H "x-client-secret: YOUR_CLIENT_SECRET" \
-F "roomImage=@room.jpg" \
-F "catalogImage=@furniture.png" \
-F "prompt=Replace furniture with new item"
// Swap furniture in room images using token
const roomImage = document.getElementById('room-input').files[0];
const catalogImage = document.getElementById('furniture-input').files[0];
const formData = new FormData();
formData.append('roomImage', roomImage);
formData.append('catalogImage', catalogImage);
formData.append('prompt', 'Replace furniture with new item');
fetch('https://platform.youzu.ai/api/v1/swap', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
},
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Swap job created:', data);
// Poll for completion using data.id
})
.catch(error => {
console.error('Error:', error);
});
// Swap furniture in room images using client secret
const roomImage = document.getElementById('room-input').files[0];
const catalogImage = document.getElementById('furniture-input').files[0];
const formData = new FormData();
formData.append('roomImage', roomImage);
formData.append('catalogImage', catalogImage);
formData.append('prompt', 'Replace furniture with new item');
fetch('https://platform.youzu.ai/api/v1/swap', {
method: 'POST',
headers: {
'x-client-secret': 'YOUR_CLIENT_SECRET'
},
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Swap job created:', data);
// Poll for completion using data.id
})
.catch(error => {
console.error('Error:', error);
});
import requests
# Swap furniture in room images using token
url = 'https://platform.youzu.ai/api/v1/swap'
headers = {
'Authorization': 'Bearer YOUR_TOKEN'
}
files = {
'roomImage': open('room.jpg', 'rb'),
'catalogImage': open('furniture.png', 'rb')
}
data = {
'prompt': 'Replace furniture with new item'
}
response = requests.post(url, headers=headers, files=files, data=data)
if response.status_code == 200:
job = response.json()
print('Swap job created:', job)
# Poll for completion using job['id']
else:
print('Error:', response.status_code, response.text)
import requests
# Swap furniture in room images using client secret
url = 'https://platform.youzu.ai/api/v1/swap'
headers = {
'x-client-secret': 'YOUR_CLIENT_SECRET'
}
files = {
'roomImage': open('room.jpg', 'rb'),
'catalogImage': open('furniture.png', 'rb')
}
data = {
'prompt': 'Replace furniture with new item'
}
response = requests.post(url, headers=headers, files=files, data=data)
if response.status_code == 200:
job = response.json()
print('Swap job created:', job)
# Poll for completion using job['id']
else:
print('Error:', response.status_code, response.text)
Get Swap Status
Endpoint: GET /api/v1/swap/{id}
Check the status of a swap job.
curl -X GET "https://platform.youzu.ai/api/v1/swap/YOUR_JOB_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
curl -X GET "https://platform.youzu.ai/api/v1/swap/YOUR_JOB_ID" \
-H "x-client-secret: YOUR_CLIENT_SECRET"
// Check swap status using token
fetch('https://platform.youzu.ai/api/v1/swap/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('Result URL:', data.outputUrls[0]);
}
})
.catch(error => {
console.error('Error:', error);
});
// Check swap status using client secret
fetch('https://platform.youzu.ai/api/v1/swap/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('Result URL:', data.outputUrls[0]);
}
})
.catch(error => {
console.error('Error:', error);
});
import requests
# Check swap status using token
url = 'https://platform.youzu.ai/api/v1/swap/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('Result URL:', job['outputUrls'][0])
else:
print('Error:', response.status_code, response.text)
import requests
# Check swap status using client secret
url = 'https://platform.youzu.ai/api/v1/swap/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('Result URL:', job['outputUrls'][0])
else:
print('Error:', response.status_code, response.text)
SDK
Props
| Property | Attribute | Type | Default |
|---|---|---|---|
currency |
currency |
string | undefined |
lang |
lang |
string | undefined |
Events
| Event | Description | Type |
|---|---|---|
productAddedToBasket |
CustomEvent<ApiV1LensPost200ResponseInner> |
|
productClicked |
CustomEvent<ApiV1LensPost200ResponseInner> |