Passer au contenu principal

POST Create Video

Crée une vidéo complète avec plusieurs séquences. Chaque séquence peut contenir des médias (images ou vidéos) qui seront animés selon le type d’animation spécifié.
POST /api/video-editor/generate/video

Authentification

Toutes les requêtes doivent inclure l’en-tête :
  • x-api-key: VOTRE_API_KEY

En-têtes

x-api-key
string
requis
Votre clé API IACrea
Content-Type
string
requis
Doit être application/json

Corps de requête

video
object
requis
Objet vidéo contenant toutes les séquences et paramètres
video.format
string
requis
Format de la vidéo : "landscape" | "portrait" | "square"
video.template
string
Template vidéo. Défaut : "SaleProperty". Optionnel.
video.music
string
URL ou identifiant de la musique. Optionnel.
video.font
string
Police de caractères (ex : "Inter"). Défaut : "Inter". Optionnel.
video.colors
array
requis
Tableau de deux couleurs [background, text] (ex : ["#1a1a2e", "#ffffff"])
Afficher un logo sur la vidéo
video.logoUrl
string
URL du logo (nécessaire si displayLogo=true). Optionnel.
video.sequences
array
requis
Tableau de séquences vidéo. Chaque séquence représente un clip dans la vidéo finale.
video.sequences[].order
number
requis
Ordre d’affichage de la séquence dans la vidéo (commence à 0)
video.sequences[].duration
number
requis
Durée de la séquence en secondes (maximum 5 secondes pour les séquences de type “video”)
video.sequences[].type
string
requis
Type de séquence : "intro" | "outro" | "video" | "image" | "beforeAfter"
video.sequences[].animationType
string
requis
Type d’animation pour les séquences de type “video”. Valeurs possibles : - "CAMERA_PUSH_IN" - Zoom avant - "CAMERA_PUSH_OUT" - Zoom arrière - "CAMERA_MOVE_RIGHT" - Déplacement vers la droite - "CAMERA_CRANE_UP" - Mouvement vers le haut - "CAMERA_ORBIT_LEFT" - Rotation vers la gauche - "AUTO_EFFECTS" - Effet automatique généré par l’IA - "AUTO_REVERSE" - Effet automatique inversé - "REALTOR_SMILING" - Animation spéciale pour agent immobilier - "BEFORE_AFTER_INTERIOR" - Transformation avant/après intérieur (nécessite 2 images) - "BEFORE_AFTER_EXTERIOR" - Transformation avant/après extérieur (nécessite 2 images) - "BEFORE_AFTER_DECLUTTER" - Transformation avant/après débarras (nécessite 2 images) - "none" - Aucune animation - "fade" - Fondu
video.sequences[].medias
array
requis
Tableau de médias pour cette séquence
video.sequences[].medias[].url
string
requis
URL de l’image ou de la vidéo
video.sequences[].medias[].start
number
requis
Temps de début du média dans la séquence (en secondes)
video.sequences[].medias[].end
number
requis
Temps de fin du média dans la séquence (en secondes)
video.sequences[].medias[].order
number
Ordre du média dans la séquence. Optionnel.
video.sequences[].medias[].selected
boolean
Indique si le média est sélectionné. Optionnel.
video.sequences[].data
object
Données supplémentaires pour la séquence (logoUrl, description, avatar, name, tel, email, etc.). Optionnel. Pour les options BEFORE_AFTER (BEFORE_AFTER_INTERIOR, BEFORE_AFTER_EXTERIOR, BEFORE_AFTER_DECLUTTER), vous devez fournir : - afterImage : URL de l’image “après” (requis pour les options BEFORE_AFTER)
webhookUrl
string
URL du webhook pour recevoir une notification lorsque la vidéo est terminée. Optionnel.

Réponses

201 — Créé avec succès

