Ideal House
콘텐츠로 이동

주택 설계도 생성 API 문서#

기본 URL: https://api.ideal.house
버전: v1
갱신일: 2026-06-12


📖 개요#

주택 설계도 생성 API는 건축 스타일, 면적, 구조 구성 및 실내 배치 선호 사항을 바탕으로 AI가 생성한 주택 설계 프레젠테이션 보드를 만듭니다. 생성에 성공하면 API는 작업당 정확히 합성 결과 이미지 1개를 출력합니다. 하나의 프레젠테이션 보드에 서로 조화를 이루는 2D 평면도, 외관 입면도 및 사실적인 외관 렌더링이 포함됩니다. 결과는 output.resultUrl에 저장되고 output.resultList의 유일한 항목으로도 포함됩니다. 작업 흐름은 다음 두 단계의 비동기 방식입니다.

  1. 작업 생성 — 주택 설계도 매개변수를 제출하고 taskId를 받습니다.
  2. 결과 폴링taskId로 작업 상태를 조회하고 생성된 이미지를 가져옵니다.

🔐 인증#

모든 API 요청은 API 키로 인증해야 합니다.

요청 헤더에 API 키를 포함하세요.

헤더
APIKEYyour_api_key_here

⚠️ API 키를 안전하게 보관하세요. 클라이언트 측 코드 또는 공개 저장소에 노출하지 마세요.


💰 크레딧 차감#

[!WARNING] 🪙 작업이 성공적으로 생성되면 선택한 **modelType**에 따라 크레딧이 차감됩니다. 작업이 최종적으로 실패하면 차감된 크레딧은 계정으로 자동 환불됩니다.
크레딧이 부족하면 오류 코드 9051을 반환합니다. 📄 크레딧 차감 참조를 참고하세요.

모델 (modelType)차감 크레딧
Base10크레딧
Pro20크레딧

📌 API 엔드포인트#


1. 주택 설계도 작업 생성#

새 AI 주택 설계도 생성 작업을 만들고 폴링용 고유 taskId를 반환합니다.

엔드포인트

일반 텍스트
POST /api/v1/housePlan/generate

요청 헤더

헤더필수 여부설명
APIKEY✅ 예API 인증 키
Content-Type✅ 예application/json

요청 본문

필드유형필수 여부설명기본값
stylestring / null✅ 예건축 스타일의 영어 이름입니다. 스타일 옵션을 참고하세요.Barndominium
storiesstring✅ 예층수입니다. 열거형: 1, 2, 3+2
bedroomsstring✅ 예침실 수입니다. 열거형: 1, 2, 3, 4, 5+2
bathroomsstring✅ 예욕실 수입니다. 열거형: 1, 1.5, 2, 2.5, 3, 3.5, 4+1
totalAreastring✅ 예min-max unit 형식의 총면적 범위입니다. 총면적 옵션을 참고하세요.150-200 m²
garageEnabledboolean✅ 예차고 포함 여부false
garageTypestring / null⚠️ 조건부garageEnabled=true이면 필수입니다. 차고 유형 옵션을 참고하세요.null
garageCapacitystring / null⚠️ 조건부garageEnabled=true이면 필수입니다. 차고 수용 대수를 참고하세요.null
basementstring✅ 예지하실 유형입니다. 지하실 옵션을 참고하세요.None
roofTypestring / null❌ 아니요지붕 구조 유형입니다. 지붕 유형 옵션을 참고하세요.null
outdoorSpacesarray<string>❌ 아니요야외 공간입니다. 야외 공간 옵션을 참고하세요.[]
layoutConceptstring / null❌ 아니요전체 실내 배치 개념입니다. 배치 개념 옵션을 참고하세요.null
bedroomAreaRangesarray<object>✅ 예침실 면적 범위입니다. 길이는 침실 수와 같아야 합니다. 침실 면적 범위를 참고하세요.예제 참조
bathroomLayoutsarray<object>✅ 예욕실 배치 선택입니다. 길이는 Math.floor(bathrooms)여야 합니다. 욕실 배치를 참고하세요.예제 참조
kitchenLayoutstring / null❌ 아니요주방 배치입니다. 주방 옵션을 참고하세요.null
kitchenFeatureOptionsarray<string>❌ 아니요선택적 주방 기능입니다. 주방 옵션을 참고하세요.[]
keyRoomsstring / null❌ 아니요쉼표와 공백으로 구분한 특수 공간입니다. 주요 공간 옵션을 참고하세요.null
promptstring❌ 아니요생성을 추가로 유도하는 사용자 정의 텍스트 프롬프트""
refImageUrlstring❌ 아니요스타일을 유도하는 참조 주택 이미지 URL""
modelTypestring✅ 예모델 품질 유형입니다. 열거형: Base, Pro. ⚠️ Flash 모드는 지원하지 않습니다.Base

