Docs

Контент и видео

Последнее обновление: 2026-10-037 мин чтения

Все четыре инструмента работают задачей: ответ 202, результат - опросом или вебхуком (Задачи и результаты). Голос, музыку, финальную фразу и аватар выбирают из справочников (Справочные данные).

Пакет контента

POST /content/generate - область tools:contentgen. Из фактов объекта и фото GREM делает описания, посты для соцсетей, озвученное видео, сайт и PDF - одной задачей. Под пакет создается черновик объекта.

Нужно не меньше 4 фото - публичными адресами в form.media.photos. Свои файлы сначала загрузите через POST /uploads и передайте полученные url (Файлы).

ПолеТипОписание
form.languageстрокаязык результата: eng, rus, ukr, deu, spa, aze, arb, fra, zho, tur
form.media.photosмассив4-20 адресов фото (строки или { "url": "..." }) - обязательное
form.objectIdстрокасделать пакет для вашего существующего объекта
form.objectTypeстрокаproperty, rental или complex
form.propertyCategoryстрокатип недвижимости: apartment, house, penthouse, land, warehouse ...
form.dealTypeстрокаsale или rent
form.titleстроканазвание
form.descriptionстрокаваше описание - берется как факты
form.customDirectionстрокапожелания к тону и акцентам, до 500 символов
form.totalAreaчислом²
form.rooms, form.floor, form.buildingFloorsчислокомнаты, этаж, этажей
form.landPlotAreaчислоучасток, м² (дома)
form.priceчислоцена
form.priceCurrencyстрокавалюта цены
form.addressCountry, form.addressCity, form.street, form.streetNumberстрокаадрес
form.voiceIdстрокаголос озвучки из GET /voices
form.enableSubtitlesда/нетсубтитры в видео, по умолчанию да
form.showPhoneда/нетпоказать телефон; номер - в form.contactPhone
form.options.music.trackIdстрокатрек из GET /video/music; form.options.music.enabled: false - без музыки
form.options.endCard.styleстрокафинальная карточка: photo, solid или split

Поле user не нужно: пакет создается от имени аккаунта ключа.

curl -X POST https://developers.grem.capital/api/v1/content/generate \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 0c0e3a5b-7d1e-4b8a-9b2f-1e6d4c3a2b10" \
  -d '{
    "form": {
      "language": "eng",
      "propertyCategory": "apartment", "dealType": "sale",
      "title": "Bright 2-room flat near the park",
      "totalArea": 64, "rooms": 2, "price": 320000, "priceCurrency": "EUR",
      "addressCountry": "Germany", "addressCity": "Berlin",
      "media": { "photos": ["https://example.com/1.jpg", "https://example.com/2.jpg",
                             "https://example.com/3.jpg", "https://example.com/4.jpg"] }
    }
  }'

Ответ 202: jobId (id задачи) и propertyId (черновик объекта). Готовая задача (GET /content/generate/jobs/{id}) содержит:

ПолеОписание
artifactsid готовых файлов
artifactsSummaryпо записи на файл: тип, формат, размер
bundleсайт и PDF пакета, если собраны
progressход генерации, пока задача выполняется
masterProfileсюжетная основа, на которой построены тексты и озвучка
errorу задачи со сбоем: причина, общим текстом

Файл: GET /artifacts/v1/ai/assistant/announcement/jobs/{jobId}/artifacts/{artifactId}/download. События - content.completed, content.partial (часть файлов не получилась), content.failed. Меньше 4 фото - 400.

Тексты объявления

POST /text/generate - область tools:text. Описание, презентация и пост для соцсетей. Нужен либо objectId, либо хотя бы одно из: description, city, totalArea - иначе 422 с code: not_enough_input.

