ByteDance: Seedance 1.5 Pro
ByteDance Seedance 1.5 Pro génère de la vidéo avec du dialogue synchronisé, des effets sonores et de la musique. Dirigez les locuteurs, les émotions, la caméra et l’atmosphère sonore pour développer de courtes scènes dramatiques, des publicités parlées et des scènes de personnages.
À 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.5 Pro est le modèle de ByteDance Seed pour la génération native conjointe audio-vidéo. Il modélise ensemble l’action visuelle, la parole et le rythme, permettant à une scène de contenir l’interprétation d’un personnage, un dialogue synchronisé et un paysage sonore conçu. La différence centrale avec un cahier des charges vidéo exclusivement visuel est que le son devient une partie de la description de scène : qui parle, comment la phrase est interprétée et ce que le public entend autour de l’action.
Génération audiovisuelle conjointe
La gamme sonore documentée comprend les sons d’environnement, les effets d’action, les sons synthétisés, les instruments, la musique de fond et le chant. Le modèle vise à relier le son à ce qui se passe à l’écran : un objet frappant une table, une porte qui s’ouvre ou un personnage qui parle. Utilisez-le pour un court moment dramatique, une publicité produit parlée ou une scène dont l’ambiance dépend de l’interprétation et du son.
Commencez le prompt par le sujet et le mouvement, puis ajoutez l’environnement, la caméra, le style visuel et le son. Une scène concise pourrait être : « A chef lifts the lid from a small pot, smiles and says, ‘That is ready.’ A soft burst of steam escapes, followed by the quiet clink of the lid resting on the counter. » Cela donne à la phrase parlée et aux effets une cause visible.
Dialogue et voix off
Le modèle prend en charge les monologues et les conversations à plusieurs locuteurs, avec des mouvements de lèvres correspondant aux personnages. Son guide documente le mandarin, des dialectes chinois dont le cantonais et ceux du Shaanxi et du Sichuan, ainsi que l’anglais, le japonais, le coréen, l’espagnol et l’indonésien parlés. Les langues documentées de prompt sont le chinois et l’anglais ; la langue du prompt et celle demandée pour une phrase parlée sont des choix distincts.
Identifiez chaque locuteur par une caractéristique visible cohérente et écrivez les phrases entre guillemets. Incluez des indications d’interprétation telles qu’une voix calme, une réponse hésitante ou un rythme plus rapide et rendez l’alternance des tours explicite. Pour deux locuteurs, décrivez qui parle en premier et quelle réaction est montrée par la caméra. Un court échange adapté à l’extrait choisi donne au modèle une cible d’interprétation plus claire qu’un long passage aux locuteurs indéfinis.
La voix off peut être dirigée par le timbre, l’émotion, l’intonation et le débit vocal. Elle sert lorsque la voix doit expliquer un produit pendant que la caméra reste sur ce produit ou lorsqu’un narrateur installe l’ambiance sans locuteur à l’écran. Le guide décrit le maintien d’un timbre reconnaissable lors des changements d’interprétation ; vérifiez ensemble la formulation réelle, la prononciation, l’interprétation et l’image.
Effets sonores et musique de fond
Décrivez les effets comme des événements liés à l’action : des pas lorsqu’un personnage entre, une pluie s’intensifiant derrière une fenêtre ou le mouvement d’un tissu lorsqu’un manteau est enfilé. La musique de fond est générée selon le prompt par défaut. Précisez son ambiance, son style et son rythme lorsqu’ils importent et indiquez quand elle doit commencer ou diminuer par rapport à la scène.
Pour une démonstration calme, demandez une musique retenue et mettez l’accent sur les sons de manipulation du produit. Pour une scène animée, décrivez le moment d’action qui doit coïncider avec le rythme musical. La bande-son générée est mono. La commande audio documentée autorise aussi une vidéo silencieuse lorsque le projet nécessite une bande-son préparée séparément.
Transitions de plans et direction de caméra
Le modèle prend en charge des changements de plans avec un traitement visuel cohérent, des contrechamps pour la conversation et des instructions sur le moment des transitions. Une séquence de dialogue utile peut établir deux locuteurs dans un plan moyen, couper vers celui qui répond, puis revenir à la réaction du premier. Indiquez l’identité de chaque personne lors d’un changement de plan.
Le guide couvre les angles en plongée, en contre-plongée et à hauteur des yeux ; les points de vue par-dessus l’épaule et subjectifs ; les cadrages larges, moyens et rapprochés. Décrivez un mouvement de caméra par sa composition initiale, sa direction, son amplitude et sa composition finale. Par exemple, un lent travelling avant peut finir sur l’expression du locuteur lorsque sa phrase s’achève. Reliez le mouvement au récit, plutôt que d’énumérer plusieurs techniques de caméra sans objectif.
Modes, sortie et aperçu
Les modes d’entrée documentés sont le texte-vidéo, l’image-vidéo à première image et l’image-vidéo à première et dernière images. Une première image préparée établit la composition initiale ; une image finale peut définir la limite visée. Les spécifications de sortie répertorient MP4 à 24 fps, 480p, 720p ou 1080p et des réglages de durée de 4 à 12 secondes. Le modèle peut aussi choisir une longueur en secondes entières dans sa plage prise en charge. Les rapports documentés sont 21:9, 16:9, 4:3, 1:1, 3:4 et 9:16, avec prise en charge du cadrage adaptatif.
Le fabricant documente un processus Draft en deux étapes : un aperçu en 480p pour examiner la structure de scène, les choix de plans, le mouvement et l’intention du prompt, puis une génération finale réutilisant les entrées créatives. Cela permet de juger une interprétation prévue avant de choisir sa résolution finale. L’aperçu lui-même est limité à 480p et ne prend pas en charge le renvoi de la dernière image. L’identifiant de tâche Draft du producteur reste valide sept jours après sa création ; générez la vidéo finale à partir de cet identifiant dans cette fenêtre.
Pour un travail guidé par l’image, préparez la source selon le cadrage visé : changer le rapport de sortie peut recadrer l’image. Une seed répétée produit des images similaires, plutôt que garanties identiques, et une instruction de caméra fixe ne garantit pas un verrouillage parfait. Surtout, jugez un extrait de dialogue comme une seule interprétation audiovisuelle : le bon locuteur, la phrase audible, la réaction faciale et l’accentuation de caméra doivent tous soutenir le même événement.
Ailoot Ultra · Vidéo POST /v1/videos bytedance/seedance-1-5-pro
bytedance/seedance-1-5-proPremiers pas
ByteDance Seedance 1.5 Pro génère de la vidéo avec du dialogue synchronisé, des effets sonores et de la musique. Dirigez les locuteurs, les émotions, la caméra et l’atmosphère sonore pour développer de courtes scènes dramatiques, des publicités parlées et des scènes de personnages.
- Entrées acceptées
- Texte · Images
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Vidéo POST /v1/videos
- Entrée
text,image- Sortie
video- Format de sortie
- Octets MP4 d’origine ; sans normalisation ni transcodage
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites bytedance/seedance-1-5-pro | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites | Par défaut— |
Champduration | Typeinteger | ExigenceObligatoire | Valeurs et limites 4, 5, 6, 7, 8, 9, 10, 11, 12 Minimum: 1 Maximum: 600 | Par défaut— |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 480p, 720p, 1080p | Par défaut— |
Champaspect_ratio | Typestring | ExigenceFacultatif | Valeurs et limites 1:1, 3:4, 9:16, 9:21, 4:3, 16:9, 21:9 | Par défaut— |
Champgenerate_audio | Typeboolean | ExigenceFacultatif | Valeurs et limites false, true Conditions: L’omission de cette option sélectionne le tarif avec audio. Définissez-la sur false pour sélectionner le tarif sans audio. Vérifiez has_audio dans le résultat pour savoir si une piste audio a été renvoyée. | Par défaut— |
Champframe_images | Typearray | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 1 Nombre maximal d’éléments: 2 Contenu en entrée: Tableau d’objets d’image. Chaque objet contient type=image_url, image_url contenant url et frame_type. Utilisez une URL d’image HTTPS et définissez frame_type sur first_frame ou last_frame. Chaque rôle d’image apparaît au maximum une fois. Clés exactes: type, image_url, frame_type Conditions: Ces clés décrivent chaque objet d’image ; image_url contient uniquement url. Omettez frame_images pour une requête contenant uniquement du texte. | Par défaut— |
Champinput_references | Typearray | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Champsize | Typestring | ExigenceFacultatif | Valeurs et limites 480x480, 480x640, 480x854, 480x1120, 640x480, 720x720, 720x960, 720x1280, 720x1680, 854x480, 960x720, 1080x1080, 1080x1440, 1080x1920, 1080x2520, 1120x480, 1280x720, 1440x1080, 1680x720, 1920x1080, 2520x1080 Motif: ^[1-9][0-9]*x[1-9][0-9]*$ | Par défaut— |
Champseed | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: -9'223'372'036'854'775'808 Maximum: 9'223'372'036'854'775'807 | Par défaut— |
Champcallback_url | Typestring | ExigenceFacultatif | Valeurs et limites Motif: ^https:// | Par défaut— |
Champsession_id | Typestring | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Champtrace | Typeobject | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Champuser | Typestring | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Combinaisons d’éléments d’entrée
Texte vers vidéo · Une consigne écrite. · Obligatoire : model, prompt, duration
Fournissez la consigne sous forme de texte et la durée en secondes entières. Choisissez une résolution et un rapport largeur/hauteur pris en charge, ou une taille exacte répertoriée.
model: Type : string · bytedance/seedance-1-5-pro
prompt: Type : string · Nombre maximal d’octets UTF-8: 10'000 · Caractères autres que des espaces requis: Oui
Image vers vidéo · Une consigne écrite et une image de départ. · Obligatoire : model, prompt, duration, frame_images
frame_images est un tableau. Chaque objet d’image comprend type, image_url et frame_type ; image_url contient url. Définissez type sur image_url. Utilisez first_frame et, éventuellement, last_frame. Chaque rôle d’image apparaît au maximum une fois. Fournissez une URL d’image HTTPS publique pour chaque image. Choisissez une résolution et un rapport largeur/hauteur pris en charge, ou une taille exacte répertoriée.
Clés exactes : type, image_url, frame_type
model: Type : string · bytedance/seedance-1-5-pro
prompt: Type : string · Nombre maximal d’octets UTF-8: 10'000 · Caractères autres que des espaces requis: Oui
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt, duration |
Paramètrematerial_types | Contrattext, image |
Paramètreadditional_properties | Contratfalse |
Paramètreoptional_controls | Contratresolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user |
Cycle de vie : submit_once_poll_original
GET /v1/videos/{public_id}
GET /v1/videos/{public_id}/content
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 | Conditions de facturation | Coût |
|---|---|---|---|---|---|
| ConfigurationTarifs de base des jetons | Barème tarifaireTarif de base | Quantité prévisionnelle— | Unité de facturation— | Conditions 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 |
| ConfigurationTarif des jetons vidéo | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar 1K tokens vidéo | Conditions de facturationCette clé de tarification ne déclare aucune condition supplémentaire. | Coût Sortie · Tarif des jetons vidéo · Estimation à des fins de comparaison uniquement $0.0048 par 1K tokens vidéo Le tarif des jetons vidéo constitue la référence de prix principale. Les estimations par seconde mises en avant servent de références distinctes et ne constituent pas des frais supplémentaires. |
| ConfigurationTarif des jetons vidéo | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar 1K tokens vidéo | Conditions de facturationson : without_audio | Coût Sortie · Tarif des jetons vidéo · Estimation à des fins de comparaison uniquement $0.0024 par 1K tokens vidéo Le tarif des jetons vidéo constitue la référence de prix principale. Les estimations par seconde mises en avant servent de références distinctes et ne constituent pas des frais supplémentaires. |
| ConfigurationCoût estimé de la génération | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Unité de facturation— | Conditions de facturation— | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.05184 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 →
Détails du tarif de référence
Les barèmes de référence du modèle ne modifient ni la sélection de méthode, ni les devis, ni les coûts. Les frais actifs utilisent les tarifs de la méthode Ailoot sélectionnée.
Références tarifaires des configurations vidéo
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Conditions de facturation | Coût |
|---|---|---|
| ConfigurationTarif des jetons vidéo | Conditions de facturationCette clé de tarification ne déclare aucune condition supplémentaire. | Coût Sortie · Tarif des jetons vidéo $0.0048 par 1K tokens vidéo Le tarif des jetons vidéo constitue la référence de prix principale. Les estimations par seconde mises en avant servent de références distinctes et ne constituent pas des frais supplémentaires. |
| ConfigurationTarif des jetons vidéo | Conditions de facturationson : without_audio | Coût Sortie · Tarif des jetons vidéo $0.0024 par 1K tokens vidéo Le tarif des jetons vidéo constitue la référence de prix principale. Les estimations par seconde mises en avant servent de références distinctes et ne constituent pas des frais supplémentaires. |
Exemples de requêtes
Ailoot Ultra · Vidéo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
from pathlib import Path
Path('request.json').write_text('{"aspect_ratio":"16:9","duration":8,"model":"bytedance/seedance-1-5-pro","prompt":"A serene mountain landscape at sunset","resolution":"720p"}', encoding='utf-8')
PY_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
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('result.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot Ultra · Vidéo
liens de contenu signés dont vous êtes propriétaire
GET /v1/videos/{public_id}GET /v1/videos/{public_id}/content
Vérifier l’état de la tâche
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
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 résultat réel dont vous êtes propriétaire et les métadonnées mesurées renvoyées avec celui-ci.
Si la réponse d’origine doit être vérifiée
503 result_pending_check + identifiant d’origine + X-Should-Retry:false ; ne répétez jamais l’envoi d’origine
Champs de la réponse
| Champ | Type | Signification |
|---|---|---|
Champindex | Typeinteger | SignificationPosition de cette vidéo dans la liste des résultats, avec une indexation à partir de zéro. |
Champcontent_url | Typestring | SignificationURL HTTPS signée de téléchargement de cette vidéo terminée. |
Champsha256 | Typestring | null | SignificationEmpreinte SHA-256 des octets vidéo d’origine ; null si elle est indisponible. |
Champsize_bytes | Typeinteger | null | SignificationTaille du fichier vidéo d’origine en octets ; null si elle est indisponible. |
Champduration_ms | Typeinteger | null | SignificationDurée mesurée de la vidéo en millisecondes ; null si elle est indisponible. |
Champwidth | Typeinteger | null | SignificationLargeur de la vidéo en pixels ; null si elle est indisponible. |
Champheight | Typeinteger | null | SignificationHauteur de la vidéo en pixels ; null si elle est indisponible. |
Champvideo_codec | Typestring | null | SignificationIdentifiant du codec vidéo ; null s’il n’a pas été enregistré. |
Champhas_audio | Typeboolean | null | SignificationIndique si la vidéo contient une piste audio ; null si cela n’a pas été mesuré. |
Champaudio_codec | Typestring | null | SignificationIdentifiant du codec audio ; null si aucun identifiant n’a été enregistré. |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse404 · not_found_error | ConditionL’accès à la vidéo est indisponible, ou cet identifiant vidéo est introuvable. | Étape suivanteVérifiez l’accès à la vidéo. Pour une vidéo existante, utilisez son identifiant public d’origine et la même clé API. |
Réponse401 · authentication_error | ConditionLa clé API ne correspond pas au compte authentifié. | Étape suivanteVérifiez votre clé API et l’accès au compte avant l’envoi. |
Réponse400 · invalid_request_error | ConditionLa requête n’a pas pu être lue, ou l’indice de téléchargement est invalide. | Étape suivanteCorrigez le corps de la requête. Pour un téléchargement, choisissez un indice de sortie renvoyé par la tâche d’origine. |
Réponse422 · price_unavailable | ConditionLa configuration vidéo sélectionnée ne peut pas être tarifée. | Étape suivanteChoisissez une configuration vidéo prise en charge et renseignez toutes ses options obligatoires avant d’envoyer une demande corrigée. |
Réponse422 · invalid_request_error | ConditionUne entrée vidéo ou une tâche d’origine à prolonger est invalide. | Étape suivanteUtilisez des entrées HTTPS valides. Pour une prolongation, utilisez l’identifiant vidéo public de votre vidéo d’origine terminée avec la même clé API. |
Réponse402 · billing_error | ConditionLe solde disponible ou les limites ne permettent pas de réserver le montant. | Étape suivanteVérifiez votre solde disponible et vos limites avant d’envoyer une nouvelle demande. |
Réponse503 · server_error | ConditionLa vérification vidéo, le stockage ou l’accès au service est temporairement indisponible. | Étape suivanteAttendez que le service soit disponible. Si vous avez déjà un identifiant vidéo, vérifiez cette tâche d’origine au lieu de lancer une nouvelle génération. |
Réponse503 · result_pending_check | ConditionLe résultat vidéo d’origine et sa facturation doivent être vérifiés. | Étape suivanteConservez l’identifiant vidéo renvoyé et vérifiez cette tâche. N’envoyez pas de demande de génération de remplacement pendant sa vérification. |
Réponse503 · owned_result_unavailable | ConditionLe téléchargement de la vidéo existante est temporairement indisponible. | Étape suivanteVérifiez ultérieurement cette même tâche vidéo et téléchargez son résultat existant. Une nouvelle génération crée une opération distincte. |
Réponse409 · video_not_ready | ConditionLe contenu vidéo n’a pas été publié. | Étape suivanteVérifiez l’état de la tâche d’origine. Téléchargez le résultat lorsqu’elle indique completed ; si elle indique failed, suivez son avis de vérification de facturation. |
Alias
Alias du modèle
Ailoot Ultra bytedance/seedance-1-5-pro
Alias des chemins de méthode
Utilisez les chemins de méthode indiqués ci-dessus.
ID d’appel associés
FAQ · ByteDance: Seedance 1.5 Pro
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·bytedance/seedance-1-5-pro:text,image→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·bytedance/seedance-1-5-pro:model,prompt,duration,resolution,aspect_ratio,generate_audio,frame_images,input_references,size,seed,callback_url,session_id,trace,user- Quelles limites s’appliquent ?
POST /v1/videos·bytedance/seedance-1-5-pro:duration.minimum:1;duration.maximum:600;frame_images.max_items:2;frame_images.min_items:1;seed.minimum:-9223372036854775808;seed.maximum:9223372036854775807