Change Clothes AI API Documentation
2025-05-28
Posted byChange Clothes AI API Documentation
Introducción y Casos de Uso
Change Clothes AI API permite a los desarrolladores aplicar prendas virtuales fácilmente sobre imágenes de modelos mediante una simple llamada a la API. Es ideal para comercio electrónico, probadores virtuales, estilismo de moda y creación de contenido. Ya sea que desee ofrecer a los usuarios una experiencia de prueba en línea o ayudar a los creadores de contenido a generar imágenes de atuendos diversos, esta API puede mejorar enormemente la eficiencia y la experiencia del usuario.
Casos de Uso Comunes
- Plataformas de comercio electrónico que ofrecen probadores virtuales para aumentar la tasa de conversión
- Aplicaciones de estilismo de moda que generan vistas previas de atuendos
- Creadores de contenido que generan por lotes combinaciones de ropa
- Diseñadores de moda que previsualizan nuevos diseños de prendas en modelos
- Avatares de IA o personajes virtuales cambiando de atuendo
Claves de API
Para usar nuestra API, necesitará obtener credenciales de API. Puede gestionar sus claves de API en el panel de control.
API 1 : Cambiar Ropa con Imagen de Prenda
Para usar esta API, deberá proporcionar imágenes del modelo y de la prenda. Si no tiene una imagen de la prenda o desea describir la prenda mediante texto, consulte la siguiente API.
Endpoint de la API
POST https://changeclothesai.online/api/openapi/change-clothes-ai
Guía de Integración
Encabezados de Solicitud
| Nombre del Encabezado | Requerido | Descripción |
|---|---|---|
| content-type | Sí | Debe ser multipart/form-data |
| authorization | Sí | Debe ser Bearer $ $ es su clave de API. |
Parámetros del Cuerpo de la Solicitud (FormData)
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| modelImg | string o archivo | Sí | Imagen del modelo. Acepta tres formatos de entrada: 1. URL de imagen del modelo, comenzando con http:// o https://. 2. Imagen codificada en Base64, siguiendo el formato: data:image/jpeg;base64,/9j/4AAQSkZJR... (Nota: otros tipos de imagen como PNG también son posibles, ajuste el mime-type en consecuencia) 3. Objeto de archivo: Un archivo que representa la imagen del modelo. |
| garmentImg | string o archivo | Sí | Imagen de la prenda. Acepta tres formatos de entrada igual que modelImg. |
| category | string | Sí | Categoría de la prenda, valores: upper_body, lower_body, dresses |
| garmentDesc | string | No | Descripción opcional de la prenda en inglés |
Formato de Respuesta JSON
| Campo | Tipo | Descripción |
|---|---|---|
| code | number | Código de estado de la respuesta. 200 para éxito. |
| msg | string | Mensaje de respuesta, proporciona información adicional |
| data | object | Objeto de datos de la respuesta, presente cuando code es 200 |
| data.resultImgUrl | string | URL de la imagen de resultado |
| data.maskImgUrl | string | URL de la imagen del modelo con máscara de inpaint |
| data.cacheHit | boolean | true si se utiliza caché de modelo y prenda preestablecidos. Solo se almacena en caché para modelos y prendas preestablecidos |
Códigos de Respuesta
| Código | Mensaje | Descripción |
|---|---|---|
| 200 | OK | Solicitud exitosa |
| 500 | SERVER_ERROR | Error interno del servidor |
| 10001 | NOT_LOGIN | Usuario no autenticado |
| 10002 | USER_NOT_EXIST | El usuario no existe |
| 10003 | INSUFFICIENT_CREDITS | Créditos insuficientes |
| 10004 | INVALID_PARAM | Parámetros inválidos |
| 10005 | HARMFUL_CONTENT | Contenido dañino detectado |
| 10006 | INSUFFICIENT_TRAIL_COUNT | Límite de uso de prueba excedido |
| 20001 | TRY_ON_EXCEPTION | Error de procesamiento |
| 30001 | INVALID_API_KEY | Clave de API inválida |
| 30002 | INVALID_SIGNATURE | Firma de solicitud inválida |
Ejemplo de Respuesta
{
"code": 200,
"data":
{
"resultImgUrl": "https://persistent.changeclothesai.online/change-clothes-ai/cache/1747493767397255851.webp",
"maskImgUrl": "https://persistent.changeclothesai.online/change-clothes-ai/cache/1747493770543821630.webp",
"cacheHit": true
}
}
Ejemplos de Código
Ejemplo Curl con URL de Imagen
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-ai' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'garmentImg="https://persistent.changeclothesai.online/change-clothes-ai/assets/examples/garment-tab/dresses/04-01.jpg"' \
--form 'category="dresses"' \
--form 'modelImg="https://persistent.changeclothesai.online/change-clothes-ai/assets/examples/person-tab/women/003.jpg"'
Ejemplo Curl con Archivo de Imagen Local
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-ai' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'garmentImg=@"/PATH/TO/YOUR/GARMENT/IMAGE.jpg"' \
--form 'category="dresses"' \
--form 'modelImg=@"/PATH/TO/YOUR/MODEL/IMAGE.png"'
Ejemplo Curl con Imagen Base64
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-ai' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'garmentImg="data:image/jpeg;base64,/9j……/9k="' \
--form 'category="dresses"' \
--form 'modelImg="data:image/jpeg;base64,/9j……/9k="'
Ejemplo Node.js
async function callChangeClothesApi() {
const apiKey = 'YOUR_API_KEY'; // Replace with your actual API key
const formData = new FormData();
formData.append('modelImg', ...); // Support url, image file, image base64 encode
formData.append('garmentImg', ...); // Support url, image file, image base64 encode
formData.append('category', ...); // upper_body, lower_body, dresses
if (...) { // judge garmentDesc not empty
formData.append('garmentDesc', ...);
}
const apiEndpoint = 'https://changeclothesai.online/api/openapi/change-clothes-ai';
try {
const response = await fetch(apiEndpoint, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
},
body: formData,
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`HTTP error ${response.status}: ${errorData.msg || 'Unknown error'}`);
}
const data = await response.json();
return { resultImgUrl: data.data.resultImgUrl, maskImgUrl: data.data.maskImgUrl, error: null };
} catch (error) {
console.error('Error changing clothes:', error);
return { resultImgUrl: null, maskImgUrl: null, error: error.message };
}
}
Ejemplo Python
import requests
import base64
async def call_change_clothes_api():
api_key = 'YOUR_API_KEY' # Replace with your actual API key
form_data = {
'modelImg': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...', # Example base64 image. Replace with your actual image data. Supports url, file, and base64.
'garmentImg': 'https://example.com/garment.png', # Example url. Supports url, file, and base64.
'category': 'upper_body', # upper_body, lower_body, dresses
'garmentDesc': 'A beautiful red dress' # Example description. Remove this line if garmentDesc is empty
}
api_endpoint = 'https://changeclothesai.online/api/openapi/change-clothes-ai'
try:
headers = {
'Authorization': f'Bearer {api_key}',
}
response = requests.post(api_endpoint, files=form_data, headers=headers) # Use files= for multipart/form-data
response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx)
data = response.json()
return {'resultImgUrl': data.get('data', {}).get('resultImgUrl'), 'maskImgUrl': data.get('data', {}).get('maskImgUrl'), 'error': None}
except requests.exceptions.RequestException as e:
print(f'Error changing clothes: {e}')
return {'resultImgUrl': None, 'maskImgUrl': None, 'error': str(e)}
API 2 : Cambiar Ropa por Prompt
Para usar esta API, debe proporcionar una imagen del modelo y una descripción de la prenda (PROMPT).
Endpoint de la API
POST https://changeclothesai.online/api/openapi/change-clothes-by-prompt
Guía de Integración
Encabezados de Solicitud
| Nombre del Encabezado | Requerido | Descripción |
|---|---|---|
| content-type | Sí | Debe ser multipart/form-data |
| authorization | Sí | Debe ser Bearer $ $ es su clave de API. |
Parámetros del Cuerpo de la Solicitud (FormData)
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| modelImg | string o archivo | Sí | Imagen del modelo. Acepta tres formatos de entrada: 1. URL de imagen del modelo, comenzando con http:// o https://. 2. Imagen codificada en Base64, siguiendo el formato: data:image/jpeg;base64,/9j/4AAQSkZJR... (Nota: otros tipos de imagen como PNG también son posibles, ajuste el mime-type en consecuencia) 3. Objeto de archivo: Un archivo que representa la imagen del modelo. |
| prompt | string | Sí | Prompt de cambio de ropa en inglés. ej. Help the model change into a blue striped shirt. |
| seed | string | No | Semilla para iniciar el proceso de IA, rango de 0 a 2147483647. Parámetro opcional, y será sobrescrito si randomize_seed es true. |
| randomize_seed | string | No | Generar semilla aleatoria, valores: true, false. |
| guidance_scale | string | No | Establece el peso de influencia del prompt, tipo numérico, rango 1-100, cuanto mayor el peso, mayor la influencia. Opcional, por defecto 50. solo se recomienda ajustar este parámetro si es necesario |
| num_inference_steps | string | No | Modifica el número de iteraciones de la imagen, tipo numérico, rango 1-50. opcional, valor por defecto 28, solo se recomienda ajustar este parámetro si es necesario |
Formato de Respuesta JSON
| Campo | Tipo | Descripción |
|---|---|---|
| code | number | Código de estado de la respuesta. 200 para éxito. |
| msg | string | Mensaje de respuesta, proporciona información adicional |
| data | object | Objeto de datos de la respuesta, presente cuando code es 200 |
| data.resultImgUrl | string | URL de la imagen de resultado |
| data.seed | number | Semilla utilizada para generar la imagen |
Códigos de Respuesta
| Código | Mensaje | Descripción |
|---|---|---|
| 200 | OK | Solicitud exitosa |
| 500 | SERVER_ERROR | Error interno del servidor |
| 10001 | NOT_LOGIN | Usuario no autenticado |
| 10002 | USER_NOT_EXIST | El usuario no existe |
| 10003 | INSUFFICIENT_CREDITS | Créditos insuficientes |
| 10004 | INVALID_PARAM | Parámetros inválidos |
| 10005 | HARMFUL_CONTENT | Contenido dañino detectado |
| 10006 | INSUFFICIENT_TRAIL_COUNT | Límite de uso de prueba excedido |
| 20001 | TRY_ON_EXCEPTION | Error de procesamiento |
| 30001 | INVALID_API_KEY | Clave de API inválida |
| 30002 | INVALID_SIGNATURE | Firma de solicitud inválida |
Ejemplo de Respuesta
{
"code": 200,
"data":
{
"resultImgUrl": "https://r2.changeclothesai.online/1748486113268661990.webp",
"seed": 627512067
}
}
Ejemplos de Código
Ejemplo Curl con URL de Imagen
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-by-prompt' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'modelImg="https://persistent.changeclothesai.online/change-clothes-ai/assets/examples/person-tab/women/003.jpg"' \
--form 'prompt="Help the model change into a blue striped shirt."'
Ejemplo Curl con Archivo de Imagen Local
# curl with image url
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-by-prompt' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'modelImg=@"/PATH/TO/YOUR/MODEL/IMAGE.png"' \
--form 'prompt="Help the model change into a blue striped shirt."'
Ejemplo Curl con Imagen Base64
# curl with image url
curl --location 'https://changeclothesai.online/api/openapi/change-clothes-by-prompt' \
--header 'Authorization: Bearer ${SECRET_KEY}' \
--form 'modelImg="data:image/jpeg;base64,/9j……/9k="' \
--form 'prompt="Help the model change into a blue striped shirt."'
Ejemplo Node.js
async function callChangeClothesApi() {
const apiKey = 'YOUR_API_KEY'; // Replace with your actual API key
const formData = new FormData();
formData.append('modelImg', ...); // Support url, image file, image base64 encode
formData.append('prompt', 'Help the model change into a blue striped shirt.');
const apiEndpoint = 'https://changeclothesai.online/api/openapi/change-clothes-by-prompt';
try {
const response = await fetch(apiEndpoint, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
},
body: formData,
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`HTTP error ${response.status}: ${errorData.msg || 'Unknown error'}`);
}
const data = await response.json();
return { resultImgUrl: data.data.resultImgUrl, seed: data.data.seed };
} catch (error) {
console.error('Error changing clothes:', error);
return { resultImgUrl: null, maskImgUrl: null, error: error.message };
}
}
Ejemplo Python
import requests
import base64
async def call_change_clothes_api():
api_key = 'YOUR_API_KEY' # Replace with your actual API key
form_data = {
'modelImg': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...', # Example base64 image. Replace with your actual image data. Supports url, file, and base64.
'prompt': 'Help the model change into a blue striped shirt.'
}
api_endpoint = 'https://changeclothesai.online/api/openapi/change-clothes-by-prompt'
try:
headers = {
'Authorization': f'Bearer {api_key}',
}
response = requests.post(api_endpoint, files=form_data, headers=headers) # Use files= for multipart/form-data
response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx)
data = response.json()
return {'resultImgUrl': data.get('data', {}).get('resultImgUrl'), 'seed': data.get('data', {}).get('seed')}
except requests.exceptions.RequestException as e:
print(f'Error changing clothes: {e}')
return {'resultImgUrl': None, 'seed': None, 'error': str(e)}
Precios
Las llamadas a la API consumen créditos de su cuenta. Puede comprar créditos en nuestra página de precios.
Ayuda y Soporte
Si tiene alguna pregunta o necesita ayuda, no dude en ponerse en contacto con nuestro equipo de soporte.
Email: dreamspire.team@gmail.com