GPT-6 Astra is now live on CometAPI →
technology/Recherche CometAPI

Comment utiliser l'API Seedance 2.0

Seedance 2.0 API est le dernier modèle multimodal de génération vidéo par IA de ByteDance (lancé le 9 avril 2026). Il accepte du texte, des images, des clips vidéo et de l’audio dans une seule requête pour produire des vidéos MP4 cinématographiques de 4 à 15 secondes avec une synchronisation audio native, un contrôle de caméra de niveau réalisateur et une cohérence de mouvement exceptionnelle. Pour l’utiliser : inscrivez-vous sur CometAPI.com, obtenez une clé API, soumettez une tâche asynchrone via REST, interrogez périodiquement jusqu’à achèvement, puis téléchargez la vidéo via l’URL.

CometAPI
AnnaÉquipe de recherche sur les modèles IA et API
Mis à jour Sep 3, 2026 11 min de lecture
Comment utiliser l'API Seedance 2.0
Utiliser ce modèle

Passez le premier appel API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Seedance 2.0, le modèle phare de génération vidéo multimodale de ByteDance, a été officiellement lancé le 9 avril 2026 et est désormais disponible sur les principales plateformes, dont fal.ai. Cet outil IA puissant transforme des textes, des images, des pistes audio et des références vidéo en des vidéos cinématographiques de 4 à 15 secondes avec synchronisation audio native, contrôle caméra de niveau réalisateur et physique réaliste — le tout en un seul passage de génération. Que vous soyez développeur construisant des workflows vidéo automatisés, marketeur créant du contenu viral ou cinéaste prototypant des scènes, l’API Seedance 2.0 fournit des résultats de qualité production plus rapidement que jamais.

Qu’est-ce que Seedance 2.0 ? Fonctionnalités et capacités clés

Seedance 2.0 est le modèle unifié de co‑génération audio‑vidéo multimodale nouvelle génération de ByteDance. Contrairement aux versions précédentes ou aux concurrents limités au texte ou à une seule image, il prend nativement en charge jusqu’à 9 images + 3 clips vidéo + 3 clips audio (12 ressources au total) dans une seule requête.

Capacités principales :

  • Co‑génération audio‑vidéo native : musique, dialogues, effets sonores et synchronisation labiale sont créés en même temps que la vidéo — sans post‑production.
  • Contrôle de niveau réalisateur : mouvements de caméra précis (dolly zoom, travelling, changements de POV, caméra à l’épaule), éclairage, ombres et physique.
  • Narration multi‑plans : coupes et transitions naturelles dans des clips de 4 à 15 secondes.
  • Spécifications de sortie : MP4 en 480p/720p, ratios d’aspect (16:9, 9:16, 1:1, etc.), résolutions jusqu’à 2K selon les niveaux.

Trois modes principaux :

  • text_to_video : basé uniquement sur le prompt.
  • first_last_frames : 1 à 2 images comme images de début/fin.
  • omni_reference : multimodal complet avec syntaxe @reference pour un contrôle précis.

Les benchmarks sur SeedVideoBench-2.0 montrent que Seedance 2.0 est en tête en stabilité des mouvements, respect du prompt et cohérence des personnages par rapport à ses prédécesseurs. Il se positionne comme une solide alternative à Sora pour des rendus cinématographiques et immersifs. Au 15 avril 2026, les développeurs rapportent des temps de génération inférieurs à 2 minutes pour des clips de 10 secondes, avec une physique réaliste et une qualité audio supérieures aux versions précédentes.

Pour commencer : accéder à l’API Seedance 2.0 via CometAPI

Seedance 2.0 est disponible via plusieurs fournisseurs, mais CometAPI.com se distingue pour les développeurs. En tant que passerelle unifiée vers plus de 500 modèles d’IA (y compris des générateurs vidéo comme Sora 2 et Gemini video), CometAPI propose :

  • Des endpoints REST compatibles OpenAI.
  • Une clé API unique pour tous les modèles.
  • Des tarifs compétitifs avec crédits de démarrage gratuits.
  • Des SDK intégrés, une gestion asynchrone des jobs et des tableaux de bord d’usage.
  • Aucun verrouillage fournisseur — changez de modèle en modifiant l’ID du modèle.

Authentification API et workflow de base

La plupart des fournisseurs utilisent des API REST asynchrones basées sur des jobs :

  • POST pour créer une tâche → renvoie un task_id.
  • GET /tasks/{task_id} pour interroger le statut (queued → processing → completed).
  • Récupérez video_url en cas de succès.

