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.

Пов'язані статті

Ця стаття була корисною?