Vidéo

API de création de vidéo

Générez des vidéos d'annonces immobilières à partir de photos. Ajoutez sous-titres, musique, caractéristiques du bien et branding personnalisé — le tout depuis un seul appel JSON synchrone.

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.

Exemples de vidéos walkthrough
Regardez de vraies vidéos d'annonces générées à partir de quelques photos — verticales et horizontales.
Voir les exemples →

Synchrone, avec un long timeout

L'endpoint se bloque jusqu'à 10 minutes pendant le rendu de la vidéo, puis renvoie l'URL lisible. Configurez le timeout de votre client HTTP à au moins 11 minutes — les 30–60 secondes par défaut de la plupart des bibliothèques HTTP couperont avant que Pedra ne réponde.

Si le rendu dépasse 10 minutes, l'endpoint renvoie 500 avec {"error": "Video processing timeout after 10 minutes..."}. La vidéo peut encore se terminer en arrière-plan — contactez le support avec le corps de la requête si cela arrive.

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é uniquement lorsqu'une image a characteristics.enabled = true.
musicobject
Musique de fond. Objet : { enabled: boolean, track: string }.
voiceobject
Voix off. Objet : { enabled: boolean, audioUrl: string }.
brandingobject
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).

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-in zoom-out static transition
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 }. Activé par défaut en bottom-right avec opacité 1.0. Mettez { enabled: false } pour désactiver.
characteristicsobject
Affiche la superposition propertyCharacteristics sur cette image : { enabled: true }.

Options de filigrane

enabledboolean
Affiche le filigrane Pedra.
Default: true
positionstring
Où apparaît le filigrane.
Values: top-left top top-right left center right bottom-left bottom bottom-right
Default: bottom-right
opacitynumber
De 0.0 (invisible) à 1.0 (entièrement opaque).
Default: 1

Pistes musicales

enabledbooleanobligatoire
Activer la musique de fond.
trackstringobligatoire
Style musical.
Values: calm uplifting corporate piano

Branding

showWatermarkboolean
Affichez votre logo personnalisé comme filigrane à la place de celui de Pedra.
watermarkUrlstring
URL de votre logo (PNG avec transparence recommandé).
showProfessionalPictureboolean
Affiche la photo de l'agent sur la carte finale.
professionalPictureUrlstring
URL du portrait de l'agent.
primaryColorstring
Couleur de marque utilisée pour les superpositions, sous forme de chaîne hex (par exemple, "#007BFF").

Exemple : vidéo minimale

curl -X POST https://app.pedra.ai/api/create_video \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "images": [
      { "imageUrl": "https://example.com/img1.jpg", "effect": "zoom-in" },
      { "imageUrl": "https://example.com/img2.jpg", "effect": "zoom-out" }
    ],
    "isVertical": false,
    "endingTitle": "Contact us!",
    "endingSubtitle": "Visit our website"
  }'

Exemple : vidéo d'annonce de production complète

Walkthrough de 7 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.

curl -X POST https://app.pedra.ai/api/create_video \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "images": [
      {
        "imageUrl": "https://example.com/exterior.jpg",
        "effect": "zoom-in",
        "subtitle": "Renovated 2-bedroom in Barcelona",
        "watermark": {"enabled": true, "position": "bottom-right", "opacity": 0.75},
        "characteristics": {"enabled": true}
      },
      {
        "imageUrl": "https://example.com/living-room.jpg",
        "effect": "zoom-out",
        "subtitle": "Bright, open-plan living space",
        "watermark": {"enabled": true, "position": "bottom-right", "opacity": 0.75}
      },
      {
        "imageUrl": "https://example.com/before.jpg",
        "secondImageUrl": "https://example.com/after.jpg",
        "effect": "transition",
        "title": "Before & After"
      }
    ],
    "isVertical": false,
    "propertyCharacteristics": [
      {"label": "Price", "value": "€450,000"},
      {"label": "Bedrooms", "value": "2"},
      {"label": "Bathrooms", "value": "1"},
      {"label": "Surface", "value": "85 m²"}
    ],
    "music": {"enabled": true, "track": "uplifting"},
    "voice": {"enabled": true, "audioUrl": "https://example.com/voiceover.mp3"},
    "branding": {
      "showWatermark": true,
      "watermarkUrl": "https://example.com/agency-logo.png",
      "showProfessionalPicture": true,
      "professionalPictureUrl": "https://example.com/agent-photo.jpg",
      "primaryColor": "#000000"
    },
    "endingTitle": "Felix Ingla",
    "endingSubtitle": "felix@pedra.ai"
  }'

Réponse

JSON
{
  "message": "Video created successfully",
  "videoId": "<uuid>",
  "videoUrl": "https://pedraimages.s3.eu-west-3.amazonaws.com/<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.

Suivant

Voir Erreurs et limites pour les modes d'échec des tâches vidéo et le comportement des timeouts.