Усі чотири інструменти працюють завданням: відповідь 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}) містить:
| Поле | Опис |
|---|---|
artifacts | id готових файлів |
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 символів |
length | short (за замовчуванням) або long; інше значення вважається short; для long потрібно щонайменше 4 фото (code: long_needs_more_photos) |
aspect | 9:16, 1:1 або 16:9; інше значення - за замовчуванням |
language | мова озвучки: en, ru, ua, de, es, az, ar, fr, zh, tr |
narration | true (за замовчуванням) - з озвучкою |
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.
Пов'язані статті
- Довідкові дані - голоси, аватари, музика, фінальні фрази.
- Завдання і результати - стани і файли.
- Файли - завантаження фото.