API Seedance 2.0 : tarifs, paramètres et code fonctionnel
Seedance 2.0 est le modèle vidéo multi-plans avec son de ByteDance. Ce guide présente ce qu'il fait de mieux, toutes les options que l'API accepte, ce que coûte un clip à chaque résolution, et des requêtes que vous pouvez coller dans un terminal.
Ce en quoi Seedance 2.0 excelle
ByteDance a lancé Seedance 2.0 en février 2026. Il génère l'image et la bande-son en une seule passe, peut enchaîner plusieurs plans dans un même clip, et conserve un personnage et un style visuel d'une coupe à l'autre. C'est un excellent choix par défaut pour la vidéo narrative courte : publicités de produits, moments d'histoire et clips pour les réseaux sociaux qui ont besoin de son dès le départ.
- Clips multi-plans. Décrivez les plans dans l'ordre et le modèle enchaîne les coupes en gardant le sujet cohérent.
- Du son dans la même passe. L'ambiance, les effets et la parole sont générés avec l'image quand vous définissez
audiosurtrue. - Contrôle à partir d'images. Partez d'une première image, fixez à la fois une première et une dernière image, ou passez jusqu'à 9 images de référence pour un personnage, un produit ou un style.
- Cadrage flexible. Six formats d'image fixes, du 9:16 vertical pour les réseaux sociaux au 21:9 pour le travail cinématographique, plus un réglage adaptatif qui suit votre image d'entrée.
Où il est plus faible : comme la plupart des modèles vidéo, Seedance 2.0 ne rend pas de façon fiable le texte exact à l'écran : ajoutez donc titres, prix et logos dans votre éditeur plutôt que dans le prompt. Les scènes chargées où beaucoup de personnes bougent en même temps sont difficiles pour les modèles vidéo actuels en général ; moins de sujets et des actions claires donnent des résultats plus fiables.
Entrées et limites
Voici les options que le catalogue liste pour Seedance 2.0. Le format de requête est le même que pour tous les autres modèles de Revana ; seules les valeurs autorisées diffèrent.
| Option | Seedance 2.0 |
|---|---|
| Identifiant du modèle | seedance-2.0 (niveaux plus légers : seedance-2.0-fast, seedance-2.0-mini) |
| Tâches | texte vers vidéo, image vers vidéo, première et dernière images et images de référence |
| Résolution | 480p, 720p, 1080p et 4K |
| Durée | 4 à 15 s |
| Format d'image | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 ou adaptatif |
| Son | audio: true or false |
| Images de référence | jusqu'à 9, dans image_urls |
Un champ ou une valeur que le modèle ne prend pas en charge est rejeté avec une erreur 422 avant toute facturation : une faute de frappe dans une requête ne coûte donc rien.
Tarifs de Seedance 2.0 (octobre 2026)
Seedance 2.0 est facturé à la seconde de vidéo produite. Les prix ci-dessous proviennent du catalogue de Revana en octobre 2026, à partir de $0.08 la seconde en 480p.
| Résolution | Par seconde | Clip de 5 s | Clip de 10 s | Clip de 15 s |
|---|---|---|---|---|
| 480p | $0.08 | $0.40 | $0.80 | $1.20 |
| 720p | $0.15 | $0.75 | $1.50 | $2.25 |
| 1080p | $0.40 | $2.00 | $4.00 | $6.00 |
| 4K | $0.83 | $4.15 | $8.30 | $12.45 |
Il n'y a pas de tarif audio distinct pour Seedance 2.0 : le prix listé est le même avec ou sans son.
Seedance 2.0 sur Revana accepte du texte et des images (une première image, une première et une dernière image, ou des images de référence). Il n'accepte pas de vidéo de référence : il n'y a donc pas de tarif distinct pour une vidéo en entrée.
Quand vous envoyez une tâche, son prix est bloqué sur votre solde. Vous n'êtes facturé que si la tâche réussit ; si elle échoue, le blocage est libéré. Le montant exact revient sur la génération sous cost_usd. Voir les tarifs pour les packs de crédits et la grille de prix complète, et le comparatif de prix de Seedance 2.0 pour ce que facturent ByteDance, fal, EvoLink et Atlas Cloud pour le même modèle.
Seedance 2.0 Fast et Mini
La même famille existe en deux niveaux plus légers, avec les mêmes tâches, formats d'image, durées et jusqu'à 9 images de référence, mais ils s'arrêtent à 720p. Ils conviennent aux brouillons et au travail en gros volume ; relancez les prompts qui vous plaisent sur Seedance 2.0 pour la qualité finale et les résolutions supérieures.
| Modèle | 480p / s | 720p / s | 5 s en 720p | Routes |
|---|---|---|---|---|
| Seedance 2.0 | $0.08 | $0.15 | $0.75 | trois routes |
| Seedance 2.0 Fast | $0.05 | $0.11 | $0.55 | trois routes |
| Seedance 2.0 Mini | $0.03 | $0.05 | $0.25 | quatre routes |
Générer une vidéo Seedance 2.0
Chaque requête va vers POST /v1/generations avec votre clé API comme jeton bearer. L'appel renvoie 202 immédiatement avec un id de génération ; interrogez GET /v1/generations/{id} toutes les quelques secondes jusqu'à ce que status soit succeeded ou failed. Cet exemple demande un clip de 5 secondes en 720p avec son, ce qui coûte $0.75.
export REVANA_API_KEY="sr_live_..."
# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
-H "Authorization: Bearer $REVANA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"input": {
"prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"audio": true
},
"max_cost_usd": 2
}'
# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JBX7Q2M4 \
-H "Authorization: Bearer $REVANA_API_KEY"import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": "seedance-2.0",
"input": {
"prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
"resolution": "720p",
"duration": 5,
"aspect_ratio": "16:9",
"audio": True,
},
"max_cost_usd": 2,
})
resp.raise_for_status()
job = resp.json()
while job["status"] in ("queued", "running"):
time.sleep(5)
job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()
if job["status"] == "succeeded":
print(job["output"]["urls"], job["cost_usd"])
else:
print("Failed:", job["error"])// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
"Content-Type": "application/json",
};
const res = await fetch(`${API}/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.0",
input: {
prompt: "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
resolution: "720p",
duration: 5,
aspect_ratio: "16:9",
audio: true,
},
max_cost_usd: 2,
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 5000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);max_cost_usd est un plafond sur ce que la tâche peut coûter : les routes chiffrées au-dessus sont ignorées, et si aucune ne convient, la tâche n'est pas exécutée. Définissez-le un peu au-dessus du prix attendu. Une génération terminée ressemble à ceci :
{
"id": "gen_01JBX7Q2M4",
"model": "seedance-2.0",
"status": "succeeded",
"output": {
"urls": [
"https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
]
},
"cost_usd": 0.75,
"attempts": 1,
"error": null,
"created_at": "2026-10-19T14:02:11Z",
"completed_at": "2026-10-19T14:03:47Z"
}Téléchargez le fichier peu après la fin de la tâche : les liens de sortie expirent. La documentation de l'API liste chaque champ, statut et code d'erreur.
Animer une image fixe (image vers vidéo)
Passez une image de départ dans image_url. Le prompt décrit alors le mouvement et le son plutôt que la scène, déjà présente dans l'image. Le format d'image adaptive suit la forme de votre image.
{
"model": "seedance-2.0",
"input": {
"prompt": "She turns toward the camera and smiles as a light breeze moves her hair. Distant city traffic, a bus passing.",
"image_url": "https://example.com/first-frame.jpg",
"resolution": "1080p",
"duration": 5,
"aspect_ratio": "adaptive",
"audio": true
},
"max_cost_usd": 3
}Images de début et de fin
Ajoutez end_image_url pour fixer l'endroit où le plan se termine. Le modèle complète le mouvement entre les deux images, ce qui fonctionne bien pour les transitions, les révélations et les plans avant/après.
{
"model": "seedance-2.0",
"input": {
"prompt": "Smooth orbit around the sneaker as the light shifts from daylight to neon night",
"image_url": "https://example.com/start.jpg",
"end_image_url": "https://example.com/end.jpg",
"resolution": "720p",
"duration": 6,
"aspect_ratio": "16:9",
"audio": false
},
"max_cost_usd": 2
}Images de référence
Pour garder un personnage ou un produit cohérent sans fixer la première image, envoyez jusqu'à 9 images dans image_urls et décrivez chacune dans le prompt, par exemple « la femme de la première image ». Utilisez des images de début et de fin ou des références dans une requête, pas les deux : ce sont des modes distincts, et une requête qui les mélange peut être rejetée.
{
"model": "seedance-2.0",
"input": {
"prompt": "The woman from the first image walks through the market from the second image, carrying the bag from the third image. Handheld camera, golden hour, market chatter.",
"image_urls": [
"https://example.com/woman.jpg",
"https://example.com/market.jpg",
"https://example.com/bag.jpg"
],
"resolution": "720p",
"duration": 8,
"aspect_ratio": "9:16",
"audio": true
},
"max_cost_usd": 2
}Conseils de prompt pour Seedance 2.0
- Écrivez les plans dans l'ordre. Des libellés comme « Plan 1 : plan d'ensemble d'établissement. Plan 2 : gros plan sur ses mains » donnent au modèle des points de coupe clairs.
- Nommez le mouvement de caméra. Travelling avant, orbite, caméra à l'épaule, trépied fixe, recul en drone : un mouvement par plan se lit mieux qu'une liste.
- Décrivez le son. « De la pluie sur un toit en tôle, un tonnerre lointain, pas de musique » fonctionne mieux que de laisser l'audio au hasard. Si vous ne voulez pas de parole, dites-le.
- Gardez les dialogues courts. Mettez la réplique entre guillemets et dites qui parle. Un clip de 5 secondes a la place pour une courte phrase.
- Laissez le texte hors du cadre. Ajoutez sous-titres, titres et logos au montage.
- Faites des brouillons à bas coût, puis montez en qualité. Itérez en 480p ou sur Seedance 2.0 Mini, puis relancez le prompt gagnant en 1080p. Les résultats ne sont pas identiques d'une résolution et d'un niveau à l'autre : considérez donc les brouillons comme un guide.
Comment fonctionnent le routage et le repli pour Seedance 2.0
Revana est un routeur d'API : une seule clé et un seul format de requête devant plusieurs fournisseurs en amont qui servent le même modèle. Seedance 2.0 dispose actuellement de trois routes. Le routeur envoie chaque tâche d'abord vers la route la moins chère ; si cette route échoue ou dépasse le délai, il renvoie automatiquement la tâche vers la suivante.
- Vous payez le prix listé quelle que soit la route qui traite la tâche, et seule la route qui réussit est facturée.
- Le champ
attemptsde la génération indique combien de routes ont été essayées. - Si toutes les routes échouent, la tâche se termine en
failedavec une erreur et ne coûte rien.
Le repli augmente les chances d'obtenir un résultat, mais ce n'est pas une promesse de disponibilité ni de rapidité. Gérez les tâches failed dans votre application, par exemple en réessayant plus tard ou en proposant un autre modèle.
Prêt à essayer ? Obtenez une clé API, puis comparez Seedance 2.0 aux autres modèles vidéo.
Questions fréquentes
Combien coûte l'API Seedance 2.0 ?
En octobre 2026, Seedance 2.0 coûte $0.08 la seconde en 480p, $0.15 en 720p, $0.40 en 1080p et $0.83 en 4K. Un clip de 5 secondes en 720p coûte $0.75. Le son est inclus dans le même prix.
Seedance 2.0 génère-t-il de l'audio ?
Oui. Définissez audio sur true et le modèle génère l'ambiance, les effets et la parole avec l'image en une seule passe. Définissez-le sur false pour un clip silencieux ; le prix est le même dans les deux cas.
Quelle peut être la durée d'une vidéo Seedance 2.0 ?
De 4 à 15 secondes par requête. Pour des pièces plus longues, générez plusieurs clips et montez-les ensemble, ou utilisez Seedance 2.5, qui va jusqu'à 30 secondes.
Puis-je utiliser des images de référence avec Seedance 2.0 ?
Oui, jusqu'à 9 images dans image_urls, pour des personnages, des produits ou un style. Utilisez soit des images de début et de fin (image_url et end_image_url), soit des références dans une même requête, pas les deux.
En quoi Seedance 2.0 Fast et Mini diffèrent-ils de Seedance 2.0 ?
Ils ont les mêmes tâches et options mais s'arrêtent à 720p. En 720p, Seedance 2.0 Fast coûte $0.11 la seconde et Seedance 2.0 Mini $0.05, contre $0.15 pour Seedance 2.0.
Que se passe-t-il si une génération Seedance 2.0 échoue ?
Le routeur essaie automatiquement la route suivante. Vous n'êtes facturé qu'une fois, pour la route qui réussit ; si toutes les routes échouent, la tâche échoue et ne coûte rien.
Appelez Seedance 2.0 avec une seule clé
Créez une clé, ajoutez du crédit à partir de $10, et utilisez la même clé pour Seedance 2.0 et tous les autres modèles du catalogue.