ByteDance: Seedance 1.0 Lite Text-to-Video
Seedance 1.0 Lite Text-to-Video transforme une scène écrite en vidéo sans son. Ce sélecteur Lite précis utilise du texte plutôt qu’une image de référence, avec une durée de 2 à 12 secondes, 24 fps et un cadrage paysage, portrait, carré ou cinématographique.
À 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 1.0 Lite Text-to-Video génère une vidéo à partir d’une scène écrite. Le sélecteur exact doubao-seedance-1-0-lite-t2v-250428 est la variante texte-vers-vidéo de l’édition Lite. Utilisez-le lorsque le sujet, le décor et le mouvement peuvent être décrits directement : un produit sur une table, un plan d’ensemble d’un lieu ou une brève action d’un personnage. La sortie est un clip vidéo ; ce profil 1.0 ne génère pas d’audio synchronisé.
Écrivez la scène dans l’ordre où le spectateur doit la voir. Identifiez le sujet et son apparence, le lieu, l’action, l’échelle de plan et le mouvement de caméra, puis décrivez la composition finale. Une consigne de produit utile peut montrer une bouteille sur un socle en pierre claire, la lumière du soleil se déplaçant sur l’étiquette et un lent travelling avant vers le bouchon. Ce sont des instructions pour une nouvelle scène, sans promesse de reproduire une photographie fournie du produit. Adaptez l’action visible à la durée sélectionnée du clip.
Ce sélecteur texte-vers-vidéo est distinct du sélecteur Lite image-vers-vidéo nommé séparément. Son contenu est fourni comme un élément de type text dans le tableau content. Une phrase peut décrire une personne, un objet ou un style, mais elle ne joint pas d’image de référence et n’établit pas une identité visuelle exacte à partir d’un fichier non consulté. Pour une scène dont la composition initiale doit provenir d’une image existante, choisissez un profil acceptant les images au lieu de supposer que l’ajout d’un champ média change le mode du sélecteur Lite t2v.
La durée documentée pour la version 1.0 va de deux à douze secondes, avec cinq secondes par défaut et une cadence fixe de 24 fps. Lite propose les niveaux de résolution 480p, 720p et 1080p, avec 720p comme valeur par défaut documentée. Les rapports d’aspect fixes comprennent 16:9, 4:3, 1:1, 3:4, 9:16 et 21:9. Choisissez le cadrage selon sa destination avant la génération : portrait pour une présentation verticale, carré pour une fiche produit compacte ou paysage pour une scène large. Les niveaux de résolution et les rapports d’aspect décrivent la sortie demandée ; vérifiez les dimensions réelles en pixels et le cadrage du clip téléchargé.
La requête propose des réglages seed, watermark et de caméra. seed est un entier de -1 à 2^32-1, -1 sélectionnant un résultat aléatoire. Une demande de caméra fixe ajoute une consigne de caméra immobile, et la documentation précise explicitement que l’effet n’est pas garanti. Gardez la direction de caméra cohérente entre la scène écrite et le réglage distinct. Les instructions de paramètres intégrées au texte prennent le pas sur les paramètres facultatifs distincts : évitez donc les instructions contradictoires de durée, de résolution ou de cadrage aux deux endroits.
L’utilisation est mesurée en tokens vidéo : largeur de sortie × hauteur de sortie × cadence d’images × durée de sortie / 1024. La tâche achevée rapporte cette quantité dans usage.completion_tokens. Conservez l’utilisation rapportée avec le clip achevé et les réglages demandés.
La génération est asynchrone. La soumission renvoie un identifiant de tâche, et la consultation de la tâche fournit son état de traitement puis, après réussite, l’URL de la vidéo dans content.video_url. Conservez cet identifiant tant que la tâche est en attente ou en cours et enregistrez le clip achevé pour la révision suivante. La durée documentée de conservation des fichiers générés est de sept jours. La requête possède aussi un délai d’expiration, mesuré à partir de la création de la tâche, après lequel une tâche inachevée expire ; la valeur par défaut documentée est de 172 800 secondes, avec des valeurs allant de 3 600 à 259 200 secondes.
Vérifiez tout le clip à partir de la consigne : présence du sujet voulu, ordre correct de l’action, direction de caméra conforme à la demande et dernière image utilisable. Modifiez une instruction précise pour la version suivante tout en conservant la structure de scène réussie. Pour une série de plans, gardez chaque prompt, les réglages demandés et la vidéo achevée pour planifier la scène suivante à partir du résultat réel.
Ailoot Ultra · Vidéo POST /v1/videos doubao-seedance-1-0-lite-t2v-250428
doubao-seedance-1-0-lite-t2v-250428
doubao-seedance-1-0-lite-t2v-250428Premiers pas
Seedance 1.0 Lite Text-to-Video transforme une scène écrite en vidéo sans son. Ce sélecteur Lite précis utilise du texte plutôt qu’une image de référence, avec une durée de 2 à 12 secondes, 24 fps et un cadrage paysage, portrait, carré ou cinématographique.
- Entrées acceptées
- Texte
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Vidéo POST /v1/videos
- Entrée
text- Sortie
video
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites doubao-seedance-1-0-lite-t2v-250428 | Par défaut— |
Champcontent | Typearray | ExigenceObligatoire | Valeurs et limites Conditions: Objets natifs de texte ou de média ; le tableau externe ne peut pas être vide. Ce constructeur générique Ailoot ne valide pas les types des nœuds imbriqués. | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 2 Maximum: 12 Conditions: Schéma principal 1.x : 2–12 ; une description commune ultérieure indique 4–12 ou -1 pour 1.5. L’exemple utilise 5, documenté dans les deux cas. | Par défaut5 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480p, 720p, 1080p Conditions: Énumération commune ; 1080p est exclu avec les images de référence et 1.5. La description intégrée de pro répertorie 480p/1080p, alors que l’énumération de niveau supérieur inclut 720p ; aucune garantie de prise en charge de 720p pour pro n’est établie. | Par défaut720p |
Champratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive Conditions: Valeurs par défaut dépendant de la scène ou du modèle ; la documentation des entrées image recommande adaptive. | Par défaut— |
Champservice_tier | Typestring | ExigenceFacultatif | Valeurs et limites default, flex Conditions: default=online, flex=offline ; choisissez avant la création. | Par défautdefault |
Champseed | Typeinteger | ExigenceObligatoire | Valeurs et limites Minimum: -1 Maximum: 4 294 967 295 | Par défaut-1 |
Champcamerafixed | Typeboolean | ExigenceObligatoire | Valeurs et limites Conditions: Requis par Ailoot ; le contrôle de caméra à partir d’une image de référence est documenté comme non pris en charge et son effet n’est pas garanti. | Par défautfalse |
Champwatermark | Typeboolean | ExigenceObligatoire | Valeurs et limites | Par défautfalse |
Champexecution_expires_after | Typeinteger | ExigenceObligatoire | Valeurs et limites Minimum: 3 600 Maximum: 259 200 Unité: secondes | Par défaut172 800 |
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 | Contratcamerafixed, content, execution_expires_after, model, seed, watermark |
Paramètreoptional | Contratduration, resolution, ratio, service_tier |
Paramètrematerial_types | Contrattext |
Paramètreadditional_properties | Contrattrue |
Paramètrevalidation_scope | ContratAiloot vérifie les types des champs obligatoires ainsi que la présence d’un modèle non vide et d’un tableau de contenus non vide. Les autres champs de la requête sont conservés pour le modèle sélectionné. |
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 périodiquement la tâche d’origine ; téléchargez le contenu réel content.video_url dont vous êtes propriétaire une fois l’état succeeded atteint.
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 des jetons | 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 |
| ConfigurationUltra | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar 1K tokens vidéo | Coût Sortie · Estimation à des fins de comparaison uniquement $0.003 par 1K tokens vidéo |
| ConfigurationCoût estimé de la génération | 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.144 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-1-0-lite-t2v-250428","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}],"resolution":"480p","ratio":"1:1","duration":5,"service_tier":"default","seed":-1,"camerafixed":false,"watermark":false,"execution_expires_after":172800}
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 un résultat réellement renvoyé.
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 périodiquement cette opération ; ne soumettez jamais de 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, modèle, types des champs obligatoires ou index de contenu invalides. | Étape suivante |
Réponse401 · authentication_error | ConditionClé API Ailoot invalide. | Étape suivante |
Réponse404 · not_found_error | ConditionTâche ou résultat absent, ou n’appartenant pas au même utilisateur, à la même clé API et au même groupe. | Étape suivante |
Réponse502 · result_pending_check | ConditionSoumission ou état d’origine incomplet ; conservez l’ID d’origine et ne soumettez pas de nouveau la requête. | Étape suivante |
Réponse503 · result_pending_check | ConditionLe média, la route ou le règlement d’origine fait l’objet d’une vérification ; poursuivez l’opération d’origine. | Étape suivante |
Alias
Alias du modèle
Ailoot Ultra doubao-seedance-1-0-lite-t2v-250428
Alias des chemins de méthode
/v1/videos/generations
ID d’appel associés
FAQ · ByteDance: Seedance 1.0 Lite Text-to-Video
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·doubao-seedance-1-0-lite-t2v-250428:text→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·doubao-seedance-1-0-lite-t2v-250428:model,content,duration,resolution,ratio,service_tier,seed,camerafixed,watermark,execution_expires_after- Quelles limites s’appliquent ?
POST /v1/videos·doubao-seedance-1-0-lite-t2v-250428:duration.minimum:2;duration.maximum:12;seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200