Ideal House
Pular para o conteúdo

Documentação da API de geração de projetos de casas#

URL Base: https://api.ideal.house
Versão: v1
Atualizado: 2026-06-12


📖 Visão Geral#

A API de geração de projetos de casas permite criar um quadro de apresentação de planta de casa gerado por IA com base em estilo arquitetônico, área, configuração estrutural e preferências de layout interno. Após a geração bem-sucedida, a API produz exatamente 1 imagem composta de resultado por tarefa. A imagem contém plantas baixas 2D coordenadas, elevações externas e renderizações fotorealísticas de fachadas em um único quadro de apresentação. O resultado é armazenado em output.resultUrl e também incluído como o único item em output.resultList. O fluxo é assíncrono e envolve duas etapas:

  1. Criar uma tarefa — Envie os parâmetros da sua planta de casa e receba um taskId.
  2. Consultar resultados — Use o taskId para consultar o status da tarefa e recuperar as imagens geradas.

🔐 Autenticação#

Todas as requisições da API devem ser autenticadas usando uma Chave de API.

Inclua sua Chave de API no cabeçalho da requisição:

CabeçalhoValor
APIKEYyour_api_key_here

⚠️ Mantenha sua Chave de API segura. Não a exponha em código do lado do cliente ou repositórios públicos.


💰 Dedução de Créditos#

[!WARNING] 🪙 Os créditos são deduzidos com base no modelType selecionado após a criação bem-sucedida da tarefa. Se a tarefa eventualmente falhar, os créditos deduzidos serão automaticamente reembolsados na sua conta.
Créditos insuficientes retornarão o código de erro 9051. 📄 Consulte Referência de Dedução de Créditos.

Modelo (modelType)Créditos Deduzidos
Base10 créditos
Pro20 créditos

📌 Endpoints da API#


1. Criar Tarefa de Planta de Casa#

Cria uma nova tarefa de geração de planta de casa por IA e retorna um taskId único para consulta.

Endpoint

Texto simples
POST /api/v1/housePlan/generate

Cabeçalhos de Requisição

CabeçalhoObrigatórioDescrição
APIKEY✅ SimSua chave de autenticação de API
Content-Type✅ Simapplication/json

Corpo da Requisição

CampoTipoObrigatórioDescriçãoPadrão
stylestring / null✅ SimNome em inglês do estilo arquitetônico. Consulte Opções de EstiloBarndominium
storiesstring✅ SimNúmero de pavimentos. Enum: 1, 2, 3+2
bedroomsstring✅ SimNúmero de quartos. Enum: 1, 2, 3, 4, 5+2
bathroomsstring✅ SimNúmero de banheiros. Enum: 1, 1.5, 2, 2.5, 3, 3.5, 4+1
totalAreastring✅ SimFaixa de área total no formato min-max unit. Consulte Opções de Área Total150-200 m²
garageEnabledboolean✅ SimSe deve incluir garagemfalse
garageTypestring / null⚠️ CondicionalObrigatório quando garageEnabled=true. Consulte Opções de Tipo de Garagemnull
garageCapacitystring / null⚠️ CondicionalObrigatório quando garageEnabled=true. Consulte Capacidade da Garagemnull
basementstring✅ SimTipo de porão. Consulte Opções de PorãoNone
roofTypestring / null❌ NãoTipo de estrutura do telhado. Consulte Opções de Tipo de Telhadonull
outdoorSpacesarray<string>❌ NãoÁreas externas. Consulte Opções de Espaços Externos[]
layoutConceptstring / null❌ NãoConceito geral de layout interno. Consulte Opções de Conceito de Layoutnull
bedroomAreaRangesarray<object>✅ SimFaixas de área dos quartos. O comprimento deve corresponder à quantidade de quartos. Consulte Faixas de Área dos QuartosVer exemplo
bathroomLayoutsarray<object>✅ SimSeleções de layout dos banheiros. O comprimento deve ser Math.floor(bathrooms). Consulte Layouts de BanheiroVer exemplo
kitchenLayoutstring / null❌ NãoLayout da cozinha. Consulte Opções de Cozinhanull
kitchenFeatureOptionsarray<string>❌ NãoRecursos opcionais da cozinha. Consulte Opções de Cozinha[]
keyRoomsstring / null❌ NãoAmbientes especiais unidos por vírgula e espaço. Consulte Opções de Ambientes Principaisnull
promptstring❌ NãoPrompt de texto personalizado para orientar adicionalmente a geração""
refImageUrlstring❌ NãoURL de uma imagem de referência da casa para orientar o estilo""
modelTypestring✅ SimTipo de qualidade do modelo. Enum: Base, Pro. ⚠️ O modo Flash não é suportadoBase

