DocsAllemagneAfficher la version internationale de la base de connaissances

Contenu et vidéo

Dernière mise à jour: 2026-10-038 min de lecture

Les quatre outils fonctionnent sous forme de tâches : une réponse 202, puis le résultat par interrogation ou par webhook (Tâches et résultats). La voix, la musique, la phrase de clôture et l'avatar se choisissent dans les listes de référence (Données de référence).

Pack de contenu

POST /content/generate - scope tools:contentgen. À partir des caractéristiques du bien et des photos, GREM produit des descriptions, des publications pour les réseaux sociaux, une vidéo commentée, une page de destination et un PDF - en une seule tâche. Un brouillon d'annonce est créé pour le pack.

Au moins 4 photos sont requises - sous forme d'adresses publiques dans form.media.photos. Envoyez d'abord vos propres fichiers avec POST /uploads et transmettez les url renvoyées (Fichiers).

ChampTypeDescription
form.languagestringlangue du résultat : eng, rus, ukr, deu, spa, aze, arb, fra, zho, tur
form.media.photosarray4-20 adresses de photos (chaînes ou { "url": "..." }) - obligatoire
form.objectIdstringconstruire le pack pour une de vos annonces existantes
form.objectTypestringproperty, rental ou complex
form.propertyCategorystringtype de bien : apartment, house, penthouse, land, warehouse ...
form.dealTypestringsale ou rent
form.titlestringtitre
form.descriptionstringvotre description - utilisée comme source de faits
form.customDirectionstringsouhaits de ton et d'accents, jusqu'à 500 caractères
form.totalAreanumberm²
form.rooms, form.floor, form.buildingFloorsnumberpièces, étage, nombre d'étages
form.landPlotAreanumberterrain, m² (maisons)
form.pricenumberprix
form.priceCurrencystringdevise du prix
form.addressCountry, form.addressCity, form.street, form.streetNumberstringadresse
form.voiceIdstringvoix de narration issue de GET /voices
form.enableSubtitlesoui/nonsous-titres de la vidéo, activés par défaut
form.showPhoneoui/nonafficher le téléphone ; le numéro se place dans form.contactPhone
form.options.music.trackIdstringpiste issue de GET /video/music ; form.options.music.enabled: false - sans musique
form.options.endCard.stylestringcarton de fin : photo, solid ou split

Aucun champ user n'est nécessaire : le pack est créé au nom du compte de la clé.

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"] }
    }
  }'

