API générateur de vidéos UGC par IA : créez des publicités UGC automatiquement

Un plan concret pour une API générateur de vidéos UGC par IA : comment transformer un brief produit en des dizaines de publicités verticales au style créateur, avec scripts, images de personas, clips vidéo à audio natif, limites de file d'attente, contrôles qualité et mention claire de l'IA, le tout avec du code de requête en Python et Node.

API générateur de vidéos UGC par IA : créez des publicités UGC automatiquement
Cristian Da Conceicao
Fondateur de Picasso IA

Les marques ont cessé de faire confiance aux spots de studio soignés il y a un moment, et les spectateurs ont cessé de les regarder encore plus tôt. Ce qui fait s’arrêter le pouce qui défile, c’est une femme dans sa cuisine qui explique, avec ses propres mots, pourquoi un sérum a enfin fonctionné pour elle. C’est la publicité de style UGC (contenu généré par les utilisateurs), et c’est pourquoi les équipes de performance veulent désormais une API générateur de vidéos UGC par IA plutôt qu’un tableur rempli de créateurs qui attendent des échantillons de produits.

Cet article présente un pipeline que vous pouvez construire cette semaine. Un brief produit entre, et une série de publicités verticales au style créateur sort. Vous obtenez du code de requête fonctionnel en Python et en Node, les limites réelles de l’API développeur de PicassoIA, un tableau de ce que fait chaque modèle, et les contrôles qui gardent les publicités automatisées honnêtes et conformes à votre image de marque.

Pourquoi les publicités UGC ont besoin d’une API

Le problème du volume créatif

Tout spécialiste du marketing de performance connaît ce cycle. Un visuel est mis en ligne, les dépenses augmentent, et en quelques semaines l’audience l’a trop vu et les résultats s’effritent. La solution consiste à produire davantage de créatifs, et pas qu’un peu. Un test sérieux croise accroches, personas, décors et durées : cinq accroches, quatre personas et trois décors font déjà 60 variantes avant même de toucher à l’appel à l’action.

Réserver des créateurs humains pour cette matrice implique des briefs, des envois de produits, plusieurs cycles de retours et une longue attente. Demander à un monteur de couper soixante versions à la main, c’est faire ce travail une fois par trimestre au lieu de chaque semaine.

Un développeur devant un bureau près d’une fenêtre couverte de pluie, en train de construire un pipeline publicitaire automatisé

💡 Astuce : Traitez les créatifs comme un stock. Si un nouveau lot met trois semaines à arriver, vous diffusez toujours les gagnants d’hier.

Voici comment les deux approches se comparent en pratique :

Flux de travail avec créateurs humainsPipeline piloté par API
Variantes par cycle de testQuelques-unes, limitées par les réservationsDes dizaines, limitées par votre matrice
Délai de livraisonDe quelques jours à plusieurs semainesQuelques minutes par clip
Cohérence entre les variantesDépend de chaque créateurDéfinie par votre gabarit
Modifier une allégation produitRetourner ou refaire le montageModifier une ligne et relancer
Effort de relecturePar vidéo, longPar lot, contrôles ponctuels

Ce que remplace une API

Elle remplace les clics. Un tableau de bord convient pour un seul clip, mais personne ne veut coller soixante prompts dans un formulaire. Avec une API, le brief vit dans un tableur, un flux produit ou une ligne de base de données, et un script transforme chaque ligne en requête.

Le travail est asynchrone : vous créez une prédiction, vous l’interrogez, puis vous récupérez le fichier final. La documentation développeur ne décrit aucun webhook, donc l’interrogation est tout le mécanisme, ce qui garde l’intégration simple.

Les déclencheurs typiques d’un lot ressemblent à ceci :

  • Un nouveau produit arrive dans votre catalogue et a besoin d’un jeu de lancement.
  • Une publicité gagnante montre des signes de lassitude et a besoin de dix variantes.
  • Une offre saisonnière change l’accroche de chaque clip actif.
  • Un nouveau marché a besoin de versions localisées du même script.

