Перейти к основному содержимому
Как добавить виртуальный стейджинг в приложение: руководство по API для разработчиков
Обучение

Как добавить виртуальный стейджинг в приложение: руководство по API для разработчиков

Пошаговое руководство для разработчиков по интеграции AI виртуального стейджинга в любое приложение через REST API. Код следует официальной документации API Roomagen: отправка задачи, проверка подписанных вебхуков, опрос как запасной вариант, сохранение результатов и встроенное раскрытие информации.

Roomagen
Roomagen Team
3 августа 2026 г.Обновлено: 24 октября 2026 г.17 мин чтения4,079 слов
Содержание(12)

Что изменилось в этом обновлении

  • Обновлён раздел API: бесплатные изображения API теперь содержат водяной знак Roomagen до покупки пакета, и каждый инструмент задокументирован
  • Добавлен список предупреждений с указанием параметров, которые игнорируются конкретным инструментом
Предыдущие обновления(1)
    • Все примеры кода приведены в точное соответствие с актуальным API Roomagen: параметры в camelCase (такие как roomType), UUID идентификаторы задач, заголовок Idempotency-Key и подпись вебхука v1=, вычисляемая по метке времени и необработанному телу запроса
    • Обновлена информация о доступе и ценах: самостоятельный выпуск ключей с 30 августа 2026 года вместо листа ожидания, единоразовые 50 бесплатных изображений для первого ключа, бессрочные пакеты и шесть задокументированных инструментов вместо 40+
    • Раздел о раскрытии информации переписан с учётом требований AB 723 об обязательном заявлении и ссылке на оригинал, калифорнийского закона AB 2025 для объявлений об аренде с января 2027 года, несовпадающих правил размещения пометки в MLS и статьи 50 EU AI Act
    • Добавлены таблица кодов ошибок, ограничения частоты запросов, раздел об ограничениях API и чеклист перед запуском; удалены неподтверждённые данные об объёме рынка, а также заявления о бесплатных повторных генерациях и автоматических пометках раскрытия информации
    • Скорректировано время выполнения задач до документированных 20–60 секунд, а интервал опроса — до 2–5 секунд, с указанием реальных замеров медианного времени API для стейджинга, перевода из дня в сумерки и конвертации планов этажей в 3D

Чтобы добавить виртуальный стейджинг в приложение, ваш бэкенд отправляет каждое фото комнаты в API виртуального стейджинга как асинхронную задачу, получает результат через подписанный вебхук или опрос статуса, а затем сохраняет его рядом с оригиналом вместе с данными для раскрытия информации.

Подходящий инструмент

AI виртуальный стейджинг — Обставьте пустые комнаты меньше чем за минуту

Виртуальный стейджинг пустых комнат с помощью AI, обычно меньше чем за минуту. 13 стилей дизайна, 15 типов комнат, готовые для объявлений фото для недвижимости, аренды и гостиничного бизнеса. 6 бесплатных кредитов, без кредитной карты.

Попробовать бесплатно

Добавление виртуального стейджинга в приложение сводится к одному циклу: ваш бэкенд отправляет фотографию комнаты в API виртуального стейджинга в виде задачи (job), поставщик рендерит её в фоновом режиме, а ваше приложение забирает результат, сохраняет его рядом с оригиналом и отображает с тем раскрытием информации, которого требует площадка назначения. В этом руководстве мы построим такой цикл на базе Roomagen API с примерами кода на cURL, Node.js и Python, сохранив архитектуру переносимой на решения других поставщиков.

Интеграция в двух словах

  1. Отправляйте каждую фотографию со своего сервера как задачу: POST /v1/jobs с заголовком Idempotency-Key.
  2. Сохраняйте возвращенный job_id, прежде чем выполнять любые другие действия.
  3. Получайте завершенную задачу через подписанный вебхук и устраняйте пропуски с помощью GET /v1/jobs/{id}.
  4. Повторно размещайте результат в своем хранилище, храните оригинал рядом с ним и передавайте данные для раскрытия информации в каждый канал экспорта.

Что вы создаете: архитектура функции стейджинга

К концу этого руководства ваше приложение будет принимать фотографию комнаты и показывать меблированную версию той же комнаты — обычно через 20–60 секунд, согласно документации Roomagen. Все остальное здесь служит для того, чтобы сделать этот цикл надежным при производственных нагрузках. Этот же цикл подходит для порталов объявлений, платформ доставки фотографий, программного обеспечения для управления недвижимостью при рекламе свободных объектов, приложений для дизайна интерьера при презентации концепции прямо в комнате клиента и мебельных ритейлеров, демонстрирующих комнату, оформленную в выбранном стиле.

Рендеринг занимает десятки секунд, что слишком долго для открытого HTTP-запроса, поэтому архитектура сделана асинхронной: отправьте задачу, немедленно получите идентификатор задачи, заберите результат позже. Стейджинг выполняет многоэтапный конвейер (анализ сцены, затем промпт, затем генерация), поэтому он работает медленнее таких инструментов, как Редактирование & Конвертация Фото из Дня в Сумерки: по производственным данным Roomagen за 30 дней до 1 октября 2026 года медианная задача стейджинга через API занимала около 45 секунд, тогда как для инструментов день в сумерки и План этажа в 3D — около 25 секунд.

