Ideal House
Passa al contenuto

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:

  1. Crea un'attività — Invia i parametri della pianta della casa e ricevi un taskId.
  2. Interroga periodicamente i risultati — Usa il taskId per 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:

IntestazioneValore
APIKEYyour_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 modelType selezionato 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 errore 9051. 📄 Consulta il Riferimento delle detrazioni dei crediti.

Modello (modelType)Crediti detratti
Base10 crediti
Pro20 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

Testo semplice
POST /api/v1/housePlan/generate

Intestazioni della richiesta

IntestazioneObbligatoriaDescrizione
APIKEY✅ SìLa tua chiave di autenticazione API
Content-Type✅ Sìapplication/json

Corpo della richiesta

CampoTipoObbligatorioDescrizioneValore predefinito
stylestring / null✅ SìNome inglese dello stile architettonico. Vedi Opzioni di stileBarndominium
storiesstring✅ SìNumero di piani dell'edificio. Enumerazione: 1, 2, 3+2
bedroomsstring✅ SìNumero di camere da letto. Enumerazione: 1, 2, 3, 4, 5+2
bathroomsstring✅ SìNumero di bagni. Enumerazione: 1, 1.5, 2, 2.5, 3, 3.5, 4+1
totalAreastring✅ SìIntervallo della superficie totale nel formato min-max unit. Vedi Opzioni della superficie totale150-200 m²
garageEnabledboolean✅ SìSe includere un'autorimessafalse
garageTypestring / null⚠️ CondizionaleObbligatorio quando garageEnabled=true. Vedi Opzioni del tipo di autorimessanull
garageCapacitystring / null⚠️ CondizionaleObbligatorio quando garageEnabled=true. Vedi Capienza dell'autorimessanull
basementstring✅ SìTipo di seminterrato. Vedi Opzioni del seminterratoNone
roofTypestring / null❌ NoTipo di struttura del tetto. Vedi Opzioni del tipo di tettonull
outdoorSpacesarray<string>❌ NoAree esterne. Vedi Opzioni degli spazi esterni[]
layoutConceptstring / null❌ NoConcezione generale della disposizione degli interni. Vedi Opzioni della concezione distributivanull
bedroomAreaRangesarray<object>✅ SìIntervalli di superficie delle camere da letto. La lunghezza deve corrispondere al numero di camere. Vedi Intervalli di superficie delle camere da lettoVedi esempio
bathroomLayoutsarray<object>✅ SìSelezioni della disposizione dei bagni. La lunghezza deve essere Math.floor(bathrooms). Vedi Disposizioni dei bagniVedi esempio
kitchenLayoutstring / null❌ NoDisposizione della cucina. Vedi Opzioni della cucinanull
kitchenFeatureOptionsarray<string>❌ NoCaratteristiche facoltative della cucina. Vedi Opzioni della cucina[]
keyRoomsstring / null❌ NoStanze speciali unite da virgola e spazio. Vedi Opzioni delle stanze principalinull
promptstring❌ NoPrompt testuale personalizzato per orientare ulteriormente la generazione""
refImageUrlstring❌ NoURL di un'immagine di riferimento della casa per orientare lo stile""
modelTypestring✅ SìTipo di qualità del modello. Enumerazione: Base, Pro. ⚠️ La modalità Flash non è supportataBase

🖼️ 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#

ValoreDescrizione
BarndominiumPredefinito. Abitazione ibrida in metallo in stile fienile
CabinStile rustico di baita in legno
Cape CodStile classico simmetrico del New England
CoastalStile luminoso e arioso ispirato alla spiaggia
ColonialArchitettura coloniale tradizionale simmetrica
ContemporaryLinee pulite e materiali moderni
CraftsmanDettagli artigianali con materiali naturali
FarmhouseStile rustico di casa di campagna
French CountryElegante stile provinciale francese
MediterraneanIntonaco dai toni caldi con elementi in terracotta
Mid-Century ModernModernismo geometrico essenziale degli anni 1950–70
ModernDesign moderno minimalista con superfici piane e forme angolari
RanchDisposizione estesa su un solo piano
Shingle StyleRivestimento esterno continuo in scandole di legno
SouthwesternStile desertico ispirato alle costruzioni in terra cruda
TransitionalFusione di tradizione e contemporaneità
TudorStile inglese medievale a graticcio
VictorianStile decorativo elaborato del 19° secolo

📐 Opzioni della superficie totale#