Une API remplace la production, pas le jugement. Quelqu’un doit toujours décider quelles allégations sont vraies et quels clips sont assez bons pour être diffusés.

Le pipeline, du brief à la publicité

Pensez en quatre étapes, chacune avec une entrée et une sortie. Quand une étape échoue, vous ne relancez que cette étape, jamais toute la chaîne.

ÉtapeEntréeSortie
ScriptBrief produit et type d’accroche10 à 15 secondes de texte parlé
Image du personaPersona et prompt de décorUne image fixe
VidéoImage fixe et prompt de mouvementUn clip avec audio
RelectureClip et métadonnéesApprouvé ou rejeté

Étape 1 : variantes de script

Utilisez n’importe quel grand modèle de langage pour écrire les répliques, car l’API vidéo ne se soucie pas de l’origine des mots. Donnez-lui une structure rigide : une accroche dans les deux premières secondes, un problème, une preuve, un appel à l’action.

L’UGC paraît vrai parce qu’il est court et précis. « J’ai arrêté d’acheter trois produits et j’ai gardé celui-ci » l’emporte à chaque fois sur « le meilleur sérum de tous les temps ». Demandez une douzaine d’accroches par produit, puis gardez les cinq qui sonnent comme une personne qui parle à voix haute.

Vue de dessus d’un script publicitaire imprimé, de flacons de produit et d’un téléphone posés sur une table en bois

💡 Astuce : Une seule allégation par script. Chaque allégation supplémentaire est une phrase de plus à vérifier avant toute mise en ligne.

Étape 2 : images du persona et de la scène

La première image détermine l’allure de tout le clip, car le modèle vidéo anime à partir d’elle. Utilisez PicassoIA Image pour générer l’image du persona : une personne dans une pièce habitée, une lumière de fenêtre, un cadrage à l’épaule, un produit sans marque en main.

Quand le produit réel doit apparaître, faites appel à PicassoIA Image Editor Pro. Il accepte d’une à quatre images d’entrée, si bien que vous pouvez placer votre packshot réel dans la scène et garder l’étiquette exacte.

Écrivez vos prompts comme un photographe : objectif, direction de la lumière, texture de la peau et des tissus. Rejetez l’aspect brillant et trop lisse. L’UGC veut des pièces imparfaites et une lumière naturelle.

Vue en contre-plongée d’un téléphone sur un trépied filmant un homme dans le salon d’un loft

Étape 3 : vidéo avec audio natif

Donnez l’image à Seedance 2.5 Lite avec un prompt de mouvement qui décrit ce que fait et dit la personne tout au long du clip. L’option save_audio est activée par défaut, si bien que la parole et les bruits de la pièce arrivent dans le fichier au lieu de devenir une étape séparée du pipeline.

Décrivez l’action dans l’ordre : elle soulève le flacon, jette un regard à l’objectif, prononce la réplique, sourit. Adaptez aussi le script à la durée du clip. Une vidéo de dix secondes contient environ 25 à 30 mots parlés à un rythme naturel : une réplique plus longue sera soit précipitée, soit coupée.

Limitez les mouvements de caméra. Une légère dérive à l’épaule est la signature de l’UGC, et les mouvements cinématographiques appuyés brisent l’illusion.

Gros plan de mains ouvrant une boîte d’expédition en kraft sur un canapé en lin

Étape 4 : relecture et mise en ligne

Téléchargez le clip, vérifiez-le, puis importez-le dans votre plateforme publicitaire avec un nom qui encode la variante, par exemple question_kitchen_10s. Ce nommage rend les résultats lisibles plus tard, quand vous pourrez enfin dire que le persona de cuisine avec l’accroche question a battu tout le reste. Consignez le nom de la variante, le prompt, le seed, le modèle et l’identifiant de prédiction dans une ligne par clip, et votre tableur deviendra la mémoire de toute la campagne.

Les modèles que vous pouvez appeler aujourd’hui

Aperçu des modèles de l’API