id
string
Identifiant unique de la vidéo générée. À utiliser avec GET /api/video-editor/generate/video/{id} pour suivre l’avancement.
generatedContent
array
Liste des contenus générés (un élément par séquence de type “video”). Chaque élément contient : - id : Identifiant de génération - url : URL de l’image source - effect : Type d’animation - format : Format de la vidéo - status : Statut ("pending" | "success" | "error")
creditsTotal
number
Nombre de crédits vidéo restants
creditsUsed
number
Nombre de crédits utilisés pour cette génération

400 — Erreur de validation

Renvoyé si le corps de requête est invalide (séquence manquante, format invalide, etc.).

401 — Non autorisé

Renvoyé si x-api-key est manquant ou invalide.

500 — Erreur serveur

Erreur interne du serveur.

Exemple de requête

curl --request POST \
  --url 'https://iacrea.com/api/video-editor/generate/video' \
  --header 'x-api-key: VOTRE_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "video": {
      "format": "landscape",
      "template": "SaleProperty",
      "music": "https://exemple.com/music.mp3",
      "font": "Inter",
      "colors": ["#1a1a2e", "#ffffff"],
      "displayLogo": true,
      "logoUrl": "https://exemple.com/logo.png",
      "sequences": [
        {
          "order": 0,
          "duration": 5,
          "type": "video",
          "animationType": "CAMERA_PUSH_IN",
          "medias": [
            {
              "url": "https://exemple.com/image1.jpg",
              "start": 0,
              "end": 5,
              "order": 0,
              "selected": true
            }
          ],
          "data": {
            "description": "Salon lumineux avec vue sur jardin"
          }
        },
        {
          "order": 1,
          "duration": 5,
          "type": "video",
          "animationType": "CAMERA_PUSH_OUT",
          "medias": [
            {
              "url": "https://exemple.com/image2.jpg",
              "start": 0,
              "end": 5,
              "order": 0,
              "selected": true
            }
          ]
        }
      ]
    },
    "webhookUrl": "https://votre-app.com/webhooks/iacrea/video"
  }'

Exemple de réponse

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "generatedContent": [
    {
      "id": "660e8400-e29b-41d4-a716-446655440001",
      "url": "https://exemple.com/image1.jpg",
      "effect": "CAMERA_PUSH_IN",
      "format": "landscape",
      "status": "pending"
    },
    {
      "id": "660e8400-e29b-41d4-a716-446655440002",
      "url": "https://exemple.com/image2.jpg",
      "effect": "CAMERA_PUSH_OUT",
      "format": "landscape",
      "status": "pending"
    }
  ],
  "creditsTotal": 48,
  "creditsUsed": 2
}

Notes importantes

  • Les séquences de type "video" déclenchent automatiquement la génération d’une animation à partir de l’image fournie
  • La durée maximale d’une séquence de type "video" est de 5 secondes
  • Utilisez l’id retourné avec GET /api/video-editor/generate/video/{id} pour suivre l’avancement de la génération
  • Si un webhook est fourni, vous recevrez une notification lorsque la vidéo finale est prête

Options BEFORE_AFTER

Les options BEFORE_AFTER_INTERIOR, BEFORE_AFTER_EXTERIOR et BEFORE_AFTER_DECLUTTER permettent de créer des vidéos de transformation avant/après :
  • BEFORE_AFTER_INTERIOR : Transformation d’un intérieur (ex: rénovation, ameublement)
  • BEFORE_AFTER_EXTERIOR : Transformation d’un extérieur (ex: jardin, façade)
  • BEFORE_AFTER_DECLUTTER : Transformation de débarras (meubles qui disparaissent)
Ces options nécessitent 2 images :
  1. L’image “avant” (premier média dans medias)
  2. L’image “après” (dans data.afterImage - requis)
Exemple pour une séquence BEFORE_AFTER :
{
  "order": 0,
  "duration": 5,
  "type": "video",
  "animationType": "BEFORE_AFTER_INTERIOR",
  "medias": [
    {
      "url": "https://exemple.com/avant.jpg",
      "start": 0,
      "end": 5,
      "order": 0
    }
  ],
  "data": {
    "afterImage": "https://exemple.com/apres.jpg",
    "description": "Salon avant et après rénovation"
  }
}