Authentification : Bearer token ou en‑tête X-API-Key.

Étapes détaillées sur CometAPI

1) Configuration sur CometAPI

Visitez CometAPI.com et inscrivez‑vous (les nouveaux utilisateurs bénéficient de crédits gratuits).

Allez dans votre tableau de bord → API Tokens → Create new key.

Copiez votre clé sk- et définissez‑la comme variable d’environnement (COMETAPI_KEY).

Utilisez les endpoints unifiés de type /v1/chat/completions-style ou les endpoints vidéo dédiés pour Seedance 2.0 (nom du modèle : bytedance/seedance-2.0 ou seedance-2-preview).

Cette approche fait gagner des heures par rapport à la gestion de clés séparées pour fal.ai, PiAPI, etc. CometAPI propose également des routes à plus faible latence et des crédits groupés, idéaux pour l’industrialisation.

2) Préparer un prompt solide

Seedance 2.0 répond mieux lorsque le prompt agit comme un mini‑brief de réalisateur. Dites quel est le sujet, ce que la caméra doit faire, le style souhaité, ce qui doit rester constant et ce qui ne doit pas changer. Comme le modèle prend en charge plusieurs références, vous pouvez aussi joindre une référence de cadre, une référence de mouvement et une référence audio au lieu de tout forcer dans un seul prompt texte.

Une formule de prompt pratique ressemble à ceci : sujet + action + mouvement de caméra + style visuel + éclairage + notes de référence + contraintes. Par exemple, au lieu d’écrire « une pub de voiture stylée », écrivez « une berline électrique brillante garée sur un toit mouillé de nuit, dolly‑in lent, reflets néon, éclairage premium de film publicitaire, pas de tremblements de caméra, garder la voiture centrée, 16:9 ». Ce type de prompt correspond bien mieux au positionnement du modèle, de niveau réalisateur.

3) Envoyer une requête de génération asynchrone

Voici un exemple curl épuré pour une requête de type Seedance 2.0 :

import json
import os
import time

import requests

# Get your CometAPI key from https://www.cometapi.com/console/token, and paste it here
BASE_URL = "https://api.cometapi.com"
OUTPUT_DIR = "./output"
POLL_INTERVAL_SECONDS = 10
RETRY_DELAY_SECONDS = 5
MAX_CREATE_ATTEMPTS = 5
MAX_QUERY_ATTEMPTS = 3
TERMINAL_STATUSES = {"success", "completed", "failed", "error"}
SUCCESS_STATUSES = {"success", "completed"}


def is_progress_complete(progress):
    if isinstance(progress, int):
        return progress >= 100
    if isinstance(progress, float):
        return progress >= 100
    if isinstance(progress, str):
        try:
            return float(progress.rstrip("%")) >= 100
        except ValueError:
            return False
    return False


def is_transient_status(status_code):
    return status_code == 429 or 500 <= status_code < 600


def create_task(files):
    for attempt in range(1, MAX_CREATE_ATTEMPTS + 1):
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            files=files,
            timeout=30,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_CREATE_ATTEMPTS:
            response.raise_for_status()
        print(f"Create request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to create task.")