Au moment de la rédaction, l’API PicassoIA expose quatre modèles. Les entrées ci-dessous proviennent de la documentation publique pour développeurs.

ModèleRôle dans un pipeline UGCEntrées notables
PicassoIA ImageImage fixe du persona et du décorprompt
PicassoIA Image Editor ProPlacer votre produit réel dans une scèneprompt, images (1 à 4)
PicassoIA VideoTexte ou image vers vidéoresolution (480p, 720p, 1080p), duration, seed
Seedance 2.5 LiteImage vers vidéo avec audioimage, last_frame_image, duration (5, 10, 15), resolution (480p, 720p)

Deux détails comptent pour les publicités. Sur PicassoIA Video, la durée maximale dépend de la résolution : jusqu’à 20 secondes en 480p, jusqu’à 10 en 720p et jusqu’à 5 en 1080p. Sur Seedance 2.5 Lite, l’option last_frame_image permet de fixer la fin du clip, ce qui est pratique lorsque la dernière image doit montrer le produit.

💡 Astuce : aspect_ratio vaut match_input_image par défaut lorsque vous transmettez une image. Votre image fixe détermine si la publicité est verticale ou carrée, alors vérifiez le format de l’image du persona avant de consacrer une tâche vidéo à cette image.

Voix et synchronisation labiale dans l’application

Le catalogue élargi se trouve dans l’application web plutôt que dans l’API. C’est là que vous trouverez des voix dédiées et des outils de type tête parlante pour les cas où l’audio natif ne suffit pas.

Une répartition pratique : laissez l’API produire l’essentiel de vos clips avec audio natif, et transférez les cinq ou dix clips les plus performants dans l’application pour peaufiner la voix et la synchronisation labiale.

Une femme avec un casque de studio enregistrant une voix off devant un microphone à condensateur

Votre première requête en Python

Authentification et URL de base

Tout passe par https://api.picassoia.com/v1, et chaque requête porte un en-tête Authorization: Bearer pia_sk_…. Créez la clé secrète sur la page API de votre compte. Un compte peut en détenir deux à la fois, donc effectuez la rotation en créant la nouvelle avant de supprimer l’ancienne.

Conservez la clé secrète dans une variable d’environnement sur votre serveur. Ne l’intégrez jamais dans un bundle de navigateur ni dans une application mobile.

💡 Vérifiez d’abord l’accès : la documentation indique que les prédictions n’utilisent actuellement aucun crédit, mais la création d’une prédiction renvoie 403 plan_required lorsque votre forfait n’inclut pas l’accès à l’API. Envoyez une seule requête de test avant de concevoir quoi que ce soit autour de l’API.

Créer, interroger, récupérer

Le point de terminaison pour une nouvelle tâche est POST /v1/models/{owner}/{name}/predictions, avec vos champs enveloppés dans un objet input. La réponse contient un id, un status (starting, processing, succeeded, failed ou canceled), et un output qui est soit une URL, soit une liste d’URL.

L’interrogation utilise GET /v1/predictions/{id}. Le champ eta.next_poll_in_seconds indique quand la prochaine vérification vaut la peine d’être faite, si bien que vous ne surchargez jamais le point de terminaison.

import os, time, requests

API = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}

def run(model, payload):
    r = requests.post(f"{API}/models/{model}/predictions",
                      json={"input": payload}, headers=HEADERS)
    pred = r.json()
    if not r.ok:
        raise RuntimeError(f"{pred['code']}: {pred['detail']}")
    while pred["status"] not in ("succeeded", "failed", "canceled"):
        time.sleep((pred.get("eta") or {}).get("next_poll_in_seconds", 2))
        pred = requests.get(pred["urls"]["get"], headers=HEADERS).json()
    if pred["status"] != "succeeded":
        raise RuntimeError(pred["error"] or pred["status"])
    return pred["output"]

def first(output):
    return output[0] if isinstance(output, list) else output