🖼️ 이미지 요건: 선택적 참조 이미지는 JPG/JPEG, PNG 또는 WebP여야 하며 20 MB 이하여야 합니다. 크기는 128 × 128 px부터 6,000 × 6,000 px까지 허용됩니다(경계값 포함). 최대 픽셀 크기를 초과하는 이미지는 처리 전에 6,000 × 6,000 px 안에 들어오도록 비율을 유지하여 자동 축소됩니다. URL은 API 서버에서 직접 접근할 수 있어야 합니다.


🎨 스타일 옵션#

설명
Barndominium기본값. 금속 헛간 스타일의 복합 주택
Cabin소박한 목조 오두막 스타일
Cape Cod전통적인 뉴잉글랜드 대칭 스타일
Coastal해변에서 영감을 받은 밝고 탁 트인 스타일
Colonial전통적인 대칭형 콜로니얼 건축
Contemporary깔끔한 선과 현대적인 재료
Craftsman천연 재료와 수공예 디테일
Farmhouse소박한 전원 농가 스타일
French Country우아한 프랑스 전원 스타일
Mediterranean따뜻한 느낌의 회벽과 테라코타 요소
Mid-Century Modern1950년대–70년대의 깔끔한 기하학적 모더니즘
Modern미니멀한 평면적/각진 현대 디자인
Ranch넓게 펼쳐진 단층 배치
Shingle Style목재 슁글이 연속적으로 덮인 외관
Southwestern어도비 흙벽돌에서 영감을 받은 사막 스타일
Transitional전통과 현대의 조화
Tudor목골 구조가 드러나는 중세 영국 스타일
Victorian화려한 19세기 장식 스타일

📐 총면적 옵션#

totalArea 필드는 min-max unit 형식을 사용합니다. 미터법 값에는 , 영미 단위 값에는 ft²를 사용합니다. 최소값은 최대값보다 최소 한 단계 이상 작아야 합니다.

단위최소값최대값단계
5050010150-200 m²
ft²50050001001500-2000 ft²

🏠 지붕 유형 옵션#

설명
Gable roof전통적인 삼각형 박공지붕
Hip roof네 면 모두 경사진 모임지붕
Flat roof경사가 매우 작은 평지붕
Pitched roof일반적인 급경사 지붕

🏗️ 지하실 옵션#

설명
None지하실 없음
Partial건물 일부 면적 아래에만 있는 지하실
Full건물 전체 면적 아래의 지하실

🚗 차고 유형 옵션#

garageTypegarageEnabled=true일 때만 필수이며 그 외에는 null을 보내세요.

설명
Detached독립형 차고
Front Entry출입구가 전면을 향하는 차고
Side Entry출입구가 측면을 향하는 차고
Rear Entry출입구가 후면을 향하는 차고

🚗 차고 수용 대수#

garageCapacitygarageEnabled=true일 때만 필수이며 그 외에는 null을 보내세요.

설명
1차량 한 대용 차고
2차량 두 대용 차고
3+차량 세 대 이상의 주차 공간

