Документация API генерации планов домов#
Базовый URL:
https://api.ideal.house
Версия: v1
Обновлено: 2026-06-12
📖 Обзор#
API генерации планов домов создаёт с помощью ИИ презентационный лист проекта дома на основе архитектурного стиля, площади, конструктивных параметров и пожеланий по планировке интерьера. При успешной генерации API возвращает ровно 1 составное изображение результата на задачу. На одном презентационном листе объединены согласованные 2D-планы этажей, чертежи фасадов и фотореалистичные визуализации экстерьера. Результат сохраняется в output.resultUrl и также включается как единственный элемент в output.resultList. Процесс асинхронный и состоит из двух шагов:
- Создание задачи — Отправьте параметры плана дома и получите
taskId. - Опрос результатов — Используйте
taskIdдля запроса статуса задачи и получения сгенерированных изображений.
🔐 Аутентификация#
Все запросы API должны проходить аутентификацию с помощью ключа API.
Укажите ваш ключ API в заголовке запроса:
| Заголовок | Значение |
|---|---|
APIKEY | your_api_key_here |
⚠️ Держите ваш ключ API в тайне. Не публикуйте его в клиентском коде или публичных репозиториях.
💰 Списание кредитов#
[!WARNING] 🪙 При успешном создании задачи кредиты списываются в зависимости от выбранного
modelType. Если задача в итоге завершится ошибкой, списанные кредиты будут автоматически возвращены на ваш аккаунт.
При недостатке кредитов возвращается код ошибки9051. 📄 См. Справочник по списанию кредитов.
Модель (modelType) | Списанные кредиты |
|---|---|
Base | 10 кредитов |
Pro | 20 кредитов |
📌 Конечные точки API#
1. Создание задачи генерации плана дома#
Создает новую задачу генерации плана дома с помощью ИИ и возвращает уникальный taskId для опроса.
Конечная точка
POST /api/v1/housePlan/generate
Заголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
APIKEY | ✅ Да | Ваш ключ аутентификации API |
Content-Type | ✅ Да | application/json |
Тело запроса
| Поле | Тип | Обязательное | Описание | По умолчанию |
|---|---|---|---|---|
style | string / null | ✅ Да | Английское название архитектурного стиля. См. Варианты стилей | Barndominium |
stories | string | ✅ Да | Количество этажей. Перечисление: 1, 2, 3+ | 2 |
bedrooms | string | ✅ Да | Количество спален. Перечисление: 1, 2, 3, 4, 5+ | 2 |
bathrooms | string | ✅ Да | Количество ванных комнат. Перечисление: 1, 1.5, 2, 2.5, 3, 3.5, 4+ | 1 |
totalArea | string | ✅ Да | Диапазон общей площади в формате min-max unit. См. Варианты общей площади | 150-200 m² |
garageEnabled | boolean | ✅ Да | Включать гараж или нет | false |
garageType | string / null | ⚠️ Условное | Обязательно, если garageEnabled=true. См. Варианты типа гаража | null |
garageCapacity | string / null | ⚠️ Условное | Обязательно, если garageEnabled=true. См. Вместимость гаража | null |
basement | string | ✅ Да | Тип подвала. См. Варианты подвала | None |
roofType | string / null | ❌ Нет | Тип конструкции крыши. См. Варианты типа крыши | null |
outdoorSpaces | array<string> | ❌ Нет | Внешние зоны. См. Варианты внешних зон | [] |
layoutConcept | string / null | ❌ Нет | Общая концепция планировки интерьера. См. Варианты концепции планировки | null |
bedroomAreaRanges | array<object> | ✅ Да | Диапазоны площади спален. Длина должна соответствовать количеству спален. См. Диапазоны площади спален | См. пример |
bathroomLayouts | array<object> | ✅ Да | Выбор планировки ванных комнат. Длина должна быть равна Math.floor(bathrooms). См. Планировки ванных комнат | См. пример |
kitchenLayout | string / null | ❌ Нет | Планировка кухни. См. Варианты кухни | null |
kitchenFeatureOptions | array<string> | ❌ Нет | Необязательные особенности кухни. См. Варианты кухни | [] |
keyRooms | string / null | ❌ Нет | Специальные комнаты, разделенные запятой и пробелом. См. Варианты ключевых комнат | null |
prompt | string | ❌ Нет | Пользовательский текстовый промпт для дополнительного управления генерацией | "" |
refImageUrl | string | ❌ Нет | URL референсного изображения дома для управления стилем | "" |
modelType | string | ✅ Да | Тип качества модели. Перечисление: Base, Pro. ⚠️ Режим Flash не поддерживается | Base |
🖼️ Требования к изображению: Необязательное изображение-образец должно быть в формате JPG/JPEG, PNG или WebP. Размер файла не должен превышать 20 МБ, а размеры изображения должны находиться в пределах от 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 Modern | 1950-е–70-е годы: чистый геометрический модернизм |
Modern | Минималистичный плоский/угловой современный дизайн |
Ranch | Одноэтажная просторная планировка |
Shingle Style | Сплошная отделка фасада деревянной дранкой |
Southwestern | Пустынный стиль, вдохновлённый саманной архитектурой |
Transitional | Сочетание традиционного и современного |
Tudor | Средневековый английский стиль с фахверком |
Victorian | Орнаментальный декоративный стиль 19-го века |
📐 Варианты общей площади#
Поле totalArea использует формат min-max unit. В метрической системе используется m², в британской — ft². Минимальное значение должно быть меньше максимального как минимум на один шаг.
| Единица | Минимум | Максимум | Шаг | Пример |
|---|---|---|---|---|
m² | 50 | 500 | 10 | 150-200 m² |
ft² | 500 | 5000 | 100 | 1500-2000 ft² |
🏠 Варианты типа крыши#
| Значение | Описание |
|---|---|
Gable roof | Классическая треугольная двускатная крыша |
Hip roof | Скаты со всех четырёх сторон |
Flat roof | Плоская крыша с минимальным уклоном |
Pitched roof | Крыша с крутыми скатами |
🏗️ Варианты подвала#
| Значение | Описание |
|---|---|
None | Без подвала |
Partial | Подвал под частью дома |
Full | Подвал под всем домом |
🚗 Варианты типа гаража#
garageType требуется только при garageEnabled=true; в противном случае отправьте null.
| Значение | Описание |
|---|---|
Detached | Отдельно стоящий гараж |
Front Entry | Въезд в гараж со стороны переднего фасада |
Side Entry | Въезд в гараж сбоку |
Rear Entry | Въезд в гараж со стороны заднего фасада |
🚗 Вместимость гаража#
garageCapacity требуется только при garageEnabled=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. Каждый элемент использует следующую структуру:
| Поле | Тип | Описание |
|---|---|---|
name | string | Отображаемое название спальни, например Room 1 (Master) |
minArea | string | Минимальная площадь спальни. Должна быть неотрицательной числовой строкой |
maxArea | string | Максимальная площадь спальни. Должна быть больше или равна minArea |
unit | string | Единица площади. Перечисление: m², ft² |
Пример по умолчанию для bedrooms="2"
[
{ "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 объекта планировки санузлов.
| Поле | Тип | Описание |
|---|---|---|
name | string | Отображаемое название ванной комнаты, например Bathroom 1 |
layout | string / null | Перечисление: With Wet & Dry Separation, Without Separation или null |
Пример по умолчанию для bathrooms="1"
[
{ "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 | Более высокое качество и разрешение вывода, медленнее |
⚠️ Примечание: Режим
Flashнедоступен для этого API. Поддерживаются толькоBaseиPro.
📥 Примеры запросов#
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();
📤 Ответ#
Успешный ответ
{
"code": 0,
"message": "success",
"data": 1234567890123456789
}
| Поле | Тип | Описание |
|---|---|---|
code | integer | 0 указывает на успех |
message | string | Сообщение в ответе |
data | long | Уникальный идентификатор задачи для опроса результатов |
2. Получение результата задачи#
Возвращает текущий статус и результат ранее созданной задачи генерации плана дома.
Конечная точка
GET /api/v1/housePlan/result
Заголовки запроса
| Заголовок | Обязательный | Описание |
|---|---|---|
APIKEY | ✅ Да | Ваш ключ аутентификации API |
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
taskId | long | ✅ Да | Идентификатор задачи, возвращенный из конечной точки создания задачи |
📥 Примеры запросов#
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);
📤 Ответ#
📸 Примечание: Этот API генерирует ровно 1 составное изображение результата на каждую успешно выполненную задачу. На одном презентационном листе объединены 2D-планы этажей, чертежи фасадов и фотореалистичные визуализации экстерьера.
output.resultUrlсодержит URL составного изображения, аoutput.resultList— тот же URL в массиве из одного элемента для совместимости.
Успешный ответ (задача завершена)
{
"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
}
}
}
Ответ (обработка задачи / в очереди)
{
"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
}
}
Ответ (задача завершилась ошибкой)
{
"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
}
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | long | Уникальный идентификатор задачи |
status | string | Текущий статус задачи (см. Статус задачи) |
waitNumber | integer | Количество задач впереди в очереди (0 означает текущую обработку) |
percentage | integer | Процент завершения задачи (0–100) |
input | object | Исходные входные параметры задачи |
input.style | string | Архитектурный стиль |
input.totalArea | string | Диапазон общей площади |
input.stories | string | Количество этажей |
input.bedrooms | string | Количество спален |
input.bathrooms | string | Количество ванных комнат |
input.garageEnabled | boolean | Запрошен ли гараж |
input.garageType | string / null | Тип гаража |
input.garageCapacity | string / null | Количество машино-мест в гараже |
input.basement | string | Тип подвала |
input.roofType | string | Тип крыши |
input.outdoorSpaces | array<string> | Внешние зоны |
input.layoutConcept | string | Общая концепция планировки |
input.bedroomAreaRanges | array<object> | Диапазоны площади спален |
input.bathroomLayouts | array<object> | Выбор планировки ванных комнат |
input.kitchenLayout | string | Стиль планировки кухни |
input.kitchenFeatureOptions | array<string> | Необязательные особенности кухни |
input.keyRooms | string | Ключевые специальные комнаты (разделенные запятыми) |
input.prompt | string | Пользовательский текстовый промпт (если указан) |
input.refImageUrl | string | URL референсного изображения (если указано) |
input.modelType | string | Использованный тип модели |
output | object | Результат генерации (доступен только когда status равно Success) |
output.resultUrl | string | URL сгенерированного составного презентационного листа проекта дома |
output.resultList | array<string> | URL сгенерированных изображений. Для плана дома это обычно массив из одного элемента с тем же URL, что и output.resultUrl |
output.width | integer | Ширина результата в пикселях |
output.height | integer | Высота результата в пикселях |
📊 Статус задачи#
| Статус | Описание |
|---|---|
Unprocessed | Задача создана, но еще не начата |
Processing | Задача в настоящее время обрабатывается |
Success | Задача успешно завершена — результат доступен |
Failed | Задача не выполнена из-за ошибки |
Termination | Выполнение задачи было прервано или прекращено |
Опрашивайте каждые 3-5 секунд. См. Лимит задач API.
❌ Ответы об ошибках#
Все ответы об ошибках имеют одинаковую структуру JSON:
{
"code": 5002,
"message": "Invalid API Key",
"data": null
}
Справочник кодов ошибок#
| Код | Название | Описание | Рекомендуемое действие |
|---|---|---|---|
1001 | FAILED | Запрос не выполнен (общая ошибка) | Проверьте поле message для получения конкретных деталей ошибки |
1003 | INTERNAL_ERROR | Внутренняя ошибка сервера | Повторите попытку после короткой задержки; обратитесь в поддержку, если проблема сохраняется |
1011 | PARAM_ERROR | Ошибка параметра запроса | Убедитесь, что все обязательные параметры предоставлены и правильно отформатированы |
5002 | API_KEY_INVALID | Недействительный или отсутствующий ключ API | Убедитесь, что заголовок APIKEY присутствует и значение корректно |
9010 | SCAN_TEXT_ERROR | Текстовый запрос не прошёл проверку контента | Удалите из запроса чувствительный или запрещённый контент |
9038 | PROHIBITED_CONTENT | Сгенерированное выходное изображение содержит запрещенный контент | Отрегулируйте промпт/стиль/входные данные и повторите попытку |
9051 | COINS_NOT_ENOUGH | Недостаточно монет / кредитов | Пополните кредиты на вашем аккаунте и повторите попытку |
📄 Для полного списка общих кодов ошибок API см. Справочник кодов ошибок.