🖼️ Requisitos da imagem: A imagem de referência opcional deve usar JPG/JPEG, PNG ou WebP, não pode exceder 20 MB e deve ter dimensões de 128 × 128 px até 6,000 × 6,000 px (inclusivo). Imagens que excedem as dimensões máximas em pixels são automaticamente redimensionadas proporcionalmente para caber dentro de 6,000 × 6,000 px antes do processamento. Seu URL deve ser diretamente acessível pelo servidor da API.


🎨 Opções de Estilo#

ValorDescrição
BarndominiumPadrão. Casa híbrida de estilo celeiro metálico
CabinEstilo rústico de cabana de madeira
Cape CodEstilo simétrico clássico de New England
CoastalEstilo leve e arejado inspirado na praia
ColonialArquitetura colonial simétrica tradicional
ContemporaryLinhas limpas e materiais modernos
CraftsmanDetalhes artesanais com materiais naturais
FarmhouseEstilo rústico de fazenda rural
French CountryEstilo elegante provençal francês
MediterraneanReboco quente com elementos de terracota
Mid-Century ModernModernismo geométrico limpo das décadas de 1950–70
ModernDesign moderno minimalista plano/angular
RanchLayout extenso de um único pavimento
Shingle StyleRevestimento externo contínuo de pequenas peças de madeira sobrepostas
SouthwesternEstilo desértico inspirado em adobe
TransitionalMistura de tradicional e contemporâneo
TudorEstilo inglês medieval com estrutura de enxaimel
VictorianEstilo decorativo ornado do século 19

📐 Opções de Área Total#

O campo totalArea usa o formato min-max unit. Valores métricos usam ; valores imperiais usam ft². O valor mínimo deve ser menor que o máximo em pelo menos um passo.

UnidadeMínimoMáximoPassoExemplo
5050010150-200 m²
ft²50050001001500-2000 ft²

🏠 Opções de Tipo de Telhado#

ValorDescrição
Gable roofTelhado triangular pontiagudo clássico
Hip roofInclinado em todos os quatro lados
Flat roofTelhado plano com inclinação mínima
Pitched roofTelhado geralmente inclinado

🏗️ Opções de Porão#

ValorDescrição
NoneSem porão
PartialPorão parcial
FullPorão completo

🚗 Opções de Tipo de Garagem#

garageType é necessário apenas quando garageEnabled=true; caso contrário, envie null.

ValorDescrição
DetachedGaragem independente
Front EntryEntrada da garagem voltada para a frente
Side EntryEntrada da garagem voltada para o lado
Rear EntryEntrada da garagem voltada para a parte traseira

🚗 Capacidade da Garagem#

garageCapacity é necessário apenas quando garageEnabled=true; caso contrário, envie null.

ValorDescrição
1Garagem para um carro
2Garagem para dois carros
3+Três ou mais vagas para carros

🌿 Opções de Espaços Externos#

O campo outdoorSpaces aceita um array dos seguintes valores.

ValorDescrição
Front porchVaranda coberta na entrada frontal
Covered patioÁrea de pátio externo coberta
DeckDeck de madeira ou composto
BalconyPlataforma externa elevada
CourtyardQuintal externo fechado ou semi-fechado
BreezewayCorredor coberto conectando estruturas
Outdoor KitchenÁrea externa de preparo e refeição