Этап Где выполняется Что важно сделать правильно
Отправка задачи Ваш бэкенд → POST /v1/jobs Ключ остается на стороне сервера; Idempotency-Key; сохранение job_id
Рендеринг Roomagen Обычно 20–60 секунд; стейджинг всегда рендерится в 2K
Получение уведомления о завершении Вебхук (push) плюс опрос (pull) Проверка подписи; дедупликация по job_id
Сохранение и отображение Ваше хранилище и UI Повторное размещение результата у себя; сохранение оригинала; раскрытие информации

Roomagen — это платформа AI-редактирования фотографий и виртуального стейджинга с более чем 40 инструментами в веб-приложении; в API за единым эндпоинтом задач задокументирован каждый поддерживаемый инструмент (65 по состоянию на октябрь 2026 года). Инструменты для работы с изображениями функционируют на базе визуальных моделей Gemini от Google, а API добавляет конвейер стейджинга, управление задачами, автоматический возврат средств за неудачные рендеры и подписанные вебхуки.

Перед началом работы: ключи, окружения и требования к изображениям

Получение ключа. API Roomagen работает в режиме самообслуживания с момента публичного запуска 30 августа 2026 года; списков ожидания нет. Войдите в портал для разработчиков с учетной записью Roomagen, подтвердите адрес электронной почты и создайте ключ, как описано в кратком руководстве по API. Ваш первый ключ дает 50 бесплатных изображений (один раз на аккаунт), чего достаточно для создания и тестирования всего, что описано в этом руководстве. Пока для аккаунта не приобретен пакет, каждый рендер содержит водяной знак Roomagen, поэтому используйте их для разработки и тестирования, а не для публикации.

Ключи представляют собой префикс rmg_live_ плюс 64 шестнадцатеричных символа, передаются в заголовке X-Api-Key, и портал показывает каждый ключ только один раз. Храните его в секретном хранилище на стороне сервера; никогда не встраивайте его в браузерный JavaScript или мобильное приложение, где любой желающий сможет извлечь его и потратить ваш баланс.

Окружения. В одном аккаунте может быть до 10 активных ключей, поэтому создавайте по одному на каждое окружение и отзывайте любой из них, не затрагивая другой. Тестового режима нет: каждый ключ является боевым (live), а ключи аккаунта делят единый баланс изображений, один вебхук портала и один секрет подписи, поэтому для задач разработки указывайте собственный webhook_url для конкретной задачи. Кнопка ротации отсутствует намеренно: создайте новый ключ, разверните его и затем отзовите старый.

Требования к входным изображениям.

Требование Roomagen API
Форматы и размер JPEG, PNG или WebP, до 20 МБ; строго один из параметров: image_url или image_base64
image_url (предпочтительно) Публичный URL-адрес https, загружаемый во время обработки вашего POST-запроса: таймаут 10 секунд, до 3 перенаправлений, приватные хосты отклоняются
image_base64 Необязательный префикс data-URI; тело запроса может достигать 30 МБ, но только при наличии заголовка X-Api-Key (без него — 1 МБ)

Отдавайте предпочтение image_url: запросы остаются компактными, вы избегаете 33%-ного оверхеда base64, а поскольку загрузка происходит во время выполнения вашего POST-запроса, подписанный URL должен быть действителен только на время этого запроса. Отправляйте полноразмерный исходник, по одной комнате на кадр, снятый прямо и с приемлемым освещением; модель может сохранить только те детали, которые способна различить.

Проверка баланса в коде. GET /v1/account возвращает image_credits — количество изображений, которое вы еще можете сгенерировать на текущем балансе. Настройте оповещение о низком балансе сразу: если баланс не покрывает задачу, POST /v1/jobs вернет 402 insufficient_credits, и задача создана не будет.

Шаг 1: Отправка задачи стейджинга

Один POST-запрос создает задачу: инструмент, изображение, параметры и, при необходимости, webhook_url для конкретной задачи (без него Roomagen использует вебхук аккаунта, сохраненный в портале, либо вам придется опрашивать статус вручную).

curl -X POST https://api.roomagen.com/api/v1/jobs \
  -H "X-Api-Key: $ROOMAGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: photo-4821-3-stage" \
  -d '{
    "tool": "virtual-staging",
    "image_url": "https://cdn.example.com/rooms/4821-3.jpg",
    "options": { "style": "scandinavian", "roomType": "living-room", "mode": "empty-room" },
    "webhook_url": "https://app.example.com/hooks/roomagen"
  }'

Ответ приходит со статусом 201 еще до завершения рендеринга:

{ "job_id": "3f1c9d4e-5b2a-4c8e-9f10-7d6a2b3c4e5f", "status": "processing", "images_charged": 1 }

Тот же вызов из бэкенда на Node.js 18+:

async function submitStagingJob(photo) {
  const res = await fetch("https://api.roomagen.com/api/v1/jobs", {
    method: "POST",
    headers: {
      "X-Api-Key": process.env.ROOMAGEN_API_KEY,
      "Content-Type": "application/json",
      "Idempotency-Key": `photo-${photo.id}-stage`, // формируется на основе вашей записи, никогда не случайно
    },
    body: JSON.stringify({
      tool: "virtual-staging",
      image_url: photo.signedUrl,
      options: { style: photo.style, roomType: photo.roomType, mode: "empty-room" },
      webhook_url: "https://app.example.com/hooks/roomagen",
    }),
  });
  const body = await res.json();
  if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
  await db.query(
    "INSERT INTO staging_jobs (photo_id, job_id, status, images_charged) VALUES ($1, $2, 'processing', $3)",
    [photo.id, body.job_id, body.images_charged],
  );
  return body.job_id;
}