🌿 야외 공간 옵션#

outdoorSpaces 필드는 다음 값의 배열을 허용합니다.

설명
Front porch전면의 지붕 있는 현관 포치
Covered patio지붕 있는 야외 파티오 공간
Deck목재 또는 합성재 데크
Balcony지면보다 높은 야외 플랫폼
Courtyard둘러싸였거나 일부가 둘러싸인 야외 마당
Breezeway건물을 연결하는 지붕 있는 통로
Outdoor Kitchen야외 조리 및 식사 공간

예제

일반 텍스트
"outdoorSpaces": ["Front porch", "Deck", "Balcony"]

🏛️ 배치 개념 옵션#

설명
Open Concept생활 공간들이 연결된 개방형 배치
Traditional명확한 경계로 구분된 방
Split-Level구역 사이의 바닥 높이가 엇갈리는 구조

🛏️ 침실 면적 범위#

bedroomAreaRanges 필드는 길이가 bedrooms 수와 같은 배열이어야 합니다. 각 항목의 형식은 다음과 같습니다.

필드유형설명
namestring침실 표시 이름입니다. 예: Room 1 (Master)
minAreastring최소 침실 면적. 음수가 아닌 숫자 문자열이어야 함
maxAreastring최대 침실 면적. minArea 이상이어야 함
unitstring면적 단위. 열거형: , ft²

bedrooms="2"의 기본 예제

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

🛁 욕실 배치#

bathroomLayouts 필드는 길이가 Math.floor(bathrooms)인 배열이어야 합니다. 예를 들어 bathrooms="2.5"에는 욕실 배치 객체 2개가 필요합니다.

필드유형설명
namestring욕실 표시 이름입니다. 예: Bathroom 1
layoutstring / null열거형: With Wet & Dry Separation, Without Separation 또는 null

bathrooms="1"의 기본 예제

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

🍳 주방 옵션#

주방 배치

설명
Open Kitchen거실/식당과 연결된 개방형 주방
Closed Kitchen분리되어 둘러싸인 주방 공간

주방 기능 옵션

설명
Eating Bar식사용 바 / 카운터 좌석
Kitchen Island주방 아일랜드
Breakfast Nook아침 식사용 작은 공간

🚪 주요 공간 옵션#

keyRooms 필드는 다음 값 중 하나 이상을 허용합니다. 여러 옵션을 선택하면 **쉼표 (,)**로 구분하세요.

설명
Home Office전용 홈 오피스 또는 서재
Bonus Room유연하게 활용할 수 있는 다목적 여유 공간
Media Room홈시어터 또는 미디어실
Mudroom야외 용품을 보관하는 현관 공간
Laundry Room전용 세탁 공간
Guest Suite독립된 손님용 침실 스위트

예제

일반 텍스트
"keyRooms": "Home Office, Media Room, Guest Suite"

모델 유형

설명
Base기본값. 속도와 품질의 균형. 고해상도 합성 프레젠테이션 보드 생성
Pro더 높은 품질 및 해상도 출력. 속도는 더 느림

⚠️ 참고: 이 API에서는 Flash 모드를 사용할 수 없습니다. BasePro만 지원합니다.


📥 요청 예제#

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

📤 응답#

성공 응답

json
{
  "code": 0,
  "message": "success",
  "data": 1234567890123456789
}
필드유형설명
codeinteger0은 성공을 의미함
messagestring응답 메시지
datalong결과 폴링용 고유 작업 ID

2. 작업 결과 조회#

이전에 생성한 주택 설계도 작업의 현재 상태와 출력을 조회합니다.

엔드포인트

일반 텍스트
GET /api/v1/housePlan/result

요청 헤더

헤더필수 여부설명
APIKEY✅ 예API 인증 키

쿼리 매개변수

매개변수유형필수 여부설명
taskIdlong✅ 예작업 생성 엔드포인트가 반환한 작업 ID

📥 요청 예제#

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

📤 응답#