Il campo totalArea usa il formato min-max unit. I valori metrici usano ; quelli imperiali usano ft². Il valore minimo deve essere inferiore al massimo di almeno un incremento.

UnitàMinimoMassimoIncrementoEsempio
5050010150-200 m²
ft²50050001001500-2000 ft²

🏠 Opzioni del tipo di tetto#

ValoreDescrizione
Gable roofClassico tetto a due falde con profilo triangolare
Hip roofFalde su tutti e quattro i lati
Flat roofTetto piano con pendenza minima
Pitched roofTetto generalmente a forte pendenza

🏗️ Opzioni del seminterrato#

ValoreDescrizione
NoneNessun seminterrato
PartialSeminterrato parziale
FullSeminterrato completo

🚗 Opzioni del tipo di autorimessa#

garageType è obbligatorio soltanto quando garageEnabled=true; altrimenti invia null.

ValoreDescrizione
DetachedAutorimessa separata
Front EntryIngresso dell'autorimessa rivolto verso il fronte
Side EntryIngresso dell'autorimessa rivolto verso il lato
Rear EntryIngresso dell'autorimessa rivolto verso il retro

🚗 Capienza dell'autorimessa#

garageCapacity è obbligatorio soltanto quando garageEnabled=true; altrimenti invia null.

ValoreDescrizione
1Autorimessa per un'auto
2Autorimessa per due auto
3+Tre o più posti auto

🌿 Opzioni degli spazi esterni#

Il campo outdoorSpaces accetta un array dei seguenti valori.

ValoreDescrizione
Front porchPortico d'ingresso coperto sul fronte
Covered patioArea esterna a patio coperto
DeckPedana in legno o materiale composito
BalconyPiattaforma esterna sopraelevata
CourtyardCortile esterno chiuso o semichiuso
BreezewayPassaggio coperto che collega strutture
Outdoor KitchenArea esterna per cucinare e mangiare

Esempio

Testo semplice
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]

🏛️ Opzioni della concezione distributiva#

ValoreDescrizione
Open ConceptSpazi abitativi collegati a pianta aperta
TraditionalStanze separate con confini definiti
Split-LevelLivelli 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:

CampoTipoDescrizione
namestringNome visualizzato della camera da letto, ad esempio Room 1 (Master)
minAreastringSuperficie minima della camera da letto. Deve essere una stringa numerica non negativa
maxAreastringSuperficie massima della camera da letto. Deve essere maggiore o uguale a minArea
unitstringUnità di superficie. Enumerazione: , ft²

Esempio predefinito per bedrooms="2"

json
[
  { "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.

CampoTipoDescrizione
namestringNome visualizzato del bagno, ad esempio Bathroom 1
layoutstring / nullEnumerazione: With Wet & Dry Separation, Without Separation o null

Esempio predefinito per bathrooms="1"

json
[
  { "name": "Bathroom 1", "layout": null }
]

🍳 Opzioni della cucina#

Disposizione della cucina

ValoreDescrizione
Open KitchenCucina aperta collegata alla zona soggiorno/pranzo
Closed KitchenSpazio cucina chiuso e separato

Opzioni delle caratteristiche della cucina

ValoreDescrizione
Eating BarBancone per mangiare / posti a sedere al banco
Kitchen IslandIsola della cucina
Breakfast NookAngolo colazione

🚪 Opzioni delle stanze principali#

Il campo keyRooms accetta uno o più dei seguenti valori. Quando selezioni più opzioni, uniscile con una virgola (,).

ValoreDescrizione
Home OfficeUfficio domestico o studio dedicato
Bonus RoomStanza aggiuntiva flessibile e multifunzionale
Media RoomSala cinema domestica o centro multimediale
MudroomLocale d'ingresso per attrezzature e abiti da esterno
Laundry RoomSpazio lavanderia dedicato
Guest SuiteSuite indipendente per ospiti

Esempio

Testo semplice
"keyRooms": "Home Office, Media Room, Guest Suite"

Tipi di modello

ValoreDescrizione
BasePredefinito. Equilibrio tra velocità e qualità. Genera una tavola di presentazione composita ad alta risoluzione
ProQualità e risoluzione dell'output maggiori, più lento

⚠️ Nota: la modalità Flash non è disponibile per questa API. Sono supportati soltanto Base e Pro.


📥 Esempi di richiesta#

cURL
bash
# 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)
java
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)
python
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)
javascript
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

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
CampoTipoDescrizione
codeinteger0 indica il successo
messagestringMessaggio della risposta
datalongIdentificatore 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

