Documentation de l'API de remodelage intérieur#
URL de base :
https://api.ideal.house
Version : v1
Mis à jour : 2026-05-21
📖 Vue d'ensemble#
L'API de remodelage intérieur transforme une image d'intérieur et peut utiliser optionnellement des options de style de pièce, des instructions textuelles et des consignes de couleur.
Le traitement est asynchrone :
- Créer une tâche — Soumettez
imageUrlet des paramètres optionnels, puis recevez untaskId. - Interrogation périodique des résultats — Utilisez
taskIdpour récupérer le statut de la tâche et l'image générée.
🔐 Authentification#
| En-tête | Valeur |
|---|---|
APIKEY | your_api_key_here |
💰 Déduction de crédits#
[!WARNING] 🪙 1 crédit est déduit lorsqu'une tâche est créée avec succès. Si la tâche échoue finalement, le crédit déduit sera automatiquement remboursé.
Un solde insuffisant renvoie le code d'erreur9051. Voir Référence de déduction de crédits.
| Opération | Crédits déduits |
|---|---|
| Tâche de remodelage intérieur | 1 crédit |
🎨 Options de style#
Cette API prend en charge des paramètres de style optionnels renvoyés par le point de terminaison Configuration de style API.
Utilisation :
GET /api/v1/style/interoir_remodel/getStyles
| Groupe de style | Champ de la requête | Description |
|---|---|---|
roomType | indoorTypeId | Option de type de pièce |
style | indoorStyleId | Option de style intérieur |
elements | indoorElemId | Option d'élément de pièce. Prend en charge plusieurs IDs d'options joints par une virgule, par exemple id1,id2 |
Chaque option contient name, id et url. Transmettez l'id de l'option dans le champ de requête correspondant.
🎨 Consignes de couleur#
colorString et colorImgUrl sont des entrées de consignes de couleur optionnelles :
| Cas | Comportement |
|---|---|
Seul colorString est fourni | Utiliser colorString |
Seul colorImgUrl est fourni | Utiliser l'image de référence de couleur |
| Les deux sont fournis | colorString a la priorité |
| Aucun n'est fourni | La consigne de couleur par défaut est auto |
📌 Points de terminaison de l'API#
1. Créer une tâche de remodelage intérieur#
Point de terminaison
POST /api/v1/interiorRemodel/generate
En-têtes de la requête
| En-tête | Requis | Description |
|---|---|---|
APIKEY | ✅ Oui | Votre clé d'authentification API |
Content-Type | ✅ Oui | application/json |
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
imageUrl | string | ✅ Oui | URL de l'image intérieure source |
prompt | string | ❌ Optionnel | Instructions textuelles pour le remodelage souhaité |
indoorTypeId | string | ❌ Optionnel | ID de type de pièce depuis les options de style roomType |
indoorStyleId | string | ❌ Optionnel | ID de style intérieur depuis les options de style style |
indoorElemId | string | ❌ Optionnel | ID d'élément de pièce depuis les options de style elements. Prend en charge plusieurs IDs joints par une virgule, par exemple id1,id2 |
colorString | string | ❌ Optionnel | Chaîne de palette de couleurs, par exemple [[174,238,238],[36,36,36]] |
colorImgUrl | string | ❌ Optionnel | URL de l'image de référence de couleur |
Seul
imageUrlest requis. Tous les autres champs sont optionnels.
🖼️ Exigences relatives aux images : Toutes les images source et de référence doivent être au format JPG/JPEG, PNG ou WebP. Chaque image ne doit pas dépasser 20 Mo, avec des dimensions comprises entre 128 × 128 px et 6,000 × 6,000 px (inclus). Les images dépassant les dimensions maximales en pixels sont automatiquement réduites à la taille proportionnellement pour respecter les 6,000 × 6,000 px avant traitement. Les URLs des images doivent être directement accessibles par le serveur API.
📥 Exemples de requête#
cURL
curl -X POST "https://api.ideal.house/api/v1/interiorRemodel/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://example.com/interior.jpg",
"prompt": "modern warm remodel with clean built-in storage",
"indoorTypeId": "Interior Design_Interior Scene_Living Room",
"indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
"indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
"colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class InteriorRemodelApiExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
String requestBody = """
{
"imageUrl": "https://example.com/interior.jpg",
"prompt": "modern warm remodel with clean built-in storage",
"indoorTypeId": "Interior Design_Interior Scene_Living Room",
"indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
"indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
"colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/interiorRemodel/generate")
.addHeader("APIKEY", API_KEY)
.addHeader("Content-Type", "application/json")
.post(RequestBody.create(requestBody, MediaType.parse("application/json")))
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("Response: " + response.body().string());
}
}
}
Python (requests)
import requests
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
headers = {
"APIKEY": API_KEY,
"Content-Type": "application/json"
}
payload = {
"imageUrl": "https://example.com/interior.jpg",
"prompt": "modern warm remodel with clean built-in storage",
"indoorTypeId": "Interior Design_Interior Scene_Living Room",
"indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
"indoorElemId": "Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table",
"colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
}
response = requests.post(
f"{BASE_URL}/api/v1/interiorRemodel/generate",
headers=headers,
json=payload
)
data = response.json()
task_id = data.get("data")
print(f"Task ID: {task_id}")
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function createInteriorRemodelTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/interiorRemodel/generate`,
{
imageUrl: 'https://example.com/interior.jpg',
prompt: 'modern warm remodel with clean built-in storage',
indoorTypeId: 'Interior Design_Interior Scene_Living Room',
indoorStyleId: 'Interior_Interior Style_Popular_Modern Country',
indoorElemId: 'Interior Design_Scene Elements_Living Room_Shelving,Interior Design_Scene Elements_Living Room_Coffee Table',
colorString: '[[174,238,238],[36,36,36],[117,64,95]]'
},
{
headers: {
APIKEY: API_KEY,
'Content-Type': 'application/json'
}
}
);
const taskId = response.data.data;
console.log('Task ID:', taskId);
return taskId;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
createInteriorRemodelTask();
📤 Réponse#
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
2. Obtenir le résultat de la tâche#
Point de terminaison
GET /api/v1/interiorRemodel/result
En-têtes de la requête
| En-tête | Requis | Description |
|---|---|---|
APIKEY | ✅ Oui | Votre clé d'authentification API |
Paramètres de requête
| Paramètre | Type | Requis | Description |
|---|---|---|---|
taskId | long | ✅ Oui | ID de tâche retourné par le point de terminaison de création |
📥 Exemples de requête#
cURL
curl -X GET "https://api.ideal.house/api/v1/interiorRemodel/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class InteriorRemodelResultExample {
private static final String BASE_URL = "https://api.ideal.house";
private static final String API_KEY = "your_api_key_here";
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
long taskId = 1234567890123456789L;
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/interiorRemodel/result?taskId=" + taskId)
.addHeader("APIKEY", API_KEY)
.get()
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("Response: " + response.body().string());
}
}
}
Python (requests)
import requests
import time
BASE_URL = "https://api.ideal.house"
API_KEY = "your_api_key_here"
headers = {"APIKEY": API_KEY}
task_id = 1234567890123456789
while True:
response = requests.get(
f"{BASE_URL}/api/v1/interiorRemodel/result",
headers=headers,
params={"taskId": task_id}
)
data = response.json()
result = data.get("data", {})
status = result.get("status")
print(f"Status: {status}, Progress: {result.get('percentage')}%, Queue: {result.get('waitNumber')}")
if status in ("Success", "Failed"):
break
time.sleep(3)
if status == "Success":
print("Result URL:", result["output"]["resultUrl"])
else:
print("Task ended with status:", status)
Node.js (axios)
const axios = require('axios');
const BASE_URL = 'https://api.ideal.house';
const API_KEY = 'your_api_key_here';
async function pollInteriorRemodelResult(taskId) {
const headers = { APIKEY: API_KEY };
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/interiorRemodel/result`,
{
headers,
params: { taskId }
}
);
const result = response.data.data;
const { status, percentage, waitNumber } = result;
console.log(`Status: ${status} | Progress: ${percentage}% | Queue: ${waitNumber}`);
if (['Success', 'Failed'].includes(status)) {
if (status === 'Success') {
console.log('Result URL:', result.output.resultUrl);
console.log('Size:', result.output.width, 'x', result.output.height);
} else {
console.log('Task ended with status:', status);
}
break;
}
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollInteriorRemodelResult(1234567890123456789n);
📤 Exemple de réponse#
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"imageUrl": "https://example.com/interior.jpg",
"prompt": "modern warm remodel with clean built-in storage",
"indoorTypeId": "Interior Design_Interior Scene_Living Room",
"indoorStyleId": "Interior_Interior Style_Popular_Modern Country",
"colorString": "[[174,238,238],[36,36,36],[117,64,95]]"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/interior_remodel_result.jpg",
"width": 1024,
"height": 1024
}
}
}
Réponse (Traitement de la tâche / En file d'attente)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"imageUrl": "https://example.com/interior.jpg",
"prompt": "modern warm remodel with clean built-in storage"
},
"output": null
}
}
Réponse (Échec de la tâche)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"imageUrl": "https://example.com/interior.jpg"
},
"output": null
}
}
📊 Statut de la tâche#
| Statut | Description |
|---|---|
Unprocessed | La tâche a été créée et attend dans la file d'attente |
Processing | La tâche est actuellement en cours d'exécution |
Success | La tâche est terminée avec succès |
Failed | La tâche a échoué et aucune sortie n'a été produite |
Effectuez une interrogation périodique toutes les 3-5 secondes. Consultez Limite de tâches API.
❌ Réponses d'erreur#
| Code | Nom | Description |
|---|---|---|
1011 | PARAM_ERROR | Erreur de paramètre de requête |
5002 | API_KEY_INVALID | Clé API invalide ou manquante |
9010 | SCAN_TEXT_ERROR | Échec de l'examen de contenu du prompt |
9038 | PROHIBITED_CONTENT | L'image générée contient du contenu interdit |
9051 | COINS_NOT_ENOUGH | Crédits insuffisants |
Pour les définitions complètes des erreurs courantes, voir Référence des codes d'erreur.