Documentation de l’API Change Clothes AI
2025-05-28
Posted byDocumentation de l’API Change Clothes AI
Introduction & Cas d’Utilisation
L’API Change Clothes AI permet aux développeurs d’appliquer facilement des vêtements virtuels sur des images de modèles via un simple appel API. Elle est idéale pour le e-commerce, l’essayage virtuel, le stylisme de mode et la création de contenu. Que vous souhaitiez offrir à vos utilisateurs une expérience d’essayage en ligne ou aider les créateurs de contenu à générer des images de tenues variées, cette API peut grandement améliorer l’efficacité et l’expérience utilisateur.
Cas d’Utilisation Courants
- Plateformes e-commerce proposant l’essayage virtuel pour augmenter le taux de conversion
- Applications de stylisme générant des aperçus de tenues
- Créateurs de contenu générant en lot des images de combinaisons de vêtements
- Créateurs de mode prévisualisant de nouveaux designs sur des modèles
- Avatars IA ou personnages virtuels changeant de tenue
Clés API
Pour utiliser notre API, vous devez obtenir des identifiants API. Vous pouvez gérer vos clés API dans le tableau de bord.
API 1 : Changer de vêtements avec une image de vêtement
Pour utiliser cette API, vous devez fournir des images de modèle et de vêtement. Si vous n’avez pas d’image du vêtement, ou souhaitez le décrire par texte, consultez l’API suivante.
Endpoint de l’API
POST https://changeclothesai.online/api/openapi/change-clothes-ai
Guide d’Intégration
En-têtes de la requête
| Nom de l’en-tête | Obligatoire | Description |
|---|---|---|
| content-type | Oui | Doit être multipart/form-data |
| authorization | Oui | Doit être Bearer $ $ est votre clé API. |
Paramètres du corps de la requête (FormData)
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| modelImg | string ou fichier | Oui | Image du modèle. Accepte trois formats d’entrée : 1. URL d’image du modèle, commençant par http:// ou https://. 2. Image encodée en Base64, suivant le format : data:image/jpeg;base64,/9j/4AAQSkZJR... (Remarque : d’autres types d’images comme PNG sont aussi possibles, adaptez le mime-type) 3. Objet Fichier : un fichier image du modèle. |
| garmentImg | string ou fichier | Oui | Image du vêtement. Accepte trois formats d’entrée identiques à modelImg . |
| category | string | Oui | Catégorie du vêtement, valeurs possibles : upper_body, lower_body, dresses |
| garmentDesc | string | Non | Description optionnelle du vêtement en anglais |
Format de la réponse JSON
| Champ | Type | Description |
|---|---|---|
| code | number | Code de statut de la réponse. 200 pour succès. |
| msg | string | Message de réponse, fournit des informations supplémentaires |
| data | object | Objet de données de la réponse, présent si code = 200 |
| data.resultImgUrl | string | URL de l’image résultante |
| data.maskImgUrl | string | URL de l’image du modèle avec masque |
| data.cacheHit | boolean | true si la réponse provient du cache pour un modèle ou vêtement prédéfini. Uniquement mis en cache pour modèles et vêtements prédéfinis |
Codes de réponse
| Code | Message | Description |
|---|---|---|
| 200 | OK | Requête réussie |
| 500 | SERVER_ERROR | Erreur interne du serveur |
| 10001 | NOT_LOGIN | Utilisateur non authentifié |
| 10002 | USER_NOT_EXIST | Utilisateur inexistant |
| 10003 | INSUFFICIENT_CREDITS | Crédits insuffisants |
| 10004 | INVALID_PARAM | Paramètres invalides |
| 10005 | HARMFUL_CONTENT | Contenu nuisible détecté |
| 10006 | INSUFFICIENT_TRAIL_COUNT | Limite d’essai dépassée |
| 20001 | TRY_ON_EXCEPTION | Erreur de traitement |
| 30001 | INVALID_API_KEY | Clé API invalide |
| 30002 | INVALID_SIGNATURE | Signature de requête invalide |
Exemple de réponse
{
"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
}
}
Exemples de code
Exemple Curl avec URL d’image
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"'
Exemple Curl avec fichier image 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"'
Exemple Curl avec image 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="'
Exemple 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 };
}
}
Exemple 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 : Changer de vêtements par prompt
Pour utiliser cette API, vous devez fournir une image de modèle et une description de vêtement (PROMPT).
Endpoint de l’API
POST https://changeclothesai.online/api/openapi/change-clothes-by-prompt
Guide d’Intégration
En-têtes de la requête
| Nom de l’en-tête | Obligatoire | Description |
|---|---|---|
| content-type | Oui | Doit être multipart/form-data |
| authorization | Oui | Doit être Bearer $ $ est votre clé API. |
Paramètres du corps de la requête (FormData)
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| modelImg | string ou fichier | Oui | Image du modèle. Accepte trois formats d’entrée : 1. URL d’image du modèle, commençant par http:// ou https://. 2. Image encodée en Base64, suivant le format : data:image/jpeg;base64,/9j/4AAQSkZJR... (Remarque : d’autres types d’images comme PNG sont aussi possibles, adaptez le mime-type) 3. Objet Fichier : un fichier image du modèle. |
| prompt | string | Oui | Prompt de changement de vêtement en anglais. ex. Help the model change into a blue striped shirt. |
| seed | string | Non | Graine pour démarrer le processus IA, plage de 0 à 2147483647. Paramètre optionnel, sera écrasé si randomize_seed est true. |
| randomize_seed | string | Non | Générer une graine aléatoire, valeurs possibles : true, false. |
| guidance_scale | string | Non | Définit l’influence du prompt, type numérique, plage 1-100, plus la valeur est grande, plus l’influence est forte. Optionnel, 50 par défaut. À ajuster uniquement si nécessaire |
| num_inference_steps | string | Non | Modifie le nombre d’itérations de l’image, type numérique, plage 1-50. Optionnel, valeur par défaut 28, à ajuster uniquement si nécessaire |
Format de la réponse JSON
| Champ | Type | Description |
|---|---|---|
| code | number | Code de statut de la réponse. 200 pour succès. |
| msg | string | Message de réponse, fournit des informations supplémentaires |
| data | object | Objet de données de la réponse, présent si code = 200 |
| data.resultImgUrl | string | URL de l’image résultante |
| data.seed | number | Graine utilisée pour générer l’image |
Codes de réponse
| Code | Message | Description |
|---|---|---|
| 200 | OK | Requête réussie |
| 500 | SERVER_ERROR | Erreur interne du serveur |
| 10001 | NOT_LOGIN | Utilisateur non authentifié |
| 10002 | USER_NOT_EXIST | Utilisateur inexistant |
| 10003 | INSUFFICIENT_CREDITS | Crédits insuffisants |
| 10004 | INVALID_PARAM | Paramètres invalides |
| 10005 | HARMFUL_CONTENT | Contenu nuisible détecté |
| 10006 | INSUFFICIENT_TRAIL_COUNT | Limite d’essai dépassée |
| 20001 | TRY_ON_EXCEPTION | Erreur de traitement |
| 30001 | INVALID_API_KEY | Clé API invalide |
| 30002 | INVALID_SIGNATURE | Signature de requête invalide |
Exemple de réponse
{
"code": 200,
"data":
{
"resultImgUrl": "https://r2.changeclothesai.online/1748486113268661990.webp",
"seed": 627512067
}
}
Exemples de code
Exemple Curl avec URL d’image
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."'
Exemple Curl avec fichier image 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."'
Exemple Curl avec image 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."'
Exemple 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 };
}
}
Exemple 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)}
Tarification
Les appels API consomment des crédits de votre compte. Vous pouvez acheter des crédits sur notre page de tarification.
Aide & Support
Si vous avez des questions ou besoin d’assistance, n’hésitez pas à contacter notre équipe support.
Email: dreamspire.team@gmail.com