Стейджинг более строг к параметрам, чем другие инструменты. Поле style обязательно, параметры пишутся в camelCase, а любой ключ вне приведенного ниже списка, включая room_type, resolution, tier и customPrompt, отклоняется с ошибкой invalid_request. Стейджинг всегда рендерится в разрешении 2K и стоит одно изображение.

Параметр Значения По умолчанию
style (обязательно) modern, scandinavian, industrial, traditional, minimalist, bohemian, mid-century-modern, coastal, farmhouse, luxury, japandi, art-deco, mediterranean или custom, чтобы выбор сделала модель отсутствует
roomType 15 типов, таких как living-room, bedroom, kitchen, home-office, kids-room и terrace определяется по фото
mode empty-room меблирует пустую комнату; restyle меняет интерьер в уже меблированной; recreate перестраивает её в комнату другого типа empty-room
furnitureMode, furniture ai или manual со списком вроде "sectional sofa, floor lamp, rug" ai
changeWalls, changeFloor Значение true разрешает модели перекрашивать стены или заменять напольное покрытие false

Эти три режима соответствуют режимам стейджинга в веб-приложении Roomagen, так что ваша продуктовая команда может опробовать их до того, как вы напишете код: виртуальный стейджинг с AI для пустых комнат, Редизайн меблированных комнат для restyle и Перепрофилирование комнаты для recreate.

Сохраняйте данные в базу в первую очередь. Сохраните job_id и images_charged в привязке к вашей собственной записи. Заголовок Idempotency-Key (до 128 символов, изолирован в рамках вашего API-ключа) делает повторные попытки безопасными: тот же ключ с тем же телом запроса возвращает исходную задачу без повторного списания. Формируйте ключи на основе ваших записей, чтобы их можно было восстановить после сбоя, и отправляйте повторно в точности то же самое тело запроса: отправка того же ключа с измененным телом, включая повторно подписанный image_url, вернет 409 idempotency_conflict.

Шаг 2: Обработка завершения — вебхуки против опроса

Существует два способа узнать о завершении задачи, и в производственных интеграциях используются оба.

Критерий Вебхуки (push) Опрос (pull)
Задержка Отправляется после завершения задачи, без дополнительных запросов с вашей стороны До одного интервала опроса; Roomagen рекомендует 2–5 секунд
Инфраструктура Публичный https-эндпоинт, отвечающий кодом 2xx в течение 10 секунд Воркер или планировщик задач
Надежность At-least-once (как минимум один раз); 5 попыток в течение примерно 36 минут, затем прекращение Вы полностью контролируете цикл
Оптимально для Эксплуатации в проде под нагрузкой Разработки, интерактивного ожидания, сверки данных

Используйте вебхуки как основной канал, а опрос — как страховку. Документация Roomagen называет вебхуки «оптимизацией, а не системой учета», поскольку попытки доставки прекращаются по истечении окна повторов. Один лишь опрос также не масштабируется: при 3-секундном интервале каждая задача требует 20 запросов в минуту, поэтому лимит в 300 запросов в минуту на GET /v1/jobs/{id} покроет одновременный опрос лишь около 15 задач.

Настройка эндпоинта. Сохраните адрес https-эндпоинта в карточке Webhook в портале, указав конечный URL, так как перенаправления не поддерживаются. Храните секрет подписи whsec_ как пароль и отправьте тестовое событие job.test с помощью кнопки Send test event, пока отлаживаете проверку подписи. Вебхук, заданный индивидуально для задачи через webhook_url, использует тот же секрет.

const crypto = require("crypto");
const express = require("express");
const app = express();

// Необработанное тело (raw body) на этом маршруте, подключенном до глобального express.json()
app.post("/hooks/roomagen", express.raw({ type: "application/json" }), async (req, res) => {
  const ts = req.get("X-Roomagen-Timestamp");
  const sig = req.get("X-Roomagen-Signature");
  if (!ts || !sig) return res.sendStatus(401);

  const expected = "v1=" + crypto
    .createHmac("sha256", process.env.ROOMAGEN_WEBHOOK_SECRET) // whsec_...
    .update(`${ts}.`)
    .update(req.body) // исходные байты, ни в коем случае не повторно сериализованный JSON
    .digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
  if (sig.length !== expected.length || !fresh ||
      !crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
    return res.sendStatus(401);
  }

  const job = JSON.parse(req.body);
  if (job.event === "job.test") return res.sendStatus(200);

  // Идемпотентность: только первая доставка (или опрос) переводит строку из статуса "processing"
  const { rowCount } = await db.query(
    "UPDATE staging_jobs SET status = $1, result_urls = $2, error = $3 WHERE job_id = $4 AND status = 'processing'",
    [job.status, job.result_urls, job.error, job.job_id],
  );
  if (rowCount === 1 && job.status === "completed") {
    await queue.add("store-results", { jobId: job.job_id }); // скачивание вне пути обработки веб-запроса
  }
  res.sendStatus(200);
});

