Aller au contenu principal

Extension de vidéo avec /v1/videos/extensions

Mis à jour le 29 juillet 2026

Prolonger une vidéo existante

Là où l’édition transforme une séquence sans en changer la longueur, l’extension fait exactement l’inverse : elle allonge une vidéo en générant une suite cohérente avec ce qui précède. C’est la réponse au problème le plus banal de la génération vidéo — un clip réussi mais trop court, ou une scène qui mériterait de se développer au-delà de sa durée initiale. Plutôt que de tout régénérer en espérant retrouver le même rendu, vous partez de ce qui existe et vous continuez.

L’endpoint POST /v1/videos/extensions

La requête ressemble à celle d’une génération, avec la vidéo de départ en plus.

{
  "model": "grok-imagine-video",
  "prompt": "Continue la scène avec un zoom arrière révélant le paysage complet",
  "video_url": "https://exemple.com/video-courte.mp4",
  "duration": 5
}

Le champ model reste grok-imagine-video, prompt décrit ce qui doit se passer dans la suite, video_url désigne la vidéo à prolonger, et duration fixe la longueur de l’extension entre 2 et 10 secondes — la valeur par défaut étant 6 secondes. Contrairement à l’édition, vous récupérez donc ici la maîtrise de la durée.

Le tableau suivant résume ce qui sépare les deux endpoints, car la confusion est fréquente.

AspectÉdition (/edits)Extension (/extensions)
ObjectifModifier le contenuAjouter de la durée
Paramètre vidéovideo.url (objet)video_url (string)
Durée sortieMax 8.7s2-10s supplémentaires
Contenu originalModifiePréserve

La ligne à retenir absolument est la deuxième. L’édition attend un objet video doté d’une propriété url, l’extension attend directement une chaîne video_url. Inverser les deux produit une erreur de validation dont le message ne saute pas toujours aux yeux, et cette faute coûte régulièrement une demi-heure de débogage à qui écrit les deux appels dans le même fichier.

Trois façons de continuer une scène

Le cas le plus simple consiste à laisser courir ce qui est déjà en train de se produire. Le prompt reprend l’action en cours et la prolonge sans rupture.

{
  "model": "grok-imagine-video",
  "prompt": "Le personnage continue sa marche le long de la plage, les vagues deferlent doucement",
  "video_url": "https://exemple.com/promenade.mp4",
  "duration": 6
}

Vous pouvez aussi introduire un changement, c’est-à-dire faire entrer un élément nouveau ou modifier la direction du regard. C’est ce qui donne à une séquence sa progression narrative.

{
  "model": "grok-imagine-video",
  "prompt": "La camera pivote vers la droite révélant un phare au loin, la lumière du phare commence a tourner",
  "video_url": "https://exemple.com/plage.mp4",
  "duration": 8
}

Troisième usage, la conclusion : une extension courte qui referme la séquence proprement, souvent par un fondu.

{
  "model": "grok-imagine-video",
  "prompt": "La scène se termine avec un fondu progressif vers le noir, les dernières lueurs du soleil disparaissent a l'horizon",
  "video_url": "https://exemple.com/coucher-soleil.mp4",
  "duration": 4
}

Chaîner les extensions pour construire une séquence

Rien n’empêche d’étendre une vidéo plusieurs fois de suite. Chaque extension produit une nouvelle vidéo dont l’URL peut servir de source à l’extension suivante, ce qui vous permet de bâtir une séquence longue par segments successifs, chacun piloté par son propre prompt. Le script ci-dessous enchaîne trois extensions en réinjectant à chaque tour l’URL obtenue.

import httpx
import time

api_key = "votre_cle"
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}

def attendre_video(request_id):
    """Interroge le statut jusqu'a completion."""
    while True:
        resp = httpx.get(
            f"https://api.x.ai/v1/videos/{request_id}",
            headers=headers
        ).json()
        if resp["status"] == "done":
            return resp["video_url"]
        if resp["status"] == "failed":
            raise Exception("Generation echouee")
        time.sleep(5)

# Video de base
video_url = "https://exemple.com/video-initiale.mp4"

# Chainer 3 extensions
prompts = [
    "Le personnage traverse le pont, vue de profil",
    "Il s'arrete au milieu et regarde la riviere en contrebas",
    "Il reprend sa marche vers l'autre rive, la camera le suit"
]

for prompt in prompts:
    resp = httpx.post(
        "https://api.x.ai/v1/videos/extensions",
        headers=headers,
        json={
            "model": "grok-imagine-video",
            "prompt": prompt,
            "video_url": video_url,
            "duration": 5
        }
    ).json()
    video_url = attendre_video(resp["request_id"])
    print(f"Extension terminee : {video_url}")

Cette élégance a un prix, au sens propre comme au figuré. Chaque extension est facturée séparément, exactement comme une génération de même durée. La cohérence visuelle se dégrade au fil des maillons, puisque chaque étape s’appuie sur une sortie déjà interprétée : au-delà de trois ou quatre extensions enchaînées, les dérives de couleur et de morphologie deviennent visibles. Et comme partout dans cette API, les URL sont temporaires — téléchargez chaque version intermédiaire, sans quoi un échec en fin de chaîne vous obligera à tout reprendre depuis le début.

Le duo génération puis extension

Le schéma le plus répandu en production combine les deux endpoints. Vous générez d’abord une base courte de 3 secondes avec un prompt très précis, via POST /v1/videos/generations, ce qui vous permet d’itérer à moindre coût sur l’esthétique de départ. Vous ajoutez ensuite 5 secondes de développement par POST /v1/videos/extensions, puis 4 secondes de conclusion par un second appel au même endpoint. Le résultat est une vidéo de 12 secondes construite segment par segment, où chaque partie a été validée avant que la suivante ne soit engagée — un contrôle qu’aucune génération unique de 12 secondes ne vous offrirait.

Points clés à retenir

  • L’extension prolonge une vidéo existante de 2 à 10 secondes (défaut 6)
  • Le paramètre est video_url (string), pas video.url (objet)
  • Le chaînage permet de créer des séquences longues étape par étape
  • La cohérence se dégrade au-delà de 3-4 extensions successives
  • Combinez génération initiale + extensions pour un contrôle précis du contenu