def make_ad(brief):
    frame = first(run("picassoia/picassoia-image", {"prompt": brief["persona_prompt"]}))
    return first(run("picassoia/seedance-2.5-lite", {
        "prompt": brief["motion_prompt"],
        "image": frame,
        "duration": 10,
        "resolution": "720p",
    }))

Traitez failed comme une donnée, pas comme une surprise. Consignez la chaîne error, relancez une tâche échouée une fois avec la même entrée, puis une fois de plus avec un prompt un peu plus court, et mettez-la en attente pour un humain après cela. Ne relancez jamais plan_required ni une requête mal formée, car la réponse ne changera pas. Copiez les fichiers finaux dans votre propre stockage dès leur arrivée, plutôt que de supposer que le lien de sortie vivra éternellement.

Le même flux en Node

La version Node est la même boucle avec fetch. Enveloppez vos champs dans input, interrogez urls.get, et respectez eta.next_poll_in_seconds.

const API = 'https://api.picassoia.com/v1'
const headers = {
  Authorization: `Bearer ${process.env.PICASSOIA_TOKEN}`,
  'Content-Type': 'application/json',
}
const sleep = (s) => new Promise((r) => setTimeout(r, s * 1000))

async function run(model, input) {
  const res = await fetch(`${API}/models/${model}/predictions`, {
    method: 'POST', headers, body: JSON.stringify({ input }),
  })
  let pred = await res.json()
  if (!res.ok) throw new Error(`${pred.code}: ${pred.detail}`)
  while (!['succeeded', 'failed', 'canceled'].includes(pred.status)) {
    await sleep(pred.eta?.next_poll_in_seconds ?? 2)
    pred = await (await fetch(pred.urls.get, { headers })).json()
  }
  if (pred.status !== 'succeeded') throw new Error(pred.error ?? pred.status)
  return pred.output
}

Passer à de nombreuses publicités par jour

Une petite équipe marketing examinant des images imprimées de vidéos sur un mur de liège

Rester dans la limite de cinq tâches

Le compte autorise 5 prédictions en file d’attente ou en cours d’exécution à la fois, et ce quota est partagé entre toutes les clés secrètes et toutes les connexions MCP. Si un collègue génère aussi depuis un client MCP, votre script entre en concurrence avec le sien.

La règle pour votre code est simple : ne lancez jamais plus de cinq workers, et idéalement gardez un emplacement libre. Un pool de threads fait cela en quelques lignes.

from multiprocessing.pool import ThreadPool

with ThreadPool(4) as pool:
    results = pool.map(make_ad, briefs)

Le débit est facile à estimer. Divisez le nombre de secondes d’une heure par le temps que prend une publicité, puis multipliez par votre nombre de workers. Si une image plus une vidéo prennent environ quatre minutes, quatre workers terminent à peu près 60 publicités par heure.

Cinq smartphones alignés sur un bureau, chacun montrant une personne différente avec un produit

D’autres limites méritent d’être intégrées à votre validation : des corps de requête allant jusqu’à 10 Mo, des images en data URL allant jusqu’à 5 Mo chacune, des prompts allant jusqu’à 4 000 caractères, et un délai d’expiration de trois heures par prédiction. Une tâche qui dépasse ce délai doit être marquée comme morte et relancée, et non attendue.

Des modèles de prompts qui varient en toute sécurité

La variation est tout l’enjeu, mais une variation aléatoire produit des clips hors de votre image de marque. Découpez votre modèle en axes que vous changez et en axes que vous verrouillez.

AxeLe faire varierLe verrouiller
PersonaTranche d’âge, cheveux, vêtementsRéalisme de la peau et des tissus
DécorCuisine, voiture, salle de sport au garage, balconLumière naturelle de fenêtre ou du jour
AccrocheQuestion, confession, démonstrationUne seule allégation par script
Durée5, 10 ou 15 secondesCadrage vertical
ProduitJamaisPackshot et étiquette exacts

Stockez le prompt final et le seed à côté de chaque résultat. Quand un clip gagne, vous pouvez recréer ses variantes en changeant un seul champ au lieu de deviner ce qui a fonctionné.

