Documentación de la API de remodelación interior#
URL base:
https://api.ideal.house
Versión: v1
Actualizado: 2026-05-21
📖 Descripción general#
La API de remodelación interior permite remodelar una imagen de un interior y puede usar opcionalmente opciones de estilo de habitación, indicaciones de texto y orientación de color.
El flujo de trabajo es asincrónico:
- Crear una tarea: envíe
imageUrly parámetros opcionales, luego reciba untaskId. - Consultar resultados: utilice
taskIdpara obtener el estado de la tarea y la imagen generada.
🔐 Autenticación#
| Cabecera | Valor |
|---|---|
APIKEY | your_api_key_here |
💰 Deducción de créditos#
[!WARNING] 🪙 Se descuentan 1 crédito cuando se crea una tarea correctamente. Si la tarea finalmente falla, los créditos descontados se reembolsarán automáticamente.
Los créditos insuficientes devolverán el código de error9051. Consulte Referencia de deducción de créditos.
| Operación | Créditos descontados |
|---|---|
| Tarea de remodelación de interiores | 1 crédito |
🎨 Opciones de estilo#
Esta API admite parámetros de estilo opcionales devueltos por el endpoint Configuración de estilo de la API.
Uso:
GET /api/v1/style/interoir_remodel/getStyles
| Grupo de estilos | Campo de solicitud | Descripción |
|---|---|---|
roomType | indoorTypeId | Opción de tipo de habitación |
style | indoorStyleId | Opción de estilo de interior |
elements | indoorElemId | Opción de elemento de habitación. Admite varios ID de opción separados por comas, por ejemplo id1,id2 |
Cada opción contiene name, id y url. Pase el id de la opción en el campo de solicitud correspondiente.
🎨 Orientación de color#
colorString y colorImgUrl son entradas opcionales de orientación de color:
| Caso | Comportamiento |
|---|---|
Solo se proporciona colorString | Usar colorString |
Solo se proporciona colorImgUrl | Usar la imagen de referencia de color |
| Se proporcionan ambos | colorString tiene prioridad |
| No se proporciona ninguno | La orientación de color predeterminada es auto |
📌 Endpoints de la API#
1. Crear tarea de remodelación de interiores#
Endpoint
POST /api/v1/interiorRemodel/generate
Cabeceras de solicitud
| Cabecera | Requerido | Descripción |
|---|---|---|
APIKEY | ✅ Sí | Su clave de autenticación de API |
Content-Type | ✅ Sí | application/json |
Cuerpo de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
imageUrl | string | ✅ Sí | URL de la imagen de interior original |
prompt | string | ❌ Opcional | Orientación de texto para la remodelación deseada |
indoorTypeId | string | ❌ Opcional | ID de tipo de habitación de las opciones de estilo roomType |
indoorStyleId | string | ❌ Opcional | ID de estilo de interior de las opciones de estilo style |
indoorElemId | string | ❌ Opcional | ID de elemento de habitación de las opciones de estilo elements. Admite varios IDs separados por comas, por ejemplo id1,id2 |
colorString | string | ❌ Opcional | Cadena de paleta de colores, por ejemplo [[174,238,238],[36,36,36]] |
colorImgUrl | string | ❌ Opcional | Imagen de referencia de color URL |
Solo se requiere
imageUrl. Todos los demás campos son opcionales.
🖼️ Requisitos de imagen: Todas las imágenes de origen y referencia deben usar JPG/JPEG, PNG o WebP. Cada imagen no debe superar los 20 MB, con dimensiones desde 128 × 128 px hasta 6,000 × 6,000 px (inclusive). Las imágenes que excedan las dimensiones máximas en píxeles se reducirán proporcionalmente automáticamente para ajustarse a 6,000 × 6,000 px antes del procesamiento. Las URLs de las imágenes deben ser accesibles directamente por el servidor de la API.
📥 Ejemplos de solicitud#
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();
📤 Respuesta#
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
2. Obtener resultado de la tarea#
Endpoint
GET /api/v1/interiorRemodel/result
Cabeceras de solicitud
| Cabecera | Requerido | Descripción |
|---|---|---|
APIKEY | ✅ Sí | Su clave de autenticación de API |
Parámetros de consulta
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
taskId | long | ✅ Sí | ID de tarea devuelto por la endpoint de creación |
📥 Ejemplos de solicitud#
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);
📤 Ejemplo de respuesta#
{
"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
}
}
}
Respuesta (tarea en proceso / en cola)
{
"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
}
}
Respuesta (tarea fallida)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"imageUrl": "https://example.com/interior.jpg"
},
"output": null
}
}
📊 Estado de la tarea#
| Estado | Descripción |
|---|---|
Unprocessed | La tarea se ha creado y está esperando en la cola |
Processing | La tarea se está ejecutando actualmente |
Success | La tarea se completó correctamente |
Failed | La tarea falló y no se produjo ningún resultado |
Consulte cada 3-5 segundos. Consulte Límite de tareas de la API.
❌ Respuestas de error#
| Código | Nombre | Descripción |
|---|---|---|
1011 | PARAM_ERROR | Error en los parámetros de la solicitud |
5002 | API_KEY_INVALID | API Key inválida o faltante |
9010 | SCAN_TEXT_ERROR | El prompt no superó la revisión de contenido |
9038 | PROHIBITED_CONTENT | La imagen generada contiene contenido prohibido |
9051 | COINS_NOT_ENOUGH | Créditos insuficientes |
Para definiciones completas de errores comunes, consulte Referencia de códigos de error.