Принципиально важны четыре детали:

  1. Проверяйте подпись по исходным байтам. Заголовок содержит префикс v1= и шестнадцатеричный HMAC-SHA256 от {X-Roomagen-Timestamp}.{raw body}; повторно сериализованный JSON не совпадет.
  2. Сравнивайте за постоянное время, затем проверяйте актуальность. Метод Node timingSafeEqual выбрасывает исключение при разной длине буферов, поэтому сначала сравните длину. Отклонение временных меток старше примерно пяти минут защищает от атак повторного воспроизведения (replay attacks) — это та же защита, что описана в документации по вебхукам Stripe; следите за синхронизацией часов на серверах.
  3. Отвечайте быстро. Roomagen ожидает статус 2xx в течение 10 секунд; любой другой ответ, включая таймаут, считается неудачной попыткой и отправляется повторно.
  4. Обеспечьте идемпотентность. Доставка осуществляется по модели at-least-once и без соблюдения порядка, к тому же ваш фоновый опрос мог завершить задачу раньше, поэтому выполняйте дедупликацию по job_id.

Для опроса (во время разработки или в качестве механизма сверки) код на Python выглядит лаконично:

import os, time, requests

API = "https://api.roomagen.com/api/v1"
HEADERS = {"X-Api-Key": os.environ["ROOMAGEN_API_KEY"]}

def wait_for_job(job_id, interval=3, max_wait=300):
    deadline = time.time() + max_wait
    while time.time() < deadline:
        r = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30)
        r.raise_for_status()
        job = r.json()
        if job["status"] != "processing":
            return job  # "completed" или "failed"; оба статуса финальные
        time.sleep(interval)
    return None  # всё ещё обрабатывается: оставляем задачу механизму сверки

Задача завершается либо со статусом completed с массивом result_urls, либо со статусом failed с причиной в поле error и автоматическим возвратом списания; логируйте processing_ms, чтобы отслеживать задержку. Запускайте механизм сверки каждые 1–2 минуты для задач, которые всё ещё находятся в статусе processing спустя несколько минут. Не помечайте медленную задачу как завершившуюся ошибкой только потому, что истек таймер: она все еще может успешно завершиться, а списание средств за нее произошло при создании.

Шаг 3: Доставка результатов вашим пользователям

Завершенная задача возвращает result_urls — массив сгенерированных изображений JPEG. Не используйте прямые ссылки на них (hotlinking).

Переразмещайте результаты у себя. Roomagen отдает результаты из собственного хранилища с учетом срока хранения данных аккаунта, поэтому фоновая задача должна скачать каждое изображение сразу после завершения рендеринга, записать его в ваше собственное хранилище (S3, R2, GCS или аналогичное) и раздавать через вашу CDN. В этом случае доступность ваших изображений никогда не будет зависеть от политик хранения поставщика.

Храните оригинал рядом с результатом. Сохраняйте исходную фотографию и изображение с виртуальным стейджингом как связанную пару. Эта пара обеспечивает работу интерактивного слайдера «до/после», позволяет пользователям откатить изменения и требуется правилами раскрытия информации в объявлениях (Шаг 4).

Учитывайте вариативность. Результаты генерации могут различаться, и иногда диван получается неподходящим. Повторный запуск — это новая задача, за которую списывается еще одно изображение, поскольку Roomagen компенсирует рендеры, завершившиеся системной ошибкой, а не результаты, которые не понравились пользователю. Присваивайте каждому повторному запуску собственный Idempotency-Key, например photo-4821-stage-2: повторное использование первого ключа вернет исходную задачу либо ошибку 409, если тело запроса изменилось. Предусмотрите кнопку «Попробовать снова» и решите, будет ли эта стоимость видна пользователям или она уже заложена в ваши тарифы.

Продумайте интерфейс ожидания и обработки ошибок. Стейджинг обычно выполняется в пределах минуты, что довольно долго с точки зрения интерфейса. До запуска спроектируйте индикатор прогресса, состояние ошибки («рендер не удался, списание возвращено на баланс») и возможность повтора.

Шаг 4: Встройте раскрытие информации в модель данных

Если ваши пользователи публикуют фотографии с виртуальным стейджингом в объявлениях о недвижимости, раскрытие информации — их юридическая обязанность, и от вашей модели данных зависит, насколько легко им будет её исполнять. API Roomagen не добавляет пометку о раскрытии информации и не формирует пары «оригинал/обработанное фото», а условия использования Roomagen возлагают обязанность по раскрытию информации на пользователя, поэтому ваша интеграция должна взять это на себя.

  • Закон Калифорнии AB 723, действующий с 1 января 2026 года. Брокер или агент по продажам, либо лицо, действующее от их имени, использующие цифровым образом измененное изображение в рекламе продажи недвижимости, обязаны указать на самом изображении или рядом с ним, что оно было изменено, а также добавить ссылку, URL-адрес или QR-код на общедоступный сайт с оригинальным, неизмененным изображением. Регулятор рынка недвижимости штата Калифорния добавляет: в случаях, когда инструмент AI создает вводящую в заблуждение рекламу, ответственность ложится «на лицензиата и его ответственного брокера, а не на поставщика технологии».
  • Объявления об аренде в Калифорнии с 1 января 2027 года. Закон AB 2025 распространяет аналогичные требования о раскрытии информации на рекламу аренды, охватывая наймодателей жилья и других лиц, а не только лицензиатов.
  • Правила MLS расходятся в требованиях к размещению. Canopy MLS требует наличия пометки на самом изображении, а не только в подписях к нему, в то время как NWMLS не принимает фотографии с наложенной графикой или текстом.
  • Продукты, ориентированные на ЕС. Со 2 августа 2026 года Статья 50 Закона ЕС об AI (EU AI Act) требует от лиц, применяющих систему AI (deployers), которые генерируют или модифицируют дипфейк-изображения (контент, имеющий сходство с существующими местами или объектами и способный ложно восприниматься как подлинный), раскрывать этот факт. Обработанные с помощью AI фотографии объекта недвижимости вполне могут подпадать под это определение (подробнее — в нашем руководстве по статье 50 EU AI Act).