Réponse 202 : jobId (identifiant de la tâche) et propertyId (le brouillon d'annonce). La tâche terminée (GET /content/generate/jobs/{id}) contient :

ChampDescription
artifactsidentifiants des fichiers générés
artifactsSummaryune entrée par fichier : nature, format, taille
bundlela page de destination et le PDF du pack, lorsqu'ils ont été créés
progressavancement de la génération pendant l'exécution de la tâche
masterProfilele canevas narratif sur lequel reposent les textes et la narration
errorpour une tâche en échec : la raison, sous forme de texte générique

Fichier : GET /artifacts/v1/ai/assistant/announcement/jobs/{jobId}/artifacts/{artifactId}/download. Événements - content.completed, content.partial (certains fichiers ont échoué), content.failed. Moins de 4 photos - 400.

Textes d'annonce

POST /text/generate - scope tools:text. Une description, une présentation et une publication pour les réseaux sociaux. Nécessite soit objectId, soit au moins l'un des champs description, city, totalArea - sinon 422 avec code: not_enough_input.

ChampTypeDescription
objectIdstringvotre annonce (ou celle de votre agence)
titlestringjusqu'à 120 caractères
descriptionstringvotre description, jusqu'à 2000 caractères
citystringville
totalAreanumberm²
roomsnumberpièces
pricenumberprix
currencystringdevise du prix
propertyCategorystringtype de bien
languagestringen (par défaut), ru, ua, de, es, az, ar, fr, zh, tr
customDirectionstringsouhaits de ton et d'accents ; un texte plus long est tronqué à 500 caractères
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 avec jobId. Les textes se trouvent dans les fichiers de la tâche, comme pour le pack de contenu ; la tâche contient aussi progress, masterProfile et error. Événements - text.completed / text.failed.

Vidéo à partir de photos

POST /video/create - scope tools:video. Une courte vidéo commentée à partir de vos photos ou des photos d'une annonce.

Corps - multipart/form-data, chaque option dans son propre champ de formulaire (et non du JSON dans un champ data) :

ChampDescription
photosfichiers photo, de 1 à 8 - une partie par fichier ; inutile avec objectId ; JPEG, PNG, WebP ou HEIC jusqu'à 20 MB chacun ; les photos au-delà de la 8e ne sont pas utilisées
objectIdprendre les photos et les caractéristiques de votre annonce
promptle sujet de la vidéo, jusqu'à 500 caractères ; obligatoire sans objectId ; un texte plus long est tronqué
titletitre, jusqu'à 120 caractères
lengthshort (par défaut) ou long ; toute autre valeur est traitée comme short ; long nécessite au moins 4 photos (code: long_needs_more_photos)
aspect9:16, 1:1 ou 16:9 ; toute autre valeur - la valeur par défaut
languagelangue de la narration : en, ru, ua, de, es, az, ar, fr, zh, tr
narrationtrue (par défaut) - avec narration
voiceIdvoix issue de GET /voices
enableSubtitlessous-titres
musicEnabledavec musique
musicTrackIdpiste issue de GET /video/music
musicVolumevolume de la musique, 0-100
musicvotre propre fichier musical à la place d'une piste
endCardEnabled, endCardStylecarton de fin : photo, solid ou split
ctaModephrase de clôture : auto (par défaut) - choisie en fonction de l'annonce ; manual - utiliser ctaIntent ou ctaText
ctaIntentune phrase de clôture prête à l'emploi : l'une des valeurs intent de GET /video/endings
ctaTextvotre propre phrase de clôture, jusqu'à 60 caractères
ctaMarketà qui s'adresse la vidéo : local, remote ou international ; ajuste la phrase auto
curl -X POST https://developers.grem.capital/api/v1/video/create \
  -H "Authorization: Bearer gsk_live_xxx" \
  -F "photos=@living.jpg" -F "photos=@kitchen.jpg" -F "photos=@view.jpg" \
  -F "prompt=Sunny 2-room flat in Berlin Mitte, quiet courtyard" \
  -F "length=short" -F "aspect=9:16" -F "language=en"

202 avec jobId ; la vidéo se trouve dans les fichiers de la tâche. La tâche contient aussi progress, masterProfile et error, comme pour le pack de contenu. Le prix dépend de length. Événements - video.completed / video.failed.

Vidéo avec avatar

POST /avatar/video - scope tools:avatar. Un présentateur parle de votre annonce.

ChampTypeDescription
avatarIdstringobligatoire : un avatar au statut ready issu de GET /avatar/avatars
objectIdstringobligatoire : votre annonce
scriptTextstringobligatoire : le texte du présentateur, au moins 100 caractères ; au plus 1200
voiceIdstringvoix issue de GET /voices
languagestringlangue
background.typestringarrière-plan : color, photo ou slideshow
background.colorstringcouleur d'arrière-plan #RRGGBB
background.photoUrlstringphoto d'arrière-plan
dimension.width, dimension.heightnumbertaille de l'image, 100-4096 px ; envoyez les deux ou aucun
enableSubtitlesoui/nonsous-titres
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 avec jobId. Vidéo : GET /artifacts/v1/ai/assistant/avatar/jobs/{jobId}/artifacts/{artifactId}/download, artifactId issu des artifacts de la tâche terminée. Événements - avatar.completed / avatar.failed. avatarId ou objectId manquant, ou texte trop court - 400 avec les champs dans errors.

Voir aussi

Cet article vous a-t-il aidé ?