📸 참고: 이 API는 성공한 작업당 정확히 합성 결과 이미지 1개를 생성합니다. 하나의 프레젠테이션 보드에 2D 평면도, 외관 입면도 및 사실적인 외관 렌더링을 결합합니다. output.resultUrl에는 합성 이미지 URL이 포함되고, output.resultList에는 호환성을 위해 동일한 URL이 단일 항목 배열로 포함됩니다.

성공 응답 (작업 완료)

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

응답 (작업 처리 중 / 대기열에 있음)

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

응답 (작업 실패)

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

응답 필드

필드유형설명
idlong작업 고유 식별자
statusstring현재 작업 상태 (작업 상태 참조)
waitNumberinteger대기열에서 앞에 있는 작업 수 (0은 현재 처리 중임을 의미함)
percentageinteger작업 완료 비율 (0–100)
inputobject작업의 원래 입력 매개변수
input.stylestring건축 스타일
input.totalAreastring총면적 범위
input.storiesstring층수
input.bedroomsstring침실 수
input.bathroomsstring욕실 수
input.garageEnabledboolean차고 요청 여부
input.garageTypestring / null차고 유형
input.garageCapacitystring / null차고 주차 대수
input.basementstring지하실 유형
input.roofTypestring지붕 유형
input.outdoorSpacesarray<string>야외 공간
input.layoutConceptstring전체 배치 개념
input.bedroomAreaRangesarray<object>침실 면적 범위
input.bathroomLayoutsarray<object>욕실 배치 선택
input.kitchenLayoutstring주방 배치 스타일
input.kitchenFeatureOptionsarray<string>선택적 주방 기능
input.keyRoomsstring주요 특수 공간 (쉼표로 구분)
input.promptstring사용자 정의 텍스트 프롬프트 (제공된 경우)
input.refImageUrlstring참조 이미지 URL (제공된 경우)
input.modelTypestring사용된 모델 유형
outputobject생성 결과 (statusSuccess일 때만 제공됨)
output.resultUrlstring생성된 합성 주택 설계 프레젠테이션 보드 URL
output.resultListarray<string>생성된 결과 이미지 URL 목록입니다. 주택 설계도에서는 보통 output.resultUrl과 같은 URL을 포함하는 단일 항목 배열입니다.
output.widthinteger출력 너비(픽셀)
output.heightinteger출력 높이(픽셀)

📊 작업 상태#

상태설명
Unprocessed작업이 생성되었지만 아직 시작되지 않음
Processing작업이 현재 처리 중
Success작업이 성공적으로 완료되어 출력 사용 가능
Failed오류로 작업이 실패함
Termination작업이 중단되거나 종료됨

3-5초마다 폴링하세요. API 작업 제한을 참고하세요.


❌ 오류 응답#

모든 오류 응답은 동일한 JSON 구조를 사용합니다.

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

오류 코드 참조#

코드이름설명권장 조치
1001FAILED요청 실패 (일반 오류)구체적인 오류 내용은 message 필드 확인
1003INTERNAL_ERROR내부 서버 오류잠시 후 재시도하고 계속 발생하면 지원팀에 문의
1011PARAM_ERROR요청 매개변수 오류모든 필수 매개변수가 제공되었으며 형식이 올바른지 검증
5002API_KEY_INVALID유효하지 않거나 누락된 API 키APIKEY 헤더가 있고 값이 올바른지 확인
9010SCAN_TEXT_ERROR텍스트 프롬프트가 콘텐츠 검토를 통과하지 못함민감하거나 금지된 콘텐츠를 제거하도록 프롬프트 수정
9038PROHIBITED_CONTENT생성된 출력 이미지에 금지된 콘텐츠가 포함됨프롬프트/스타일/입력을 조정하고 재시도
9051COINS_NOT_ENOUGH코인 / 크레딧 부족계정 크레딧을 충전하고 재시도

📄 전체 공통 API 오류 코드 목록은 오류 코드 참조를 참고하세요.