def get_task(task_id):
    for attempt in range(1, MAX_QUERY_ATTEMPTS + 1):
        response = requests.get(
            f"{BASE_URL}/v1/videos/{task_id}",
            headers=headers,
            timeout=15,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_QUERY_ATTEMPTS:
            response.raise_for_status()
        print(f"Status request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to query task.")

if COMETAPI_KEY == "<YOUR_COMETAPI_KEY>":
    print("Set COMETAPI_KEY before running this example.")
    raise SystemExit(0)

headers = {"Authorization": f"Bearer G00igxF5pXVB56lrtvvgn3hGXJA4bsobmX9YMpGukWAwJDiy"}

create_response = create_task(
    {
        "prompt": (None, "A slow cinematic camera push across a coastal landscape at sunrise."),
        "model": (None, "doubao-seedance-2-0"),
        "seconds": (None, "5"),
        "size": (None, "16:9"),
    }
)
create_response.raise_for_status()
create_result = create_response.json()

task_id = create_result.get("id") or create_result.get("task_id")
if not task_id:
    print(json.dumps(create_result, indent=2))
    raise SystemExit("No task id returned.")

print(f"Task created: {task_id}")
print(f"Initial status: {create_result.get('status')}")

while True:
    task_response = get_task(task_id)
    task_response.raise_for_status()
    task = task_response.json()
    status = str(task.get("status") or "unknown")
    normalized_status = status.lower()
    progress = task.get("progress")
    should_try_download = normalized_status in SUCCESS_STATUSES or (
        normalized_status == "unknown" and is_progress_complete(progress)
    )

    print(f"Status: {status}, progress: {progress}")

    if should_try_download or normalized_status in TERMINAL_STATUSES:
        if should_try_download:
            video_url = task.get("video_url") or ""
            content_url = f"{BASE_URL}/v1/videos/{task_id}/content"
            output_path = os.path.join(OUTPUT_DIR, f"{task_id}.mp4")

            os.makedirs(OUTPUT_DIR, exist_ok=True)
            with requests.get(
                content_url,
                headers=headers,
                timeout=120,
                stream=True,
            ) as video_response:
                video_response.raise_for_status()
                with open(output_path, "wb") as output_file:
                    for chunk in video_response.iter_content(chunk_size=8192):
                        if chunk:
                            output_file.write(chunk)

            print(f"Video URL: {video_url}")
            print(f"Content endpoint: {content_url}")
            print(f"Saved to {output_path}")
            print(f"File size: {os.path.getsize(output_path)} bytes")
        else:
            print(json.dumps(task, indent=2))
            raise SystemExit(1)
        break

    time.sleep(POLL_INTERVAL_SECONDS)

Le guide détaillé de CometAPI pour Seedance 2.0 utilise le même modèle d’endpoints et montre des contrôles output tels que resolution: "1080p" et duration_s: 12 dans la structure de requête.

4) Interroger jusqu’à la fin et télécharger le résultat

Le flux type est : soumettre le job, stocker l’ID de tâche, sonder le statut, puis récupérer l’URL de la vidéo. L’endpoint de tâche renvoie un ID de tâche et le statut est vérifié avec GET /volc/v3/contents/generations/tasks/{task_id} jusqu’à la fin du job.

Modes de génération Seedance 2.0 expliqués

ModeIdéal pourExemple d’entréeNombre max de références
text_to_videoIdéation rapidePrompt texte uniquement0
first_last_framesStoryboard avec images clés1–2 images + prompt2
omni_referenceContrôle cinématographique proImages + vidéo + audio + texte12

Étape par étape : du texte à la vidéo avec exemple de code Python

Voici un exemple Python que vous pouvez adapter :

import osimport timeimport requestsAPI_KEY = os.environ["COMETAPI_API_KEY"]BASE_URL = "https://api.cometapi.com/volc/v3/contents/generations/tasks"headers = {    "Authorization": f"Bearer {API_KEY}",    "Content-Type": "application/json",}payload = {    "model": "doubao-seedance-2-pro",    "content": [        {            "type": "text",            "text": (                "A cinematic drone shot over a rain-soaked neon street at night, "                "slow push-in, realistic reflections, subtle crowd motion."            )        },        {            "type": "image",            "url": "https://example.com/reference-frame.jpg"        }    ],    "output": {        "resolution": "1080p",        "duration_s": 12    }}resp = requests.post(BASE_URL, json=payload, headers=headers, timeout=60)resp.raise_for_status()data = resp.json()task_id = data.get("id") or data.get("task_id")if not task_id:    raise RuntimeError(f"Unexpected response, no task ID found: {data}")status_url = f"{BASE_URL}/{task_id}"for _ in range(60):    status_resp = requests.get(status_url, headers=headers, timeout=30)    status_resp.raise_for_status()    status_data = status_resp.json()    status = status_data.get("status")    if status in {"succeeded", "failed"}:        break    time.sleep(5)print("Final status:", status)if status == "succeeded":    result = status_data.get("result", {})    print("Video URL:", result.get("download_url"))else:    print("Task details:", status_data)

Ce schéma correspond au workflow asynchrone documenté sur les pages Seedance de CometAPI : soumettre le job, interroger la tâche, puis lire la charge utile du résultat lorsque le job est terminé.

Image vers vidéo et images de début/fin

Ajoutez image_urls ou reference_images dans la charge utile :

payload = {
    "model": MODEL,
    "prompt": "The character turns and smiles at camera, natural motion",
    "image_urls": ["https://example.com/start-frame.jpg"],  # first frame
    "task_type": "first_last_frames"  # or omni_reference
}

Exemple avancé multimodal Omni-Reference