Поэтому храните данные о раскрытии информации в виде структурированных данных, а не в пикселях: публичный URL-адрес исходной фотографии, флаг altered с указанием использованного инструмента и настроек, а также текст раскрытия информации и позицию пометки для каждой площадки. Накладывайте пометку на этапе экспорта, а не при сохранении в базу.

Инструмент Как применяется определение цифровым образом измененного изображения по закону AB 723
virtual-staging Добавляет мебель, которая прямо упомянута в законе: раскрывайте факт изменения и давайте ссылку на оригинал
item-removal Удаляет элементы с изображения: раскрывайте
virtual-renovation Изменяет встроенное оборудование, напольные покрытия, стены или цвет краски (все эти элементы прямо названы): раскрывайте
day-to-dusk Исключение для корректировки освещения распространяется только на правки, не меняющие представление о недвижимости, а новый параметр viewType заменяет вид из окон (прямо упомянутый элемент): безопаснее раскрывать
image-enhancement Освещение, баланс белого, цветокоррекция и экспозиция исключены из требований, если они не меняют представление о недвижимости
floor-plan-to-3d Планы этажей прямо названы в законе; представляйте рендер как иллюстрацию, а не как фотографию

Это краткая сводка для разработчиков, а не юридическая консультация; в наших руководстве по закону AB 723 и правилам MLS для AI-фотографий и руководстве по требованиям MLS к фотографиям и раскрытию информации при виртуальном стейджинге тема разобрана подробнее.

Вопросы эксплуатации: лимиты запросов, повторные попытки и расчет бюджета

Лимиты запросов (Rate limits). На каждый ключ в скользящем 60-секундном окне: 60 запросов в минуту для POST /v1/jobs, 300 для GET /v1/jobs/{id} и 120 для GET /v1/tools и GET /v1/account, плюс общий лимит 600 запросов в минуту на IP-клиента, разделяемый всеми серверами за одним NAT-адресом. Успешные ответы содержат заголовки X-RateLimit-Limit и X-RateLimit-Remaining; ответ 429 rate_limited содержит Retry-After в секундах — ориентируйтесь на него, а не изобретайте собственную логику задержек. Для пакетных задач выстраивайте отправку в очередь: при лимите в 60 задач в минуту отправка 500 фотографий займет чуть больше восьми минут.

Повторные попытки и коды ошибок. Каждая ошибка возвращается в формате { "error": { "code", "message", "doc_url" } }. Ветвите логику по значению code, ни в коем случае не по message:

Ответ Что должен делать ваш код
400 invalid_request, invalid_tool Исправьте запрос (названия параметров, значения или название с сайта вместо слага API); не повторяйте запрос без изменений
400 invalid_image, image_fetch_failed Передавайте строго один источник изображения по публичному URL-адресу https, отдающему файл напрямую
401 invalid_api_key, key_revoked Отправьте оповещение дежурному инженеру; не делайте повторных попыток
402 insufficient_credits Задача не была создана: пополните баланс, затем повторите запрос
409 idempotency_conflict Отправьте исходное тело запроса повторно либо используйте новый ключ для действительно нового запроса
413 payload_too_large Перейдите на использование image_url и проверьте, был ли передан заголовок X-Api-Key
429 rate_limited, 500 internal_error Подождите (значение Retry-After при ошибке 429), затем повторите попытку с тем же Idempotency-Key
Задача со status: "failed" Средства возвращены автоматически; повторите попытку один раз, и если ошибка повторится, проверьте саму фотографию

Экономика ошибок. За задачу, завершившуюся сбоем на этапе генерации, средства возвращаются автоматически, однако поле images_charged в объекте задачи не перезаписывается, поэтому считайте GET /v1/account единственным достоверным источником данных о вашем балансе. Сравнивая поставщиков, обращайте внимание на правила обработки сбоев наряду с ценами.

Расчет бюджета кредитов. В API Roomagen биллинг ведется в изображениях, которые покупаются заранее пакетами в портале для разработчиков:

Пакет Изображения Цена За изображение
Бесплатный бонус (первый ключ, единоразово) 50 $0 —
Pilot 500 $125 $0,25
Growth 2 500 $550 $0,22
Scale 10 000 $2 000 $0,20
Volume от 50 000 По договоренности —

Срок действия пакетов не ограничен, а изображения суммируются. Каждый задокументированный инструмент расходует одно изображение за рендер в 2K, параметр resolution: "4K" удваивает списание для инструментов, поддерживающих его, а стейджинг всегда стоит одно изображение. При планировании бюджета закладывайте повторные генерации: платформе, выполняющей виртуальный стейджинг 1 200 фотографий в месяц с ожиданием, что каждая десятая будет запущена повторно, потребуется около 1 320 изображений, то есть пакета Growth хватит почти на два месяца.