Exemplo

Texto simples
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]

🏛️ Opções de Conceito de Layout#

ValorDescrição
Open ConceptEspaços de convivência abertos e conectados
TraditionalAmbientes separados com limites definidos
Split-LevelNíveis de piso deslocados entre as áreas

🛏️ Faixas de Área dos Quartos#

O campo bedroomAreaRanges deve ser um array cujo comprimento corresponda à contagem de bedrooms. Cada item usa a seguinte estrutura:

CampoTipoDescrição
namestringNome de exibição do quarto, por exemplo Room 1 (Master)
minAreastringÁrea mínima do quarto. Deve ser uma string numérica não negativa
maxAreastringÁrea máxima do quarto. Deve ser maior ou igual a minArea
unitstringUnidade de área. Enum: , ft²

Exemplo padrão para bedrooms="2"

json
[
  { "name": "Room 1 (Master)", "minArea": "12", "maxArea": "18", "unit": "m²" },
  { "name": "Room 2", "minArea": "10", "maxArea": "14", "unit": "m²" }
]

🛁 Layouts de Banheiro#

O campo bathroomLayouts deve ser um array cujo comprimento seja Math.floor(bathrooms). Por exemplo, bathrooms="2.5" requer 2 objetos de layout de banheiro.

CampoTipoDescrição
namestringNome de exibição do banheiro, por exemplo Bathroom 1
layoutstring / nullEnum: With Wet & Dry Separation, Without Separation ou null

Exemplo padrão para bathrooms="1"

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

🍳 Opções de Cozinha#

Layout da Cozinha

ValorDescrição
Open KitchenCozinha aberta conectada à sala de estar/jantar
Closed KitchenEspaço de cozinha separado e fechado

Opções de Recursos da Cozinha

ValorDescrição
Eating BarBarra de refeições / balcão com assentos
Kitchen IslandIlha de cozinha
Breakfast NookCantinho do café da manhã

🚪 Opções de Ambientes Principais#

O campo keyRooms aceita um ou mais dos seguintes valores. Ao selecionar várias opções, una-as com uma vírgula (,).

ValorDescrição
Home OfficeHome office ou estudo dedicado
Bonus RoomSala bônus versátil para múltiplos propósitos
Media RoomHome theater ou centro de mídia
MudroomSala de entrada para equipamentos ao ar livre
Laundry RoomEspaço dedicado para lavanderia
Guest SuiteSuíte de quarto de hóspedes independente

Exemplo

Texto simples
"keyRooms": "Home Office, Media Room, Guest Suite"

Tipos de Modelo

ValorDescrição
BasePadrão. Velocidade e qualidade equilibradas. Gera um quadro de apresentação composto de alta resolução
ProSaída de maior qualidade e maior resolução, mais lenta

⚠️ Nota: O modo Flash não está disponível para esta API. Somente Base e Pro são suportados.


📥 Exemplos de Requisição#

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();

📤 Resposta#

Resposta de Sucesso

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
CampoTipoDescrição
codeinteger0 indica sucesso
messagestringMensagem de resposta
datalongO ID único da tarefa para consulta dos resultados

2. Obter Resultado da Tarefa#

Recupera o status atual e a saída de uma tarefa de planta de casa criada anteriormente.

Endpoint

Texto simples
GET /api/v1/housePlan/result

Cabeçalhos de Requisição

CabeçalhoObrigatórioDescrição
APIKEY✅ SimSua chave de autenticação de API

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
taskIdlong✅ SimO ID da tarefa retornado no endpoint de criação

📥 Exemplos de Requisição#

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);

📤 Resposta#

📸 Nota: Esta API gera exatamente 1 imagem composta de resultado por tarefa bem-sucedida. A imagem combina plantas baixas 2D, elevações externas e renderizações fotorealísticas de fachadas em um único quadro de apresentação. O output.resultUrl contém o URL da imagem composta, e o output.resultList contém o mesmo URL como um array de um único item para compatibilidade.

