Documentazione API di generazione di piante della casa#
URL di base:
https://api.ideal.house
Versione: v1
Aggiornato: 2026-06-12
📖 Panoramica#
API di generazione di piante della casa consente di creare una tavola di presentazione di un progetto abitativo generata dall'intelligenza artificiale, in base a stile architettonico, superficie, configurazione strutturale e preferenze di disposizione degli interni. Quando la generazione riesce, API produce esattamente 1 immagine composita risultante per attività. L'immagine contiene piante 2D coordinate, prospetti esterni e rendering fotorealistici degli esterni in un'unica tavola di presentazione. Il risultato viene memorizzato in output.resultUrl e incluso anche come unico elemento di output.resultList. Il flusso di lavoro è asincrono e prevede due passaggi:
- Crea un'attività — Invia i parametri della pianta della casa e ricevi un
taskId. - Interroga periodicamente i risultati — Usa il
taskIdper interrogare lo stato dell'attività e recuperare le immagini generate.
🔐 Autenticazione#
Tutte le richieste API devono essere autenticate con una chiave API.
Includi la chiave API nell'intestazione della richiesta:
| Intestazione | Valore |
|---|---|
APIKEY | your_api_key_here |
⚠️ Conserva la chiave API in sicurezza. Non esporla nel codice lato client o in repository pubblici.
💰 Detrazione dei crediti#
[!WARNING] 🪙 I crediti vengono detratti in base al
modelTypeselezionato alla creazione riuscita dell'attività. Se alla fine l'attività non riesce, i crediti detratti vengono rimborsati automaticamente sul tuo account.
Un saldo di crediti insufficiente restituisce il codice di errore9051. 📄 Consulta il Riferimento delle detrazioni dei crediti.
Modello (modelType) | Crediti detratti |
|---|---|
Base | 10 crediti |
Pro | 20 crediti |
📌 Endpoint API#
1. Crea un'attività di generazione di una pianta della casa#
Crea una nuova attività di generazione di una pianta della casa con intelligenza artificiale e restituisce un taskId univoco per le interrogazioni periodiche.
Endpoint
POST /api/v1/housePlan/generate
Intestazioni della richiesta
| Intestazione | Obbligatoria | Descrizione |
|---|---|---|
APIKEY | ✅ Sì | La tua chiave di autenticazione API |
Content-Type | ✅ Sì | application/json |
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Descrizione | Valore predefinito |
|---|---|---|---|---|
style | string / null | ✅ Sì | Nome inglese dello stile architettonico. Vedi Opzioni di stile | Barndominium |
stories | string | ✅ Sì | Numero di piani dell'edificio. Enumerazione: 1, 2, 3+ | 2 |
bedrooms | string | ✅ Sì | Numero di camere da letto. Enumerazione: 1, 2, 3, 4, 5+ | 2 |
bathrooms | string | ✅ Sì | Numero di bagni. Enumerazione: 1, 1.5, 2, 2.5, 3, 3.5, 4+ | 1 |
totalArea | string | ✅ Sì | Intervallo della superficie totale nel formato min-max unit. Vedi Opzioni della superficie totale | 150-200 m² |
garageEnabled | boolean | ✅ Sì | Se includere un'autorimessa | false |
garageType | string / null | ⚠️ Condizionale | Obbligatorio quando garageEnabled=true. Vedi Opzioni del tipo di autorimessa | null |
garageCapacity | string / null | ⚠️ Condizionale | Obbligatorio quando garageEnabled=true. Vedi Capienza dell'autorimessa | null |
basement | string | ✅ Sì | Tipo di seminterrato. Vedi Opzioni del seminterrato | None |
roofType | string / null | ❌ No | Tipo di struttura del tetto. Vedi Opzioni del tipo di tetto | null |
outdoorSpaces | array<string> | ❌ No | Aree esterne. Vedi Opzioni degli spazi esterni | [] |
layoutConcept | string / null | ❌ No | Concezione generale della disposizione degli interni. Vedi Opzioni della concezione distributiva | null |
bedroomAreaRanges | array<object> | ✅ Sì | Intervalli di superficie delle camere da letto. La lunghezza deve corrispondere al numero di camere. Vedi Intervalli di superficie delle camere da letto | Vedi esempio |
bathroomLayouts | array<object> | ✅ Sì | Selezioni della disposizione dei bagni. La lunghezza deve essere Math.floor(bathrooms). Vedi Disposizioni dei bagni | Vedi esempio |
kitchenLayout | string / null | ❌ No | Disposizione della cucina. Vedi Opzioni della cucina | null |
kitchenFeatureOptions | array<string> | ❌ No | Caratteristiche facoltative della cucina. Vedi Opzioni della cucina | [] |
keyRooms | string / null | ❌ No | Stanze speciali unite da virgola e spazio. Vedi Opzioni delle stanze principali | null |
prompt | string | ❌ No | Prompt testuale personalizzato per orientare ulteriormente la generazione | "" |
refImageUrl | string | ❌ No | URL di un'immagine di riferimento della casa per orientare lo stile | "" |
modelType | string | ✅ Sì | Tipo di qualità del modello. Enumerazione: Base, Pro. ⚠️ La modalità Flash non è supportata | Base |
🖼️ Requisiti delle immagini: l'immagine di riferimento facoltativa deve usare JPG/JPEG, PNG o WebP, non deve superare 20 MB e deve avere dimensioni da 128 × 128 px fino a 6,000 × 6,000 px (estremi inclusi). Prima dell'elaborazione, le immagini che superano le dimensioni massime in pixel vengono ridotte automaticamente in modo proporzionale per rientrare in 6,000 × 6,000 px. La sua URL deve essere direttamente accessibile dal server API.
🎨 Opzioni di stile#
| Valore | Descrizione |
|---|---|
Barndominium | Predefinito. Abitazione ibrida in metallo in stile fienile |
Cabin | Stile rustico di baita in legno |
Cape Cod | Stile classico simmetrico del New England |
Coastal | Stile luminoso e arioso ispirato alla spiaggia |
Colonial | Architettura coloniale tradizionale simmetrica |
Contemporary | Linee pulite e materiali moderni |
Craftsman | Dettagli artigianali con materiali naturali |
Farmhouse | Stile rustico di casa di campagna |
French Country | Elegante stile provinciale francese |
Mediterranean | Intonaco dai toni caldi con elementi in terracotta |
Mid-Century Modern | Modernismo geometrico essenziale degli anni 1950–70 |
Modern | Design moderno minimalista con superfici piane e forme angolari |
Ranch | Disposizione estesa su un solo piano |
Shingle Style | Rivestimento esterno continuo in scandole di legno |
Southwestern | Stile desertico ispirato alle costruzioni in terra cruda |
Transitional | Fusione di tradizione e contemporaneità |
Tudor | Stile inglese medievale a graticcio |
Victorian | Stile decorativo elaborato del 19° secolo |
📐 Opzioni della superficie totale#
Il campo totalArea usa il formato min-max unit. I valori metrici usano m²; quelli imperiali usano ft². Il valore minimo deve essere inferiore al massimo di almeno un incremento.
| Unità | Minimo | Massimo | Incremento | Esempio |
|---|---|---|---|---|
m² | 50 | 500 | 10 | 150-200 m² |
ft² | 500 | 5000 | 100 | 1500-2000 ft² |
🏠 Opzioni del tipo di tetto#
| Valore | Descrizione |
|---|---|
Gable roof | Classico tetto a due falde con profilo triangolare |
Hip roof | Falde su tutti e quattro i lati |
Flat roof | Tetto piano con pendenza minima |
Pitched roof | Tetto generalmente a forte pendenza |
🏗️ Opzioni del seminterrato#
| Valore | Descrizione |
|---|---|
None | Nessun seminterrato |
Partial | Seminterrato parziale |
Full | Seminterrato completo |
🚗 Opzioni del tipo di autorimessa#
garageType è obbligatorio soltanto quando garageEnabled=true; altrimenti invia null.
| Valore | Descrizione |
|---|---|
Detached | Autorimessa separata |
Front Entry | Ingresso dell'autorimessa rivolto verso il fronte |
Side Entry | Ingresso dell'autorimessa rivolto verso il lato |
Rear Entry | Ingresso dell'autorimessa rivolto verso il retro |
🚗 Capienza dell'autorimessa#
garageCapacity è obbligatorio soltanto quando garageEnabled=true; altrimenti invia null.
| Valore | Descrizione |
|---|---|
1 | Autorimessa per un'auto |
2 | Autorimessa per due auto |
3+ | Tre o più posti auto |
🌿 Opzioni degli spazi esterni#
Il campo outdoorSpaces accetta un array dei seguenti valori.
| Valore | Descrizione |
|---|---|
Front porch | Portico d'ingresso coperto sul fronte |
Covered patio | Area esterna a patio coperto |
Deck | Pedana in legno o materiale composito |
Balcony | Piattaforma esterna sopraelevata |
Courtyard | Cortile esterno chiuso o semichiuso |
Breezeway | Passaggio coperto che collega strutture |
Outdoor Kitchen | Area esterna per cucinare e mangiare |
Esempio
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]
🏛️ Opzioni della concezione distributiva#
| Valore | Descrizione |
|---|---|
Open Concept | Spazi abitativi collegati a pianta aperta |
Traditional | Stanze separate con confini definiti |
Split-Level | Livelli di pavimento sfalsati tra le aree |
🛏️ Intervalli di superficie delle camere da letto#
Il campo bedroomAreaRanges deve essere un array la cui lunghezza corrisponde al conteggio bedrooms. Ogni elemento usa la seguente struttura:
| Campo | Tipo | Descrizione |
|---|---|---|
name | string | Nome visualizzato della camera da letto, ad esempio Room 1 (Master) |
minArea | string | Superficie minima della camera da letto. Deve essere una stringa numerica non negativa |
maxArea | string | Superficie massima della camera da letto. Deve essere maggiore o uguale a minArea |
unit | string | Unità di superficie. Enumerazione: m², ft² |
Esempio predefinito per bedrooms="2"
[
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
]
🛁 Disposizioni dei bagni#
Il campo bathroomLayouts deve essere un array la cui lunghezza è Math.floor(bathrooms). Ad esempio, bathrooms="2.5" richiede 2 oggetti di disposizione del bagno.
| Campo | Tipo | Descrizione |
|---|---|---|
name | string | Nome visualizzato del bagno, ad esempio Bathroom 1 |
layout | string / null | Enumerazione: With Wet & Dry Separation, Without Separation o null |
Esempio predefinito per bathrooms="1"
[
{ "name": "Bathroom 1", "layout": null }
]
🍳 Opzioni della cucina#
Disposizione della cucina
| Valore | Descrizione |
|---|---|
Open Kitchen | Cucina aperta collegata alla zona soggiorno/pranzo |
Closed Kitchen | Spazio cucina chiuso e separato |
Opzioni delle caratteristiche della cucina
| Valore | Descrizione |
|---|---|
Eating Bar | Bancone per mangiare / posti a sedere al banco |
Kitchen Island | Isola della cucina |
Breakfast Nook | Angolo colazione |
🚪 Opzioni delle stanze principali#
Il campo keyRooms accetta uno o più dei seguenti valori. Quando selezioni più opzioni, uniscile con una virgola (,).
| Valore | Descrizione |
|---|---|
Home Office | Ufficio domestico o studio dedicato |
Bonus Room | Stanza aggiuntiva flessibile e multifunzionale |
Media Room | Sala cinema domestica o centro multimediale |
Mudroom | Locale d'ingresso per attrezzature e abiti da esterno |
Laundry Room | Spazio lavanderia dedicato |
Guest Suite | Suite indipendente per ospiti |
Esempio
"keyRooms": "Home Office, Media Room, Guest Suite"
Tipi di modello
| Valore | Descrizione |
|---|---|
Base | Predefinito. Equilibrio tra velocità e qualità. Genera una tavola di presentazione composita ad alta risoluzione |
Pro | Qualità e risoluzione dell'output maggiori, più lento |
⚠️ Nota: la modalità
Flashnon è disponibile per questa API. Sono supportati soltantoBaseePro.
📥 Esempi di richiesta#
cURL
# Basic request with default values
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}'
# Pro model with reference image and custom prompt
curl -X POST "https://api.ideal.house/api/v1/housePlan/generate" \
-H "APIKEY: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"style": "Victorian",
"stories": "3+",
"bedrooms": "5+",
"bathrooms": "4+",
"totalArea": "300-380 m²",
"garageEnabled": true,
"garageType": "Front Entry",
"garageCapacity": "3+",
"basement": "Full",
"roofType": "Gable roof",
"outdoorSpaces": ["Front porch", "Balcony", "Courtyard", "Outdoor Kitchen"],
"layoutConcept": "Traditional",
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "18", "maxArea": "28", "unit": "m²" },
{ "name": "Room 2", "minArea": "12", "maxArea": "16", "unit": "m²" },
{ "name": "Room 3", "minArea": "12", "maxArea": "16", "unit": "m²" },
{ "name": "Room 4", "minArea": "10", "maxArea": "14", "unit": "m²" },
{ "name": "Room 5", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": "With Wet & Dry Separation" },
{ "name": "Bathroom 2", "layout": "With Wet & Dry Separation" },
{ "name": "Bathroom 3", "layout": "Without Separation" },
{ "name": "Bathroom 4", "layout": null }
],
"kitchenLayout": "Closed Kitchen",
"kitchenFeatureOptions": ["Kitchen Island", "Breakfast Nook"],
"keyRooms": "Home Office, Bonus Room, Media Room, Guest Suite",
"prompt": "Grand Victorian mansion with ornate details and wraparound porch",
"refImageUrl": "https://example.com/reference-house.jpg",
"modelType": "Pro"
}'
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class HousePlanApiExample {
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 = """
{
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}
""";
Request request = new Request.Builder()
.url(BASE_URL + "/api/v1/housePlan/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 = {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": False,
"garageType": None,
"garageCapacity": None,
"basement": "None",
"roofType": None,
"outdoorSpaces": [],
"layoutConcept": None,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": None }
],
"kitchenLayout": None,
"kitchenFeatureOptions": [],
"keyRooms": None,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
}
response = requests.post(
f"{BASE_URL}/api/v1/housePlan/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 createHousePlanTask() {
try {
const response = await axios.post(
`${BASE_URL}/api/v1/housePlan/generate`,
{
style: 'Barndominium',
stories: '2',
bedrooms: '2',
bathrooms: '1',
totalArea: '150-200 m²',
garageEnabled: false,
garageType: null,
garageCapacity: null,
basement: 'None',
roofType: null,
outdoorSpaces: [],
layoutConcept: null,
bedroomAreaRanges: [
{ name: 'Room 1 (Master)', minArea: '12', maxArea: '18', unit: 'm²' },
{ name: 'Room 2', minArea: '10', maxArea: '14', unit: 'm²' }
],
bathroomLayouts: [
{ name: 'Bathroom 1', layout: null }
],
kitchenLayout: null,
kitchenFeatureOptions: [],
keyRooms: null,
prompt: '',
refImageUrl: '',
modelType: 'Base'
},
{
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);
}
}
createHousePlanTask();
📤 Risposta#
Risposta di successo
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Campo | Tipo | Descrizione |
|---|---|---|
code | integer | 0 indica il successo |
message | string | Messaggio della risposta |
data | long | Identificatore univoco dell'attività per interrogare periodicamente i risultati |
2. Ottieni il risultato dell'attività#
Recupera lo stato e l'output correnti di un'attività di generazione di una pianta della casa creata in precedenza.
Endpoint
GET /api/v1/housePlan/result
Intestazioni della richiesta
| Intestazione | Obbligatoria | Descrizione |
|---|---|---|
APIKEY | ✅ Sì | La tua chiave di autenticazione API |
Parametri di interrogazione
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
taskId | long | ✅ Sì | Identificatore dell'attività restituito dall'endpoint di creazione dell'attività |
📥 Esempi di richiesta#
cURL
curl -X GET "https://api.ideal.house/api/v1/housePlan/result?taskId=1234567890123456789" \
-H "APIKEY: your_api_key_here"
Java (OkHttp)
import okhttp3.*;
import java.io.IOException;
public class HousePlanResultExample {
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/housePlan/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
# Poll until task is complete
while True:
response = requests.get(
f"{BASE_URL}/api/v1/housePlan/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", "Termination"):
break
time.sleep(3) # Poll every 3 seconds
if status == "Success":
output = result["output"]
print("Composite Result URL:", output["resultUrl"])
print("Result List:", output.get("resultList", []))
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 pollResult(taskId) {
const headers = { 'APIKEY': API_KEY };
while (true) {
const response = await axios.get(
`${BASE_URL}/api/v1/housePlan/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', 'Termination'].includes(status)) {
if (status === 'Success') {
console.log('Composite Result URL:', result.output.resultUrl);
console.log('Result List:', result.output.resultList);
} else {
console.log('Task ended with status:', status);
}
break;
}
// Wait 3 seconds before next poll
await new Promise(resolve => setTimeout(resolve, 3000));
}
}
pollResult(1234567890123456789n);
📤 Risposta#
📸 Nota: questa API genera esattamente 1 immagine composita risultante per attività riuscita. L'immagine combina piante 2D, prospetti esterni e rendering fotorealistici degli esterni in un'unica tavola di presentazione.
output.resultUrlcontiene la URL dell'immagine composita eoutput.resultListcontiene la stessa URL in un array di un solo elemento per compatibilità.
Risposta di successo (attività completata)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Success",
"waitNumber": 0,
"percentage": 100,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
},
"output": {
"resultUrl": "https://cdn.ideal.house/output/house_plan_composite.jpg",
"resultList": [
"https://cdn.ideal.house/output/house_plan_composite.jpg"
],
"width": 2560,
"height": 1440
}
}
}
Risposta (attività in elaborazione / in coda)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Processing",
"waitNumber": 1,
"percentage": 45,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"garageType": null,
"garageCapacity": null,
"basement": "None",
"roofType": null,
"outdoorSpaces": [],
"layoutConcept": null,
"bedroomAreaRanges": [
{ "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
{ "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
],
"bathroomLayouts": [
{ "name": "Bathroom 1", "layout": null }
],
"kitchenLayout": null,
"kitchenFeatureOptions": [],
"keyRooms": null,
"prompt": "",
"refImageUrl": "",
"modelType": "Base"
},
"output": null
}
}
Risposta (attività non riuscita)
{
"code": 0,
"message": "success",
"data": {
"id": 1234567890123456789,
"status": "Failed",
"waitNumber": 0,
"percentage": 0,
"input": {
"style": "Barndominium",
"stories": "2",
"bedrooms": "2",
"bathrooms": "1",
"totalArea": "150-200 m²",
"garageEnabled": false,
"basement": "None",
"modelType": "Base"
},
"output": null
}
}
Campi della risposta
| Campo | Tipo | Descrizione |
|---|---|---|
id | long | Identificatore univoco dell'attività |
status | string | Stato corrente dell'attività (vedi Stato dell'attività) |
waitNumber | integer | Numero di attività precedenti in coda (0 significa attualmente in elaborazione) |
percentage | integer | Percentuale di completamento dell'attività (0–100) |
input | object | Parametri di input originali dell'attività |
input.style | string | Stile architettonico |
input.totalArea | string | Intervallo della superficie totale |
input.stories | string | Numero di piani dell'edificio |
input.bedrooms | string | Numero di camere da letto |
input.bathrooms | string | Numero di bagni |
input.garageEnabled | boolean | Se è stata richiesta un'autorimessa |
input.garageType | string / null | Tipo di autorimessa |
input.garageCapacity | string / null | Numero di posti nell'autorimessa |
input.basement | string | Tipo di seminterrato |
input.roofType | string | Tipo di tetto |
input.outdoorSpaces | array<string> | Spazi esterni |
input.layoutConcept | string | Concezione generale della disposizione |
input.bedroomAreaRanges | array<object> | Intervalli di superficie delle camere da letto |
input.bathroomLayouts | array<object> | Selezioni della disposizione dei bagni |
input.kitchenLayout | string | Stile della disposizione della cucina |
input.kitchenFeatureOptions | array<string> | Caratteristiche facoltative della cucina |
input.keyRooms | string | Stanze speciali principali (separate da virgole) |
input.prompt | string | Prompt testuale personalizzato (se fornito) |
input.refImageUrl | string | URL dell'immagine di riferimento (se fornita) |
input.modelType | string | Tipo di modello usato |
output | object | Risultato della generazione (disponibile soltanto quando status è Success) |
output.resultUrl | string | URL della tavola di presentazione composita generata per la pianta della casa |
output.resultList | array<string> | URLs delle immagini risultanti generate. Per la pianta della casa, normalmente è un array di un solo elemento contenente la stessa URL di output.resultUrl |
output.width | integer | Larghezza dell'output in pixel |
output.height | integer | Altezza dell'output in pixel |
📊 Stato dell'attività#
| Stato | Descrizione |
|---|---|
Unprocessed | L'attività è stata creata ma non è ancora iniziata |
Processing | L'attività è attualmente in elaborazione |
Success | L'attività è stata completata correttamente — l'output è disponibile |
Failed | L'attività non è riuscita a causa di un errore |
Termination | L'attività è stata interrotta o terminata |
Interroga lo stato ogni 3-5 secondi. Consulta i Limiti delle attività API.
❌ Risposte di errore#
Tutte le risposte di errore condividono la stessa struttura JSON:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
Riferimento dei codici di errore#
| Codice | Nome | Descrizione | Azione suggerita |
|---|---|---|---|
1001 | FAILED | Richiesta non riuscita (errore generico) | Controlla il campo message per i dettagli specifici dell'errore |
1003 | INTERNAL_ERROR | Errore interno del server | Riprova dopo una breve attesa; contatta l'assistenza se il problema persiste |
1011 | PARAM_ERROR | Errore nei parametri della richiesta | Verifica che tutti i parametri obbligatori siano forniti e formattati correttamente |
5002 | API_KEY_INVALID | Chiave API non valida o mancante | Assicurati che l'intestazione APIKEY sia presente e che il valore sia corretto |
9010 | SCAN_TEXT_ERROR | Il prompt testuale non ha superato la verifica dei contenuti | Modifica il prompt per rimuovere eventuali contenuti sensibili o vietati |
9038 | PROHIBITED_CONTENT | L'immagine generata contiene contenuti vietati | Modifica prompt/stile/input e riprova |
9051 | COINS_NOT_ENOUGH | Monete / crediti insufficienti | Ricarica i crediti dell'account e riprova |
📄 Per l'elenco completo dei codici di errore API comuni, consulta il Riferimento dei codici di errore.