Опубликованные цены сильно различаются (данные проверены в октябре 2026 года): у ModelsLab указано $0,02 за рендер интерьера, у Decor8 — $0,20 за изображение для всех операций API, а у AI HomeDesign — $0,24 за фото при годовой оплате или около $0,49 при помесячной. Сравнивайте набор инструментов, поддержку вебхуков, правила возврата при сбоях и качество результатов, а не только цену за единицу; в наших руководстве по ценам на API виртуального стейджинга и сравнении API стейджинга каждый поставщик разобран подробно.

Честно о зрелости решения. API Roomagen появился недавно: версия 1 была запущена 30 августа 2026 года с единым эндпоинтом задач, а документация охватывает все поддерживаемые инструменты только с 3 октября 2026 года, поэтому сервису присущи современные конвенции, но пока нет многолетней публичной истории. О критических изменениях владельцы аккаунтов с активными ключами предупреждаются по электронной почте до релиза; обратно совместимые дополнения могут выходить в любое время, поэтому просто игнорируйте неизвестные поля в ответах.

Расширение интеграции: другие документированные инструменты

Как только базовый цикл для стейджинга заработает, добавление кнопок «сумеречная версия» или «убрать лишние вещи» потребует лишь изменения полей tool и options:

Инструмент Слаг Параметры
Виртуальная реконструкция и ремонт virtual-renovation style (10 значений), roomType (8 значений)
Улучшение фото image-enhancement intensity: light, medium (по умолчанию) или heavy
Редактирование & Конвертация Фото из Дня в Сумерки day-to-dusk timeShift (час 0–23, по умолчанию 20), viewType, season, hasWindows
Удаление объектов и предметов с фотографий item-removal Нет: опустите options, чтобы убрать очевидный беспорядок, или передайте tier: "custom" с промптом customPrompt, указав конкретный предмет
План этажа в 3D floor-plan-to-3d outputStyle, interiorStyle, furnitureMode, fp3dOutdoor, fp3dLabels, inputType

Эти инструменты также принимают параметры resolution (2K или 4K), tier (auto, guided или custom) и customPrompt (до 500 символов). В отличие от стейджинга, они игнорируют неизвестные ключи, перечисляя каждый из них в массиве warnings в ответе, но при этом отклоняют недопустимые значения параметров. Для комнат без окон передавайте hasWindows: false в инструмент день в сумерки, чтобы промпт не содержал инструкций относительно окон и вида из них.

Эндпоинт GET /v1/tools возвращает все слаги, доступные для вызова с вашим ключом, с их стоимостью в изображениях, и каждый возвращенный слаг задокументирован. Читайте этот список программно, а не зашивайте значения жестко в код, и помните, что названия инструментов на сайте roomagen.com отличаются от слагов в API.

Чего API не умеет

  • Нет пакетного эндпоинта. Одна задача — это обработка одного изображения через один инструмент; пакетная обработка из веб-приложения не входит в API, поэтому выстраивайте задачи в очередь с соблюдением лимитов запросов.
  • Нет меток о раскрытии информации. Результаты не содержат пометок о раскрытии информации или готовых пар «до/после». До покупки пакета на рендеры накладывается водяной знак, а после покупки любое брендирование Roomagen отсутствует.
  • Нет бесплатных повторных генераций. Повторный запуск — это новая задача, за которую списываются кредиты как за отдельную операцию.
  • Нет замеров помещений или CAD-файлов. На выходе вы получаете изображения JPEG, а не размеры, векторную графику или файлы DWG. Если вам нужны замеры комнаты по фото, генеративный API изображений для этого не предназначен.
  • Нет гарантии идеального результата. Генеративные модели могут допускать артефакты или неточности, поэтому проверяйте результат перед публикацией в объявлении.
  • Нет эксклюзивных функций веб-интерфейса. Кнопка Доработать, Библиотека и чат Дизайн-помощник доступны только в веб-приложении Roomagen.

Частые ошибки при интеграции API стейджинга

  1. Блокировка потока запроса. Удержание клиентского соединения открытым на время рендеринга приводит к таймаутам балансировщика нагрузки. Возвращайте 202 Accepted из собственного API и отправляйте обновления клиенту асинхронно.
  2. Неверные имена параметров. Указание room_type или resolution в задаче стейджинга вернет ошибку invalid_request; стейджинг требует ключи в camelCase из строго определенного списка и обязательно параметр style.
  3. Надежда исключительно на вебхуки. Примерно через 36 минут повторных попыток Roomagen прекращает отправку вебхука. Без механизма периодической сверки задача останется в статусе "processing" навсегда.
  4. Ошибки в проверке подписи. Хеширование распарсенного JSON, потеря префикса с меткой времени, сравнение через обычное равенство === или отказ от проверки актуальности временной метки делают верификацию уязвимой.
  5. URL вебхука с перенаправлением. Обычный протокол http и приватные хосты сразу отклоняются с ошибкой webhook_url_rejected, а перенаправления не поддерживаются, поэтому редирект из-за слеша на конце или префикса www приведет к сбою каждой доставки.
  6. Случайные ключи идемпотентности или повторно подписанные URL. Ключ, который вы не сохранили, нельзя воспроизвести повторно, поэтому повтор приведет к новому списанию; повторно подписанный image_url с тем же ключом вернет ошибку 409.
  7. Прямые ссылки (hotlinking) на URL результатов. Доступность результатов ограничена политикой хранения поставщика. Скачивайте и переразмещайте их у себя сразу после завершения.
  8. Единый водяной знак для всех площадок. Впеченная в изображение пометка «Virtually Staged» («С виртуальным стейджингом») может нарушать правила MLS, запрещающие наложение текста, а без ссылки на оригинал сама по себе не выполняет требований закона AB 723.

