Версия
Мажорная версия - в пути: /api/v1. В рамках v1 мы не ломаем существующие интеграции. Текущая версия контракта - поле info.version в /openapi.json; она растет с каждым изменением.
Что может измениться без предупреждения
Эти изменения совместимы, и ваш клиент должен их выдерживать:
- новые операции и инструменты;
- новые необязательные поля в запросах;
- новые поля в ответах;
- новые значения в перечнях в ответах (статусы, коды), новые коды ошибок в
title, новые типы событий вебхуков; - изменение текста в
detail; - рост лимитов.
Как писать клиента
- Игнорируйте неизвестные поля ответа.
- Неизвестное значение перечня, неизвестный код ошибки или тип события обрабатывайте как «другое», а не как сбой.
- Ветвитесь по
status,titleиcode, а не по текстуdetail. - Не полагайтесь на порядок полей и длину идентификаторов.
- Ориентируйтесь на
stateзадачи, а не на сыройstatusинструмента.
Что считается несовместимым
Удаление или переименование операции, поля, области доступа или события; новое обязательное поле в запросе; изменение типа поля или его смысла; изменение кода ответа для того же случая; сужение допустимых значений. Таких изменений в v1 мы не делаем без предупреждения: операция сначала помечается как устаревшая (deprecated) в /openapi.json и в этом журнале и продолжает работать не меньше 6 месяцев. Исключение - закрытие уязвимости.
Исправление, которое приводит ответ в соответствие с этой документацией, несовместимым изменением не считается.
Журнал изменений
2026-10-03 - версия 1.16
Изменено:
429содержитcode:minute_limitилиdaily_limit(дневной лимит ключа, обновляется в 00:00 UTC).- Объект, записанный ключом агентства, принадлежит агентству; вебхуки
object.*иlead.*для объектов и лидов агентства доходят и до адресов агентства. - Фото объекта: до 50 для любого вида, как в кабинете.
- SDK 1.7.2: пустая часть потока больше не разрезает событие чата.
Исправлено:
PUT /objects/{kind}/{id}сохраняет состояние модерации,isSoldи публикацию объекта; раньше сбрасывал их (обычная правка снимала живой объект с публикации).GET /objectsбольше не показывает объекты заблокированных владельцев; карточка, скрытая от гостей, не отдается и по id.PATCH /leads/{id}: отправитель лида без договора может менять его статус, как в кабинете; смена и архивация записываются в историю лида.
2026-10-03 - версия 1.15
Изменено:
PATCH /leads/{id}(статус) иDELETE /leads/{id}соблюдают правила кабинета: финализация, сбор комиссии, действующий договор или соглашение -422с причиной вcode.?expand=historyбольше не содержит служебных метаданных (токены, id других пользователей).- Дневной лимит бесплатного чата отвечает
code: free_daily_limitсRetry-Afterдо 00:00 UTC. GET /works:previewUrl,linkиobject.photoUrl- пути/files/...дляGET /artifacts/{path}; на последней страницеnextCursor-null.- Запись лида: неизвестные поля отбрасываются (а не отклоняются); в спецификации длины, которые проверяет сервис;
pool: trueпередает лид в пул платформы. - SDK 1.7.1:
jobs.waitпережидает429;chat.streamобрабатывает CRLF, разорванный между частями;artifact()принимаетsignal.
Исправлено:
- Превью музыки:
Rangeза концом файла -416(отвечало404); сбой файлового сервиса -502, а не404. - Файл больше 15 МБ в
POST /uploads-413. ОтказstrictPhotosназывает фото, которые не загрузились (code: photo_fetch_failed). - Отказ пакета контента называет
form.media.photos. Песочница: проверка отчета берет первый файл с любым именем; строки аренды и служебные ключи фото не отклоняются.
2026-10-03 - версия 1.14
Изменено:
- Повтор экспресс-оценки с тем же
Idempotency-Keyтеперь полностью бесплатный: вызов API тоже не списывается. GET /works:cursor, который не являетсяnextCursor, -400(список молча начинался сначала).POST /webhooks/{id}/test:eventType, которого нет в списке, -400(отправлялся общий тест).- Swipe Match:
reasonCodeпринимает только перечисленные причины, как сервис требовал и раньше;kindлида может бытьpool. - SDK 1.7.0:
jobs.waitпереживает один неудачный запрос;artifact()принимаетrange;chat.streamчитает потоки с CRLF и вызывается раз на событие.
Исправлено:
- Превью музыки:
bytes=-Nвозвращает последние N байтов,Rangeза концом файла -416. - Тайм-аут соединения до отправки запроса освобождает
Idempotency-Key. - Песочница: фото видео под любым именем поля, которое читает сервис, числа аренды строкой, PNG флаера заявленного размера.
2026-10-03 - версия 1.13
Добавлено:
GET /worksвозвращает то, что кабинет показывает для каждого результата:street,streetNumber,previewUrl,link,repeatIndex,errorи объект (object).- У
GET /chat/sessionsописаны параметры:limit,cursor,q,projectId,archivedOnly,sort. Problem.titleв спецификации содержитrange_not_satisfiable; список вебхуков содержитrequestId.- SDK 1.6.1:
chat.listSessionsпринимает параметры списка.
Изменено:
- Спецификация называет ограничения, которые бой уже применял:
scriptTextаватара до 1200 символов,formatsфлаера до 3 иlayoutsдо 5, длины полейcontactsфлаера,seedфото до 2147483647 и никаких неизвестных ключей вdataфото. - Экспресс-оценка: шлюз отклоняет только запрос совсем без площади и без типа объекта; считается ли
landPlotArea, решает сервис (участок, названный вpropertyTypeилиapartmentType, тоже считается).
Исправлено:
- Песочница отклоняет фото так же, как бой (JPEG, PNG или WebP до 25 МБ -
JOB_CREATE_FAILED; маска вне cleanup -MASK_NOT_SUPPORTED), и принимает то, что бой обрезает или заменяет (название, громкость, финальный кадр и параметры финальной фразы видео, язык сайта, больше 20 фото контента,furnishedсловом в аренде). Задача отчета больше не показываетpendingпослеrunning. - Отклоненный редирект скачивания так и называется, а не таймаутом; суффикс
Rangeдлиннее файла возвращает весь файл. - SDK 1.6.1:
verifyWebhookSignatureработает в Node 18.
2026-10-03 - версия 1.12
Добавлено:
416 range_not_satisfiableкак проблема RFC 9457 (приходил с пустым телом).priceMinorв запуске улучшения фото: сколько списано за вызов, как показывает кабинет.- SDK 1.6.0:
worksпринимаетfrom/to,chat.history-limit/cursor,chat.sendMessage-style.
Изменено:
GET /match/leads:limitбольше 50 илиpageбольше 1000 -400(их никогда не обрезали).POST /match/leads/{id}/events:Idempotency-Keyдругого формата -400, а не молчаливое отбрасывание.- Поле, отклоненное флаером, -
400 validationс именем поля (было422). - Вызов, оплата которого еще резервируется под тем же
Idempotency-Key, -409 idempotency_conflict(было422). - Экспресс-оценка:
landPlotAreaсчитается площадью только дляland, как в сервисе. - Таймаут, сброшенное соединение или сокет, закрытый посреди ответа, оставляют
Idempotency-Keyзанятым; освобождает его только запрос, не дошедший до сервиса. - SDK 1.6.0: загрузка после
503не повторяется; слушатель отмены снимается после каждой паузы.
Исправлено:
- Отказы PDF и сайта несут причину:
402сINSUFFICIENT_FUNDSилиQUOTA_EXCEEDED(было422безcode). - Песочница отклоняет ровно то, что и бой: тип и размер загруженных файлов; тексты обрезаются, а не отклоняются; неизвестные
length,aspectиlanguageвидео заменяются значениями по умолчанию; коды флаера без учета регистра; черновик безtype. Симуляция нехватки средств отвечаетINSUFFICIENT_FUNDS- кодом, который присылает бой. limitиpageобрезает сам шлюз (GET /chat/history?limit=500отвечал400;limit=0давал 20 вместо 1).
2026-10-03 - версия 1.11
Добавлено:
- Результаты задач содержат поля, которые показывает кабинет: пакет контента, тексты и видео -
progress,masterProfile(сюжетная основа, на которой построены тексты и озвучка) иerrorу задачи со сбоем; фото -metadata.error; планировка -rooms[].stable,rooms[].placement,sourceFileId. - Браузеры (CORS) могут читать заголовки
RateLimit-*,Retry-After,Grem-Sandbox,X-Request-IdиContent-Range.
Изменено:
- Вебхуки: тестовый ключ создает и меняет только адреса песочницы; они получают только события задач песочницы, а боевые адреса их не получают никогда.
limitиpageвне диапазона приводятся к нему вместо400;kindвGET /objectsне зависит от регистра;roomsможет быть дробным.Idempotency-Keyпринадлежит API-ключу, методу и фактическому пути (POST /objects/propertyиPOST /objects/rental- разные операции). После таймаута создание объекта и лида удерживает ключ 15 минут, как инструменты; запрос, не дошедший до сервиса, ключ освобождает.text/generate:customDirectionобрезается до 500 символов.- SDK 1.5.1:
503на запись повторяется только сIdempotency-Key;Retry-Afterбольше 30 секунд не ждется;maxRetries- не больше 10; вашAbortSignalпрерывает паузу; id сообщений работают в Node 18.
Исправлено:
- Песочница работает как бой: проверка полей
multipart, полей отчета по категориям, значений отопления дома, коммерческихapartmentTypeи ЖК; файлы - только у завершенных задач, по пути своего инструмента и с известными id артефактов;Grem-Sandboxи в ответах до проверки ключа;Grem-Simulateне зависит от регистра. - Без ключа неверные параметры запроса сначала дают
401. - Ключ агентства, привязанный к агенту, больше не читает задачи, запущенные общим ключом агентства.
- Адреса вебхуков, сохраненные раньше с другим портом, продолжают получать доставки.
- Невыполнимый
Rangeдает416вместо404; документ для проверки отчета принимается до 40 МБ.
2026-10-03 - версия 1.10
Добавлено:
- Код ошибки
conflict(409): ресурс в состоянии, которое не позволяет действие (Ошибки). - Поля финальной фразы видео в
POST /video/create:ctaMode,ctaIntent,ctaText,ctaMarket; вариантыGET /video/endingsсодержатintentиtext. GET /works: фильтрыfromиto.- SDK 1.5.0: опция
maxRetries-429и503повторяются послеRetry-After.
Изменено:
- Параметры запроса проверяются: известный параметр с недопустимым значением -
400 validationс названием поля. - Вебхуки: только
httpsна порту 443, без логина и пароля в URL; 11-й адрес -422; вебхуками агентства управляет только ключ всего агентства. Idempotency-Keyпринадлежит API-ключу и операции; после таймаута инструмента ключ остается занятым 15 минут.- Денежные отказы (квота, долг, добросовестное использование, баланс) -
402 insufficient_fundsсcode. - Ключ агента агентства видит только свои задачи и файлы.
- Скачивание файлов считается в лимит частоты.
Исправлено:
- Любая ошибка, включая слишком большое или битое тело, приходит в формате RFC 9457
application/problem+json; тело больше лимита -413 payload_too_large. - Поле видео
endingникогда не читалось; используйтеctaIntentилиctaText. - SDK:
simulateс боевым ключом выбрасывает ошибку вместо запуска вызова.
2026-10-03 - версии 1.8-1.9
Добавлено:
- Аналоги:
estimate.analogsв экспресс-оценке,analogsв полном отчёте,compsв оценке аренды - то же, что в кабинете и PDF. - Поля готовых задач описаны полностью: цифры отчёта под настоящими именами (
potPrice,priceRangeLow,priceRangeHigh, …), проверка отчёта, планировка, фото, флаер, черновик. - SDK 1.4.0: тип
Analog.
Изменено:
- Ответы инструментов содержат только описанные поля; внутренние поля, которые раньше проскакивали, больше не отдаются.
- Инструмент, который
GET /tools/statusпоказывает недоступным, отвечает503 service_unavailableдо списания (раньше - только пакет контента, тексты и видео). - Ответ подтверждения проверки отчёта содержит только поля задачи (
jobId,state,status); устаревшего_idв нём больше нет.
Исправлено:
- Видео аватара:
artifactsсодержит id, нужные для ссылки на скачивание. checkIn/checkOutаренды описаны как час дня.
2026-10-02 - версия 1.7
Добавлено:
- Песочница: тестовые ключи (
gsk_test) имитируют инструменты без оплаты; заголовокGrem-Simulateвыбирает результат. estimate.confidenceScoreв экспресс-оценке.
Изменено:
- Запуск инструмента ждёт до 5 минут вместо 60 секунд.
- Экспресс-оценка, повторённая с тем же
Idempotency-Key, возвращает готовый результат без второго списания, в том числе после таймаута.
Исправлено:
estimate.confidenceэкспресс-оценки всегда былnull.- Ответы плана этажа больше не содержат внутренних полей.
GET /objectsбезkindи отказы по объектам и лидам теперь объясняют причину вdetail.
2026-10-02 - версия 1.6
Изменено:
- Каждый ответ задачи содержит одно и то же поле
jobId. Прежние именаid,_id,contentGenJobIdеще возвращаются, но устарели. - SDK 1.2.0:
Job.jobIdесть всегда.
2026-10-02 - версии 1.2-1.5
Добавлено:
GET /voices,GET /avatar/avatars,GET /video/music,GET /video/endings- идентификаторы для инструментов (Справочные данные).GET /tools/status- доступность инструментов;GET /works- история работ.POST /flyer/create- персональный флаер, областьtools:flyer.POST /valuation/review/jobs/{id}/confirm- подтверждение данных проверки отчета.- Поле
stateво всех ответах задач. - В ошибках - поля
codeиerrors, кодыforbidden,payload_too_large,service_unavailable. - В описании API - полные схемы запросов и ответов каждого инструмента, полный контракт записи объектов для каждого типа, класс оплаты каждой операции (
x-grem-billing), список областей доступа и событий. - Параметры
scope(объекты) иpool(лиды) описаны в справке.
Изменено:
- Отказ из-за нехватки данных (например, тексты без описания и города) теперь
422 business_ruleс причиной и кодом. Раньше приходило502 provider_error. - Отказ из-за прав на ресурс теперь
403 forbiddenс причиной. Раньше приходило500. - Тестовая доставка вебхука для инструментов имеет ту же форму, что и боевая:
{ jobId, status, state }.
Исправлено:
- Ключи агентства работают со всеми инструментами, чатом и скачиванием файлов.
- Проверка отчета и планировка: статус задачи доступен по id из ответа, вебхуки приходят.
- Скачивание файлов пакета контента, текстов и видео - только для владельца задачи.