ByteDance: Seedance 2.0
Seedance 2.0 génère et modifie des vidéos à l’aide de texte, d’images et de références vidéo et audio. Il peut prolonger des séquences existantes et générer un son synchronisé, avec une durée de 4 à 15 secondes, une sortie 480p ou 720p et des rôles de référence explicites.
À propos du modèle
Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.
Seedance 2.0 génère une vidéo à partir d’une scène écrite ou d’une combinaison de références image, vidéo et audio. Le sélecteur exact doubao-seedance-2-0-260128 identifie le profil 2.0 standard. Ses processus documentés comprennent la génération de nouvelles vidéos, la modification et le prolongement de séquences existantes. Utilisez des références pour communiquer l’apparence, le mouvement, le langage de caméra et le son, puis indiquez les parties de la scène qu’elles doivent contrôler.
Le texte peut être fourni seul. Les combinaisons multimodales documentées acceptent aussi des images ou une vidéo avec du texte facultatif, des images avec de l’audio, une vidéo avec de l’audio, et des images, une vidéo et de l’audio ensemble. L’audio accompagne donc des médias visuels dans ces combinaisons répertoriées ; il n’est pas décrit comme une requête audio-vers-vidéo autonome. Décrivez clairement le résultat voulu même lorsque le texte est facultatif, afin que le rôle de chaque référence soit explicite plutôt que déduit de ressources sans lien.
Le tableau content distingue les éléments text, image_url, video_url et audio_url. Les références multimodales utilisent des rôles tels que reference_image, reference_video et reference_audio. Une image peut définir la personne, l’objet, le lieu ou le style visuel. Une vidéo peut montrer une interprétation, un mouvement ou une vue de caméra, et l’audio peut établir une piste ou un rythme temporel. Indiquez cette répartition dans le brief : gardez le sujet de l’image, suivez la vue de caméra de la vidéo et utilisez l’audio comme fond sonore. Ne demandez pas à chaque référence de définir toutes les propriétés à la fois.
L’exemple publicitaire documenté combine deux images de produit avec une vidéo et une référence audio. Il décrit une vue initiale, une séquence d’action, un détail rapproché du produit et une composition finale, tout en gardant la voix de fond cohérente. La même structure peut organiser une courte présentation : introduire l’objet, montrer une action et terminer sur sa caractéristique reconnaissable. Pour une modification, identifiez la séquence source et l’élément à changer ; pour un prolongement, expliquez l’action qui continue au-delà de la scène existante en préservant le sujet et la direction du mouvement.
Le profil 2.0 documente une durée en secondes entières de quatre à quinze, ou -1 pour une durée choisie automatiquement dans cette plage. La valeur par défaut est de cinq secondes. Ses options de résolution sont 480p et 720p, avec 720p par défaut ; 1080p est exclu pour 2.0. Les rapports d’aspect fixes comprennent 16:9, 4:3, 1:1, 3:4, 9:16 et 21:9. Le rapport d’aspect adaptatif peut choisir le cadrage à partir du prompt ou de la référence : un travail à partir d’une première image suit l’image initiale, et un travail multimodal utilise la scène voulue ou le premier média pertinent, la vidéo ayant priorité sur les images. Vérifiez le rapport d’aspect et la durée réels dans le résultat de la tâche.
Le son généré est réglé séparément des médias de référence. generate_audio=true demande des voix, des effets et une musique de fond synchronisés à partir du texte et du contenu visuel ; false demande une vidéo sans son. La valeur par défaut documentée est true, et les dialogues entre guillemets sont recommandés pour la parole. Précisez qui parle et comment le son se rapporte à l’action visible, puis vérifiez les paroles réelles, l’attribution des voix et leur placement dans le temps. Fournir une référence audio et activer le son généré sont des choix de requête distincts.
Le guide 2.0 exclut les anciens réglages frames et camera_fixed et ne prend pas en charge le traitement hors ligne flex. Utilisez le champ duration et décrivez le mouvement de caméra dans la scène elle-même. La graine aléatoire et le filigrane restent des réglages documentés ; le guide indique que la même requête et la même graine peuvent produire des résultats similaires sans garantir une identité exacte. Ne considérez pas une graine comme une preuve de reproductibilité, ni une requête répétée comme un clip déjà vérifié.
L’utilisation en tokens vidéo est calculée ainsi : (durée de la vidéo d’entrée + durée de la vidéo de sortie) × largeur de sortie × hauteur de sortie × cadence de sortie / 1024. Les requêtes contenant une vidéo d’entrée et celles sans vidéo d’entrée relèvent de catégories de facturation distinctes. La consultation de tâche rapporte usage.completion_tokens et usage.total_tokens ; conservez ces quantités rapportées avec le clip achevé.
Le processus est asynchrone : la soumission renvoie un identifiant de tâche, et la tâche achevée fournit content.video_url avec la durée, la résolution, le rapport d’aspect, la cadence et l’utilisation en tokens rapportés. Conservez l’identifiant et enregistrez la vidéo achevée avec les références et le prompt d’origine. Le champ d’expiration vaut 172 800 secondes par défaut et accepte de 3 600 à 259 200 secondes depuis la création de la tâche ; une tâche qui dépasse ce délai expire. Vérifiez toute la sortie, y compris la jonction de modification ou de prolongement, pour l’apparence des personnages, les détails des objets, les relations spatiales, la continuité de caméra et la synchronisation entre son et image.
Ailoot Ultra · Vidéo POST /v1/videos doubao-seedance-2-0-260128
doubao-seedance-2-0-260128Premiers pas
Seedance 2.0 génère et modifie des vidéos à l’aide de texte, d’images et de références vidéo et audio. Il peut prolonger des séquences existantes et générer un son synchronisé, avec une durée de 4 à 15 secondes, une sortie 480p ou 720p et des rôles de référence explicites.
- Entrées acceptées
- Texte · Images · Vidéo · Audio
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Vidéo POST /v1/videos
- Types d’entrée
text,image,video,audio- Types de sortie
video
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites doubao-seedance-2-0-260128 | Par défaut— |
Champcontent | Typearray | ExigenceObligatoire | Valeurs et limites Conditions: Objets natifs de texte ou de média ; le tableau externe doit être non vide. Les types des nœuds imbriqués ne sont pas validés par ce constructeur générique Ailoot. | Par défaut— |
Champgenerate_audio | Typeboolean | ExigenceFacultatif | Valeurs et limites Conditions: Son synchronisé intégré à la vidéo. | Par défauttrue |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Conditions: Entier 4–15 ou -1 ; la durée réelle de sortie est renvoyée. | Par défaut5 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480p, 720p Conditions: 1080p est explicitement non pris en charge pour 2.0/fast. | Par défaut720p |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive Conditions: Le réglage adaptive est explicitement limité à 2.0/fast/1.5 ; l’exemple 2.5 utilise uniquement 16:9. | Par défautadaptive |
Champwatermark | Typeboolean | ExigenceFacultatif | Valeurs et limites | Par défautfalse |
Champseed | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: -1 Maximum: 4 294 967 295 | Par défaut-1 |
Champexecution_expires_after | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 3 600 Maximum: 259 200 Unité: secondes | Par défaut172 800 |
Champservice_tier | Typestring | ExigenceFacultatif | Valeurs et limites default Conditions: 2.0/fast excluent le mode flex hors ligne ; le périmètre de 2.5 n’est pas établi. | Par défautdefault |
Champsafety_identifier | Typestring | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Champtools | Typeobject | ExigenceFacultatif | Valeurs et limites Conditions: Uniquement 2.0/fast ; type=web_search documenté. | Par défaut— |
Combinaisons d’éléments d’entrée
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratcontent, model |
Paramètreoptional | Contratgenerate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier, tools |
Paramètrematerial_types | Contrattext, image, video, audio |
Paramètreadditional_properties | Contrattrue |
Paramètrevalidation_scope | ContratAiloot vérifie les types des champs obligatoires ainsi qu’un champ model et un tableau content non vides. Les autres champs de requête sont conservés pour le modèle sélectionné. |
Paramètrematerial_combinations | Contrattext, image, video, image, audio, image, video, video, audio, image, video, audio |
Paramètreoptional_text_with_media | Contrattrue |
Paramètrereference_media_count_and_size_limits | Contratnull |
Alias de méthode : /v1/videos/generations
Cycle de vie : submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Créez une seule fois et conservez les valeurs publiques id/polling_url renvoyées.
Interrogez la tâche d’origine ; téléchargez le contenu réel content.video_url vous appartenant après succeeded.
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Unité de facturation | Coût |
|---|---|---|---|---|
| ConfigurationTarifs de base par jeton | Barème tarifaireTarif de base | Quantité prévisionnelle— | Unité de facturation— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationL’entrée contient une vidéo. | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar 1K tokens vidéo | Coût Sortie · Estimation à des fins de comparaison uniquement $0.0096 par 1K tokens vidéo |
| ConfigurationL’entrée ne contient pas de vidéo. | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar 1K tokens vidéo | Coût Sortie · Estimation à des fins de comparaison uniquement $0.015768 par 1K tokens vidéo |
| ConfigurationCoût de génération estimé | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Unité de facturation— | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.822402 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot Ultra · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON_REQUEST'
{"model":"doubao-seedance-2-0-260128","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}]}
JSON_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_POLL'
import json
from pathlib import Path
from urllib.parse import quote,urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
i=r.get("id")
if not isinstance(i,str) or not i.startswith("native302_"):raise SystemExit("Keep original response/headers/id; do not resubmit creation.")
u=urljoin("https://api.ailoot.ai",r.get("polling_url") or "/v1/videos/"+quote(i,safe=""))
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/videos/"):raise SystemExit("Use actual Ailoot lookup path.")
Path("poll-url.txt").write_text(u)
PY_POLL
curl --fail-with-body --silent --show-error "$(cat poll-url.txt)" -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
set -eu
python3 - <<'PY_ASSETS'
import json
from pathlib import Path
from urllib.parse import urlsplit
r=json.loads(Path("status.json").read_text())
if r.get("status")!="succeeded":raise SystemExit("Poll same original job until an owned result is returned.")
u=r.get("content",{}).get("video_url")
urls=[u] if isinstance(u,str) else u
if not isinstance(urls,list) or not urls:raise SystemExit("No completed video URL.")
for u in urls:
if not isinstance(u,str):raise SystemExit("Invalid returned URL.")
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/media/assets/") or not p.path.endswith("/content") or not p.query:raise SystemExit("Wait for actual Ailoot-owned signed result.")
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_ASSETS
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" -o "video-${index}.bin"
index=$((index + 1))
done < asset-urls.txt
Recevoir et enregistrer les résultats
Ailoot Ultra · Vidéo
JSON natif avec id/polling_url publics. Après publication, content.video_url contient une ou plusieurs URL signées appartenant à Ailoot ; avant publication, les URL de sortie sélectionnées sont vidées.
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Conserver tous les résultats terminés
Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.
Conservez chaque URL réelle dans content.video_url ; index doit identifier une sortie réelle renvoyée.
Si la réponse d’origine doit être vérifiée
Conservez la réponse, les en-têtes et l’id d’origine, puis interrogez cette opération ; ne soumettez jamais à nouveau une création dont l’issue est inconnue.
Champs de la réponse
| Champ | Type |
|---|---|
Champid | Typestring |
Champprovider_task_id | Typestring |
Champpolling_url | Typestring |
Champstatus | Typestring when supplied |
Champcontent.video_url | Typestring|string[] |
Champusage | Typeobject when supplied |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionJSON/model, types des champs obligatoires ou index de contenu non valides. | Étape suivante |
Réponse401 · authentication_error | ConditionClé API Ailoot non valide. | Étape suivante |
Réponse404 · not_found_error | ConditionTâche ou sortie absente, ou n’appartenant pas au même utilisateur, à la même clé API ou au même groupe. | Étape suivante |
Réponse502 · result_pending_check | ConditionSoumission ou statut d’origine incomplet ; conservez l’identifiant d’origine, sans soumettre à nouveau. | Étape suivante |
Réponse503 · result_pending_check | ConditionLe média, la route ou le règlement d’origine est en cours de vérification ; poursuivez l’opération d’origine. | Étape suivante |
Alias
Alias du modèle
Ailoot Ultra doubao-seedance-2-0-260128
Alias des chemins de méthode
/v1/videos/generations
ID d’appel associés
FAQ · ByteDance: Seedance 2.0
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·doubao-seedance-2-0-260128:text,image,video,audio→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·doubao-seedance-2-0-260128:model,content,generate_audio,duration,resolution,ratio,watermark,seed,execution_expires_after,service_tier,safety_identifier,tools- Quelles limites s’appliquent ?
POST /v1/videos·doubao-seedance-2-0-260128:seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200