Чек-лист перед запуском в продакшн

  • API-ключ хранится исключительно на ваших серверах, по одному на каждое окружение.
  • Запросы на стейджинг всегда содержат обязательный параметр style и не содержат параметров вне разрешенного списка.
  • Каждая задача имеет Idempotency-Key, сформированный на основе ваших записей, а повторные попытки отправляют исходное тело запроса.
  • Эндпоинт для вебхука указывает на финальный URL https, проверяет подписи v1= по исходным байтам, отклоняет устаревшие временные метки и отвечает в течение 10 секунд.
  • Тестовое событие job.test из портала успешно проходит проверку подписи.
  • Механизм сверки регулярно проверяет задачи, зависшие в статусе обработки дольше нескольких минут.
  • Результаты переразмещаются в собственном хранилище, и оригинал всегда сохраняется рядом с результатом.
  • Данные для раскрытия информации (URL оригинала, флаг изменения, пометка под конкретную площадку) передаются во все сценарии экспорта.
  • Настроено оповещение о низком остатке image_credits, а каждый код ошибки транслируется в понятное пользователю сообщение.

Главный вывод: запустите базовый цикл, затем расширяйте

Добавление виртуального стейджинга в приложение требует небольшой интеграции: один POST-запрос с ключом идемпотентности, один верифицируемый обработчик вебхуков с механизмом сверки и этап сохранения оригинала рядом с результатом. Основная логика укладывается в несколько десятков строк; большая часть работы уходит на обеспечение надежности в продакшне и работу с данными для раскрытия информации. Ничто из этого не привязано жестко к одному поставщику: асинхронная отправка, гибрид push- и pull-уведомлений о завершении, переразмещение результатов и хранение пар «оригинал/результат» подходят для любого API стейджинга.

Чтобы реализовать интеграцию по описанному примеру, получите API-ключ Roomagen: первый ключ включает 50 бесплатных изображений, а краткое руководство, руководство по вебхукам и справочник ошибок содержат все технические детали. В рамках одной интеграции этот же цикл задач позволяет использовать виртуальный стейджинг, Редактирование & Конвертация Фото из Дня в Сумерки, Удаление объектов и предметов с фотографий, улучшение фото, Виртуальная реконструкция и ремонт и План этажа в 3D.

Готовы преобразить ваши объявления?

Попробуйте бесплатно виртуальный стейджинг Roomagen с ИИ. Загрузите первое фото — результат обычно готов меньше чем за минуту.

Начать бесплатно

Часто задаваемые вопросы

API виртуального стейджинга — это веб-сервис, который принимает фотографию комнаты и возвращает её версию, обставленную мебелью с помощью AI. Разработчики вызывают его из своего бэкенда, чтобы внедрить стейджинг на порталы объявлений, в сервисы доставки фотоматериалов, ПО для управления недвижимостью, приложения для дизайна интерьера или на сайты магазинов мебели.

В документации Roomagen указано, что задачи обычно выполняются за 20–60 секунд, причём стейджинг находится ближе к верхней границе этого диапазона. Поскольку удерживать открытый запрос так долго непрактично, отправляйте задачу асинхронно и получайте результат через вебхук, используя периодический опрос каждые 2–5 секунд в качестве запасного варианта.

Roomagen продаёт предоплаченные пакеты: 500 изображений за $125 ($0,25 за штуку), 2 500 за $550 ($0,22) и 10 000 за $2 000 ($0,20), а при создании первого ключа начисляется 50 бесплатных изображений. Публичные цены других провайдеров сильно различаются: например, $0,02 за рендер у ModelsLab и около $0,49 за фото при ежемесячной оплате у AI HomeDesign.

Да. При создании вашего первого API-ключа Roomagen единоразово на аккаунт начисляется 50 бесплатных изображений, чего достаточно для разработки и тестирования полноценной интеграции; на них наносится водяной знак, пока вы не приобретёте пакет. Вам потребуется подтверждённый адрес электронной почты, а выпуск дополнительных ключей не добавляет новых бесплатных изображений.

Используйте оба метода. Вебхуки передают готовый результат без необходимости постоянных запросов, однако доставка события может быть пропущена во время деплоя или сбоя, а Roomagen прекращает повторные попытки примерно через 36 минут. Регистрируйте вебхук для каждой задачи и сверяйте статус любых зависших в обработке запросов с помощью поллинга.

API Roomagen принимает изображения в форматах JPEG, PNG или WebP размером до 20 МБ, переданные либо в виде публичного URL https image_url, либо непосредственно внутри запроса в image_base64. Использование URL позволяет сохранять компактный размер запросов, а тело запроса с base64 может достигать 30 МБ только при наличии заголовка X-Api-Key.

В Roomagen — нет. За задачу, завершившуюся ошибкой во время генерации, средства возвращаются автоматически, а её статус меняется на failed с указанием причины. За успешно завершённый рендер кредиты списываются, даже если пользователю не понравился результат, поэтому повторный запуск считается новой задачей и требует списания ещё одного изображения.