Resposta de Sucesso (Tarefa Concluída)

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
    }
  }
}

Resposta (Processamento da Tarefa / Em Fila)

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
  }
}

Resposta (Tarefa Falhou)

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
  }
}

Campos da Resposta

CampoTipoDescrição
idlongIdentificador único da tarefa
statusstringStatus atual da tarefa (consulte Status da Tarefa)
waitNumberintegerNúmero de tarefas à frente na fila (0 significa processando no momento)
percentageintegerPercentual de conclusão da tarefa (0–100)
inputobjectOs parâmetros de entrada originais da tarefa
input.stylestringEstilo arquitetônico
input.totalAreastringFaixa de área total
input.storiesstringNúmero de pavimentos
input.bedroomsstringNúmero de quartos
input.bathroomsstringNúmero de banheiros
input.garageEnabledbooleanSe uma garagem foi solicitada
input.garageTypestring / nullTipo de garagem
input.garageCapacitystring / nullNúmero de vagas da garagem
input.basementstringTipo de porão
input.roofTypestringTipo de telhado
input.outdoorSpacesarray<string>Espaços externos
input.layoutConceptstringConceito geral de layout
input.bedroomAreaRangesarray<object>Faixas de área dos quartos
input.bathroomLayoutsarray<object>Seleções de layout dos banheiros
input.kitchenLayoutstringEstilo de layout da cozinha
input.kitchenFeatureOptionsarray<string>Recursos opcionais da cozinha
input.keyRoomsstringAmbientes principais especiais (separados por vírgula)
input.promptstringPrompt de texto personalizado (se fornecido)
input.refImageUrlstringURL da imagem de referência (se fornecido)
input.modelTypestringTipo de modelo usado
outputobjectResultado da geração (disponível apenas quando status é Success)
output.resultUrlstringURL para o quadro de apresentação composto de planta de casa gerado
output.resultListarray<string>URLs para imagens de resultado geradas. Para Planta de Casa, este é normalmente um array de um único item contendo o mesmo URL que output.resultUrl
output.widthintegerLargura de saída em pixels
output.heightintegerAltura de saída em pixels

📊 Status da Tarefa#

StatusDescrição
UnprocessedA tarefa foi criada mas ainda não foi iniciada
ProcessingA tarefa está sendo processada no momento
SuccessTarefa concluída com sucesso — a saída está disponível
FailedA tarefa falhou devido a um erro
TerminationA tarefa foi interrompida ou encerrada

Consulte a cada 3-5 segundos. Consulte Limite de Tarefas da API.


❌ Respostas de Erro#

Todas as respostas de erro compartilham a mesma estrutura JSON:

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

Referência de Códigos de Erro#

CódigoNomeDescriçãoAção Sugerida
1001FAILEDFalha na requisição (erro genérico)Verifique o campo message para detalhes específicos do erro
1003INTERNAL_ERRORErro interno do servidorTente novamente após curto atraso; entre em contato com o suporte se persistir
1011PARAM_ERRORErro no parâmetro da requisiçãoVerifique se todos os parâmetros obrigatórios foram fornecidos e formatados corretamente
5002API_KEY_INVALIDChave de API inválida ou ausenteCertifique-se de que o cabeçalho APIKEY está presente e o valor está correto
9010SCAN_TEXT_ERRORO prompt de texto não passou pela análise de conteúdoModifique o prompt para remover qualquer conteúdo sensível ou proibido
9038PROHIBITED_CONTENTImagem de saída gerada contém conteúdo proibidoAjuste o prompt/estilo/inputs e tente novamente
9051COINS_NOT_ENOUGHMoedas/créditos insuficientesRecarregue os créditos da sua conta e tente novamente

📄 Para a lista completa de códigos de erro comuns da API, consulte a Referência de Códigos de Erro.