payload = {
    "model": MODEL,
    "prompt": "A professional chef cooks pasta while explaining steps. Use @image1 for chef face consistency, @video1 for kitchen layout, @audio1 for upbeat Italian music and voiceover.",
    # Upload references via provider dashboard or pre-signed URLs
    "references": {  # Platform-specific field
        "image1": "https://.../chef.jpg",
        "video1": "https://.../kitchen.mp4",
        "audio1": "https://.../music.wav"
    }
}

Bonnes pratiques de conception de prompt pour Seedance 2.0

  • Soyez spécifique : « Dolly zoom lent du plan large au gros plan, lumière golden hour, physique réaliste. »
  • Utilisez des références : préfixez toujours avec @assetN.
  • Langage caméra : « Plan en suivi à l’épaule, rack focus, orbite fluide. »
  • Indices audio : « Coupez au drop de basse, dialogues clairs avec synchro labiale. »
  • Contrôle de la durée : spécifiez « clip de 8 secondes, 5 plans ».

Astuce pro : testez vos prompts d’abord dans le bac à sable du fournisseur (CometAPI propose des tests en un clic).

Tableau de comparaison : Seedance 2.0 vs meilleurs concurrents (2026)

FonctionSeedance 2.0Kling 3.0Runway Gen-4Luma Ray 2 / Sora 2
Audio natif⭐⭐⭐⭐⭐ (meilleur)⭐⭐⭐⭐⭐⭐⭐⭐⭐
Références multimodalesJusqu’à 12 fichiersLimitéImages uniquementVariable
Durée max15 s10–15 s8–16 s8–20 s
Contrôle de caméraNiveau réalisateurFortExcellentBon
Cohérence du mouvementLeader du secteurTrès bonBonExcellent
Idéal pourNarration cinématographiqueCohérence des personnagesFinition artistiquePhotoréalisme

Seedance 2.0 l’emporte pour l’audio natif et le contrôle multimodal.

Cas d’usage concrets

  • Marketing : démos produit avec voix off synchronisée.
  • Réseaux sociaux : contenus courts viraux avec montages pilotés par la musique.
  • Pré‑vis cinéma : du storyboard à la vidéo avec personnages cohérents.
  • Éducation : vidéos explicatives animées avec narration synchronisée.

Les utilisateurs de CometAPI rapportent une itération 40 % plus rapide en basculant entre Seedance 2.0 et des modèles complémentaires dans une seule base de code.

Bonnes pratiques, montée en charge et gestion des erreurs

  • Implémentez un backoff exponentiel pour le polling.
  • Utilisez des clés d’idempotence pour les retries.
  • Surveillez l’usage via le tableau de bord CometAPI.
  • Suppression du filigrane disponible sur certains niveaux.
  • Respectez la modération de contenu (pas de contenu illégal/trompeur).

Extrait Python de gestion d’erreurs :

try:
    video_url = generate_seedance_video(...)
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 429:
        print("Rate limit – retry after backoff")

Dépannage des problèmes courants

  • Tâche bloquée en file d’attente : vérifiez le statut du fournisseur ; utilisez un niveau rapide.
  • Cohérence médiocre : ajoutez plus d’images de référence avec la syntaxe @.
  • Désynchronisation audio : décrivez explicitement le rythme dans le prompt.
  • Coût élevé : passez à des modèles fast‑preview pour les tests.

Conclusion et prochaines étapes

L’API Seedance 2.0 représente un saut qualitatif pour une génération vidéo contrôlable et native audio. Avec les exemples de code ci‑dessus et la plateforme unifiée CometAPI.com, vous pouvez commencer à construire des workflows vidéo de production aujourd’hui — souvent en moins de 30 minutes.

Prêt à essayer ? Rendez‑vous sur CometAPI.com, récupérez vos crédits gratuits et générez instantanément votre première vidéo Seedance 2.0. Que vous soyez créateur solo, agence ou équipe entreprise, CometAPI offre l’accès le plus fluide et le meilleur rapport valeur à Seedance 2.0 et à plus de 500 autres modèles.

Commencez à créer des vidéos IA cinématographiques dès aujourd’hui — votre prochaine campagne virale (ou pré‑vis de long métrage) n’est qu’à un appel d’API.

Continuer à apprendre

Reliez cet article à la décision suivante.

Voir tous les sujets
Publié le Apr 17, 2026
Dernière mise à jour Sep 3, 2026
729 vues
Revu pour la clarté, l'attribution des sources et la terminologie API actuelle.

Prêt à réduire vos coûts de développement IA de 20 % ?

Démarrez gratuitement en quelques minutes. Crédits d'essai offerts. Aucune carte bancaire requise.

En savoir plus