Générez des vidéos d'annonces à partir de photos, modifiez-les sans nouveau rendu, ajoutez des voix off IA avec sous-titres synchronisés et choisissez une musique de fond — le tout depuis des appels JSON synchrones.
POST/api/create_video
Construit une vidéo MP4 à partir d'une liste d'images avec effets de mouvement, sous-titres optionnels, musique de fond, superpositions de caractéristiques du bien et cartes finales. L'endpoint est synchrone : il se bloque jusqu'à ce que la vidéo soit rendue, puis renvoie HTTP 200 avec l'videoUrl final.
L'endpoint se bloque pendant le rendu de la vidéo, puis renvoie l'URL lisible. Le rendu peut prendre plusieurs minutes, alors configurez le timeout de votre client HTTP de manière généreuse — les 30–60 secondes par défaut de la plupart des bibliothèques HTTP couperont avant que Pedra ne réponde.
Paramètres principaux
apiKeystringobligatoire
Votre clé API.
imagesarrayobligatoire
Liste ordonnée d'objets image. Chacun devient une image/un clip dans la vidéo. Voir "Objet image" ci-dessous.
isVerticalboolean
Format vertical 9:16 pour Instagram Reels / TikTok. Par défaut 16:9 horizontal.
Default:false
propertyCharacteristicsarray
Tableau de paires {label, value} (Bedrooms, Bathrooms, Surface, Price, etc). Affiché par défaut sur chaque image lorsqu'il est fourni ; mettez characteristics.enabled = false sur une image pour le masquer à cet endroit.
musicobject
Musique de fond. Objet : { enabled: boolean, track: string }.
Logo personnalisé, photo de l'agent et superposition de couleur de marque. Voir la section "Branding".
endingTitlestring
Titre affiché sur la carte finale.
endingSubtitlestring
Sous-titre sur la carte finale (généralement un CTA ou des coordonnées).
propertyIdstring
Id optionnel de la propriété (de list_properties ou create_property) à laquelle appartiennent ces photos. Si renseigné, la vidéo finale est enregistrée dans cette propriété — visible dans son onglet Vidéos et modifiable depuis l'app — au lieu d'être seulement renvoyée sous forme d'URL.
Objet image
Chaque entrée de images décrit une image :
imageUrlstringobligatoire
URL de la photo (ou URI data base64).
effectstringobligatoire
Effet de mouvement appliqué à cette image.
Values:zoom-inzoom-outstatictransition
secondImageUrlstring
Requis lorsque effect = "transition". Image vers laquelle effectuer la transition.
subtitlestring
Légende affichée sur cette image.
titlestring
Superposition de grand titre (par exemple, "Living Room", "Kitchen").
watermarkobject
Configuration du filigrane : { enabled, position, opacity }. Désactivé par défaut. Mettez { enabled: true } pour appliquer votre filigrane (bottom-right, opacité 1.0 par défaut).
characteristicsobject
Affiche/masque la superposition propertyCharacteristics sur cette image. Activée par défaut lorsque propertyCharacteristics est fourni ; mettez { enabled: false } pour la masquer.
Walkthrough de 3 images avec effets mélangés (zoom-in / zoom-out / transition / static), filigrane personnalisé + photo de l'agent + couleur de marque, musique, voix off, sous-titres par image, superposition des caractéristiques du bien et carte finale. Correspond au payload réel utilisé par l'application Pedra elle-même.
{
"message": "Video created successfully",
"videoId": "<uuid>",
"videoUrl": "https://img.pedra.ai/<uuid>"
}
Crédits
Chaque image coûte 5 crédits — sauf les images avec effect: "static", qui sont gratuites. Une vidéo de 5 images avec tous les effets zoom-in/zoom-out déduit 25 crédits. Voir Tarification.
Erreurs de validation
HTTP 400 est renvoyé pour :
Tableau images manquant ou vide.
Toute image sans imageUrl (l'erreur indique l'index fautif).
effect hors de [zoom-in, zoom-out, transition, static].
effect: "transition" sans secondImageUrl.
Étiquettes de caractéristiques disponibles
Lorsque vous utilisez propertyCharacteristics, les clés d'étiquettes suivantes s'affichent avec des icônes correspondantes dans la superposition : Bedrooms, Bathrooms, Surface, Price, Location, Parking, Heating, Outdoor. Les étiquettes personnalisées sont acceptées mais s'affichent sans icône.
Mettre à jour une vidéo existante
POST/api/update_video
Modifie une vidéo déjà créée — via videoId — sans refaire le rendu des clips inchangés. Réorganiser, changer la musique ou la voix off, modifier le branding, les cartes finales, les sous-titres et les titres sont réassemblés gratuitement. Seules les photos nouvelles ou modifiées sont réanimées (et coûtent des crédits). Comme create_video, l'appel est synchrone et renvoie la nouvelle videoUrl. Si la vidéo a été créée avec un propertyId, ce lien est hérité automatiquement — inutile de le renvoyer.
Sémantique de mise à jour partielle
Tous les champs sauf videoId sont optionnels. Omettez images pour conserver la timeline existante et ne changer que l'audio/le texte/le branding (un réassemblage gratuit). Omettez music, voice, branding ou le texte de fin pour laisser chacun à sa valeur enregistrée — modifier la musique n'efface jamais la voix off, et inversement. Lorsque vous envoyez images, un clip dont la photo + l'effet (+ la seconde photo pour les transitions) correspond à un clip existant est réutilisé tel quel.
Paramètres principaux
apiKeystringobligatoire
Votre clé API.
videoIdstringobligatoire
Id de la vidéo à modifier (le videoId renvoyé par create_video).
imagesarray
Liste ordonnée complète d'images pour reconstruire la timeline ; les clips correspondant à une photo + effet existants sont réutilisés (sans nouveau rendu, sans crédits). Omettez-le pour conserver la timeline actuelle et ne modifier que l'audio/le texte/le branding.
musicobject
Musique de fond. Objet : { enabled: boolean, track: string }.
Logo personnalisé, photo de l'agent et superposition de couleur de marque. Voir la section "Branding".
endingTitlestring
Titre affiché sur la carte finale.
endingSubtitlestring
Sous-titre sur la carte finale (généralement un CTA ou des coordonnées).
isVerticalboolean
Format vertical 9:16 pour Instagram Reels / TikTok. Par défaut 16:9 horizontal.
propertyCharacteristicsarray
Tableau de paires {label, value} (Bedrooms, Bathrooms, Surface, Price, etc). Affiché par défaut sur chaque image lorsqu'il est fourni ; mettez characteristics.enabled = false sur une image pour le masquer à cet endroit.
Les clips réutilisés ne coûtent rien. Seules les images nouvelles ou modifiées (non statiques) sont réanimées à 5 crédits chacune. Une modification uniquement musique/voix/texte est gratuite. Remarque : les vidéos créées avant la réutilisation des clips réaniment tous les clips lors de leur première modification basée sur les images.
Voix off et audio
Un flux en deux étapes : rédigez un script à partir des photos (ou fournissez le vôtre), faites-en le rendu audio, puis attachez l'audioId renvoyé à l'objet voice d'une vidéo. Les sous-titres sont générés automatiquement à partir du minutage des mots de la voix off.
Générer un script de voix off
POST/api/generate_voice_script
Rédige un script de voix off court et naturel à partir des photos de l'annonce et (optionnellement) des informations sur le bien. Utilise la vision pour que le script reflète ce qui est réellement sur les images. Renvoie le texte du script — transmettez-le à /api/generate_voice, ou modifiez-le d'abord.
Paramètres principaux
apiKeystringobligatoire
Votre clé API.
imagesarray
Photos sur lesquelles baser le script — un tableau de chaînes URL ou d'objets { imageUrl }. Les premières sont analysées par vision.
propertyCharacteristicsarray
Informations {label, value} optionnelles sur le bien à intégrer au script (Bedrooms, Surface, Price, etc).
languagestring
Langue du script. Anglais par défaut. Voir /api/music_library pour les valeurs acceptées.
{
"message": "Script generated successfully",
"script": "Welcome to this bright, renovated two-bedroom apartment. Step into a sunlit, open-plan living space with room to breathe across 85 square metres."
}
La génération de script est gratuite.
Générer une voix off
POST/api/generate_voice
Effectue le rendu d'un script en piste de voix off via la synthèse vocale. Renvoie un audioId — transmettez-le au voice.audioId d'une vidéo dans create_video ou update_video pour attacher la narration (et ses sous-titres synchronisés).
Paramètres principaux
apiKeystringobligatoire
Votre clé API.
textstringobligatoire
Le script à narrer. 1000 caractères maximum.
languagestring
Langue de la voix (sélectionne le locuteur). Anglais par défaut. Voir /api/music_library pour les valeurs acceptées.
Default:English
curl -X POST https://app.pedra.ai/api/generate_voice \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"text": "Welcome to this bright, renovated two-bedroom apartment.",
"language": "English"
}'
Chaque voix off coûte 1 crédit. La limite de texte est de 1000 caractères.
Lister la bibliothèque musicale
POST/api/music_library
Renvoie les valeurs valides de music.track (clés de genre) avec leurs libellés, ainsi que les langues acceptées par les endpoints de voix off. En lecture seule — ne déduit jamais de crédits et accepte GET ou POST.