Un homme dans une salle de sport aménagée dans son garage, parlant à son téléphone tout en tenant un shaker

Comment utiliser Seedance 2.5 Lite

Avant d’écrire du code, générez quelques clips à la main pour voir ce que vos prompts produisent réellement. Seedance 2.5 Lite est le moyen le plus rapide de le faire.

  1. Ouvrez la page du modèle et connectez-vous à votre compte PicassoIA.
  2. Importez votre image de persona. Une image fixe nette et bien éclairée, avec le produit visible, donne la meilleure première image.
  3. Rédigez le prompt de mouvement. Nommez l’action dans l’ordre, incluez la réplique entre guillemets et gardez la caméra presque immobile.
  4. Choisissez la résolution et la durée. Commencez en 480p pour tester rapidement, puis passez en 720p pour la version que vous prévoyez de publier.
  5. Gardez l’audio activé. save_audio est vrai par défaut, ce qui convient à une publicité parlée.
  6. Définissez éventuellement une dernière image. Importez last_frame_image lorsque le clip doit se terminer sur une image propre du produit.
  7. Fixez un seed dès qu’un résultat vous convient, puis changez une seule chose à la fois.
  8. Soumettez et téléchargez le clip, puis regardez-le avec le son avant de le juger.

💡 Astuce : Jugez uniquement les deux premières secondes. C’est tout ce qu’un spectateur qui fait défiler son fil vous accorde, donc un clip à l’ouverture faible est rejeté, quelle que soit la qualité de la fin.

Contrôle qualité et mention de l’IA

Contrôles automatisés avant publication

Automatisez les rejets évidents pour qu’une personne ne relise que les clips ayant déjà passé ces contrôles :

  • Le fichier se charge. Demandez l’URL, attendez un statut 200 et un type de contenu vidéo.
  • La durée correspond à celle que vous avez demandée.
  • La piste audio est présente lorsque save_audio était activé.
  • Le prompt et le seed sont enregistrés avec le résultat pour pouvoir reproduire la génération.
  • Un filtre de mentions analyse le texte du script et bloque les formulations médicales, de revenus ou de garantie que vous ne pouvez pas prouver.
  • Une personne effectue des contrôles ponctuels sur les visages, les mains et l’étiquette du produit, sur un échantillon de chaque lot.

Étiquetage et consentement

Considérez la mention de l’IA comme une partie du pipeline, pas comme une réflexion après coup. Les plateformes publicitaires et les régulateurs attendent de plus en plus que le contenu généré par l’IA soit étiqueté, et les règles changent souvent : lisez la politique publicitaire en vigueur de chaque plateforme avant de lancer un lot.

Ne présentez jamais un persona synthétique comme un vrai client qui témoigne de vrais résultats. Ne recréez pas le visage ou la voix d’une personne réelle sans son consentement écrit. Un faux témoignage est le moyen le plus rapide de perdre un compte publicitaire, et c’est bien mérité.

Construisez dès aujourd’hui votre premier lot

Vous avez maintenant toute la boucle : brief, script, image du persona, clip avec audio, relecture. Le moyen le moins coûteux de savoir si cela convient à votre produit est de tester trois variantes cet après-midi.

Ouvrez Seedance 2.5 Lite sur Picasso IA, importez une image de persona depuis PicassoIA Image, et rédigez trois accroches différentes pour le même produit. Comparez les ouvertures côte à côte. Quand l’une d’elles prend clairement l’avantage, vous avez votre modèle, et le code Python ci-dessus le transforme en cinquante autres.

Une jeune femme faisant défiler un fil vidéo vertical à une table ensoleillée d’un café

Commencez petit, gardez des clips honnêtes et laissez les données désigner les gagnants. Générez votre première image de persona sur Picasso IA dès aujourd’hui, animez-la pour en faire une publicité au style UGC, et voyez jusqu’où peut aller un bon modèle. La seule expérience qui échoue est celle que vous ne tentez jamais.

Partager cet article

Choisissez votre langue