Для Roomagen вычислите HMAC-SHA256 от значения X-Roomagen-Timestamp, точки и исходного необработанного тела запроса (raw body), используя ваш секрет подписи whsec_. Сравните строку "v1=" плюс шестнадцатеричный дайджест со значением заголовка X-Roomagen-Signature с защитой от атак по времени (constant time), и отклоняйте метки времени старше примерно пяти минут.

Зачастую да. С 1 января 2026 года закон штата Калифорния AB 723 обязывает лицензиатов сферы недвижимости указывать факт цифрового изменения и давать ссылку на оригинал в объявлениях о продаже, а правила MLS различаются в требованиях к размещению пометки. API Roomagen не наносит пометку, поэтому ваше приложение должно обеспечивать раскрытие информации самостоятельно.

Да. Эндпоинт задач Roomagen документирует все поддерживаемые инструменты, включая виртуальный стейджинг, инструмент Виртуальная реконструкция и ремонт, улучшение изображений, инструмент Редактирование & Конвертация Фото из Дня в Сумерки, инструмент Удаление объектов и предметов с фотографий и инструмент План этажа в 3D. Вы просто меняете слаг инструмента и параметры, в то время как логика обработки задач, вебхуков и сохранения результатов остаётся прежней.
Roomagen

Автор

Roomagen Team

Команда Roomagen создаёт подробные руководства по виртуальному стейджингу с ИИ, фотографии недвижимости и маркетинговым стратегиям.

Похожие инструменты

AI виртуальный стейджинг — Обставьте пустые комнаты меньше чем за минуту

Виртуальный стейджинг пустых комнат с помощью AI, обычно меньше чем за минуту. 13 стилей дизайна, 15 типов комнат, готовые для объявлений фото для недвижимости, аренды и гостиничного бизнеса. 6 бесплатных кредитов, без кредитной карты.

Редизайн меблированных комнат с AI — 13 стилей, обычно меньше чем за минуту

Редизайн уже меблированных комнат с помощью AI. Замените устаревшую мебель современными стилями, не перемещая ни одного предмета. Идеально подходит для обновления устаревших пространств в домах, отелях и коммерческих интерьерах.

Обработка фото из дня в сумерки

Превратите дневное фото экстерьера или комнаты в фото заката, сумерек или ночи с теплым светом в окнах. Выберите время на 24-часовом ползунке; 2 кредита за фото.

Удаление объектов и предметов с фотографий с помощью AI

Удаляйте нежелательные объекты, беспорядок и отвлекающие факторы с любой фотографии. AI интеллектуально заполняет фон для создания чистых, профессиональных изображений — для объявлений недвижимости, гостиничных номеров, продуктовых снимков и фотографий для портфолио.

Похожие статьи

10 API виртуального стейджинга 2026: цены и функции

10 API виртуального стейджинга 2026: цены и функции

Мы сравнили десять API виртуального стейджинга по опубликованным ценам за изображение, бесплатным пробным периодам, вебхукам, white-label выводу и правилам при сбоях на основе страниц поставщиков за октябрь 2026 года. Включает расчет ежемесячных расходов от 500 до 10 000 изображений.

Читать далее
API виртуального стейджинга 2026: сравнение цен

API виртуального стейджинга 2026: сравнение цен

Цены на API виртуального стейджинга сейчас составляют от $0,02 до примерно $0,53 за изображение. Мы сравниваем опубликованные тарифы восьми провайдеров, скрытые расходы и то, сколько на самом деле стоят 500, 2 500 и 10 000 изображений в месяц.

Читать далее
AB 723 и MLS: правила для фото объявлений с AI

AB 723 и MLS: правила для фото объявлений с AI

Закон Калифорнии AB 723 требует заметного раскрытия информации и пути к оригиналу для каждого измененного AI фото объявления, а такие MLS, как CRMLS, запрещают некоторые правки даже с пометкой. Разбираем, что считается изменением, кто несет ответственность, что изменится для аренды в 2027 году, и приводим чек-лист из 8 вопросов.

Читать далее
API: Конвертация Фото из Дня в Сумерки, 5 API

API: Конвертация Фото из Дня в Сумерки, 5 API

Конвертация из дня в сумерки теперь доступна через вызов API. Мы сравниваем пять провайдеров по ценам, возможностям и доставке результатов, разбираем интеграцию с задачами и вебхуками, а также рассматриваем контроль качества, стратегию пакетной обработки и раскрытие информации.

Читать далее
API для планов этажей и замеров комнат: цены 2026

API для планов этажей и замеров комнат: цены 2026

Только инструменты на основе сканирования, такие как CubiCasa и Apple RoomPlan, измеряют само пространство; API распознавания преобразуют чертежи в данные, а генеративные API, такие как Roomagen, ModelsLab и Decor8, визуализируют новые изображения по планам и эскизам. Вот как они соотносятся по входным данным, результатам, цене и точности.

Читать далее
AI виртуальный стейджинг в Roomagen: 7 шагов (2026)

AI виртуальный стейджинг в Roomagen: 7 шагов (2026)

Пошаговый разбор того, что происходит с вашим фото в Roomagen: анализ сцены, инструкция для моделей изображений Google Gemini, замеренная скорость, кредиты и возвраты, а также то, что вам по-прежнему необходимо проверять и раскрывать.

Читать далее