Testo semplice
GET /api/v1/housePlan/result

Intestazioni della richiesta

IntestazioneObbligatoriaDescrizione
APIKEY✅ SìLa tua chiave di autenticazione API

Parametri di interrogazione

ParametroTipoObbligatorioDescrizione
taskIdlong✅ SìIdentificatore dell'attività restituito dall'endpoint di creazione dell'attività

📥 Esempi di richiesta#

cURL
bash
curl -X GET "https://api.ideal.house/api/v1/housePlan/result?taskId=1234567890123456789" \
  -H "APIKEY: your_api_key_here"
Java (OkHttp)
java
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)
python
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)
javascript
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.resultUrl contiene la URL dell'immagine composita e output.resultList contiene la stessa URL in un array di un solo elemento per compatibilità.

Risposta di successo (attività completata)

json
{
  "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)

json
{
  "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)

json
{
  "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

CampoTipoDescrizione
idlongIdentificatore univoco dell'attività
statusstringStato corrente dell'attività (vedi Stato dell'attività)
waitNumberintegerNumero di attività precedenti in coda (0 significa attualmente in elaborazione)
percentageintegerPercentuale di completamento dell'attività (0–100)
inputobjectParametri di input originali dell'attività
input.stylestringStile architettonico
input.totalAreastringIntervallo della superficie totale
input.storiesstringNumero di piani dell'edificio
input.bedroomsstringNumero di camere da letto
input.bathroomsstringNumero di bagni
input.garageEnabledbooleanSe è stata richiesta un'autorimessa
input.garageTypestring / nullTipo di autorimessa
input.garageCapacitystring / nullNumero di posti nell'autorimessa
input.basementstringTipo di seminterrato
input.roofTypestringTipo di tetto
input.outdoorSpacesarray<string>Spazi esterni
input.layoutConceptstringConcezione generale della disposizione
input.bedroomAreaRangesarray<object>Intervalli di superficie delle camere da letto
input.bathroomLayoutsarray<object>Selezioni della disposizione dei bagni
input.kitchenLayoutstringStile della disposizione della cucina
input.kitchenFeatureOptionsarray<string>Caratteristiche facoltative della cucina
input.keyRoomsstringStanze speciali principali (separate da virgole)
input.promptstringPrompt testuale personalizzato (se fornito)
input.refImageUrlstringURL dell'immagine di riferimento (se fornita)
input.modelTypestringTipo di modello usato
outputobjectRisultato della generazione (disponibile soltanto quando status è Success)
output.resultUrlstringURL della tavola di presentazione composita generata per la pianta della casa
output.resultListarray<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.widthintegerLarghezza dell'output in pixel
output.heightintegerAltezza dell'output in pixel

📊 Stato dell'attività#

StatoDescrizione
UnprocessedL'attività è stata creata ma non è ancora iniziata
ProcessingL'attività è attualmente in elaborazione
SuccessL'attività è stata completata correttamente — l'output è disponibile
FailedL'attività non è riuscita a causa di un errore
TerminationL'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:

json
{
  "code": 5002,
  "message": "Invalid API Key",
  "data": null
}

Riferimento dei codici di errore#

CodiceNomeDescrizioneAzione suggerita
1001FAILEDRichiesta non riuscita (errore generico)Controlla il campo message per i dettagli specifici dell'errore
1003INTERNAL_ERRORErrore interno del serverRiprova dopo una breve attesa; contatta l'assistenza se il problema persiste
1011PARAM_ERRORErrore nei parametri della richiestaVerifica che tutti i parametri obbligatori siano forniti e formattati correttamente
5002API_KEY_INVALIDChiave API non valida o mancanteAssicurati che l'intestazione APIKEY sia presente e che il valore sia corretto
9010SCAN_TEXT_ERRORIl prompt testuale non ha superato la verifica dei contenutiModifica il prompt per rimuovere eventuali contenuti sensibili o vietati
9038PROHIBITED_CONTENTL'immagine generata contiene contenuti vietatiModifica prompt/stile/input e riprova
9051COINS_NOT_ENOUGHMonete / crediti insufficientiRicarica i crediti dell'account e riprova

📄 Per l'elenco completo dei codici di errore API comuni, consulta il Riferimento dei codici di errore.