ПолеТипОписание
objectIdстрокаваш объект (или объект вашего агентства)
titleстрокадо 120 символов
descriptionстрокаваше описание, до 2000 символов
cityстрокагород
totalAreaчислом²
roomsчислокомнат
priceчислоцена
currencyстрокавалюта цены
propertyCategoryстрокатип недвижимости
languageстрокаen (по умолчанию), ru, ua, de, es, az, ar, fr, zh, tr
customDirectionстрокапожелания к тону и акцентам; текст длиннее 500 символов обрезается до 500
curl -X POST https://developers.grem.capital/api/v1/text/generate \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"city":"Berlin","totalArea":64,"rooms":2,"propertyCategory":"apartment","language":"en","description":"Renovated, quiet courtyard, 5 min to U-Bahn."}'

Ответ 202 с jobId. Тексты - в файлах задачи, как у пакета контента; задача также содержит progress, masterProfile и error. События - text.completed / text.failed.

Видео из фото

POST /video/create - область tools:video. Короткое озвученное видео из ваших фото или из фото объекта.

Тело - multipart/form-data, каждый параметр отдельным полем формы (не JSON в поле data):

ПолеОписание
photosфайлы фото, от 1 до 8 - по части на файл; не нужны, если есть objectId; JPEG, PNG, WebP или HEIC до 20 МБ каждое; фото после 8-го не используются
objectIdвзять фото и факты из вашего объекта
promptо чем ролик, до 500 символов; обязателен без objectId; более длинный текст обрезается
titleназвание, до 120 символов
lengthshort (по умолчанию) или long; другое значение считается short; для long нужно не меньше 4 фото (code: long_needs_more_photos)
aspect9:16, 1:1 или 16:9; другое значение - по умолчанию
languageязык озвучки: en, ru, ua, de, es, az, ar, fr, zh, tr
narrationtrue (по умолчанию) - с озвучкой
voiceIdголос из GET /voices
enableSubtitlesсубтитры
musicEnabledс музыкой
musicTrackIdтрек из GET /video/music
musicVolumeгромкость музыки, 0-100
musicсвой файл музыки вместо трека
endCardEnabled, endCardStyleфинальная карточка: photo, solid или split
ctaModeфинальная фраза: auto (по умолчанию) - подбирается под объект; manual - берется ctaIntent или ctaText
ctaIntentготовая финальная фраза: одно из значений intent из GET /video/endings
ctaTextсвоя финальная фраза, до 60 символов
ctaMarketк кому обращено видео: local, remote или international; настраивает фразу auto
curl -X POST https://developers.grem.capital/api/v1/video/create \
  -H "Authorization: Bearer gsk_live_xxx" \
  -F "[email protected]" -F "[email protected]" -F "[email protected]" \
  -F "prompt=Sunny 2-room flat in Berlin Mitte, quiet courtyard" \
  -F "length=short" -F "aspect=9:16" -F "language=en"

Ответ 202 с jobId; видео - в файлах задачи. Задача также содержит progress, masterProfile и error, как у пакета контента. Цена зависит от length. События - video.completed / video.failed.

Видео с аватаром

POST /avatar/video - область tools:avatar. Ведущий рассказывает о вашем объекте.

ПолеТипОписание
avatarIdстрокаобязательное: аватар со статусом ready из GET /avatar/avatars
objectIdстрокаобязательное: ваш объект
scriptTextстрокаобязательное: текст ведущего, от 100 символов; не больше 1200
voiceIdстрокаголос из GET /voices
languageстрокаязык
background.typeстрокафон: color, photo или slideshow
background.colorстрокацвет фона #RRGGBB
background.photoUrlстрокафото фона
dimension.width, dimension.heightчислоразмер кадра, 100-4096 px; передавайте оба или ни одного
enableSubtitlesда/нетсубтитры
curl -X POST https://developers.grem.capital/api/v1/avatar/video \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"avatarId":"AVATAR_ID","objectId":"OBJECT_ID","voiceId":"VOICE_ID","scriptText":"..."}'

Ответ 202 с jobId. Видео: GET /artifacts/v1/ai/assistant/avatar/jobs/{jobId}/artifacts/{artifactId}/download, artifactId — из artifacts готовой задачи. События - avatar.completed / avatar.failed. Без avatarId, objectId или с коротким текстом - 400 с полями в errors.

Связанные статьи

Эта статья была полезной?