Seedance 2.5
Video Generationup to -20%bytedance/seedance-2.5Seedance 2.5 est le modèle multimodal de création vidéo de nouvelle génération de la gamme Doubao de ByteDance, sorti le 2026-08-07. Il accepte des entrées mixtes de texte, d'images, de vidéos et d'audio — jusqu'à 30 images, 10 vidéos et 10 clips audio, soit 50 éléments de référence au total — et couvre la génération vidéo à partir de texte, d'image et de vidéo. Chaque clip peut durer un nombre entier de secondes compris entre 4 et 30, en résolution 480p, 720p ou 1080p (720p par défaut), avec six formats d'image et une option adaptative. La sortie comporte par défaut un audio synchronisé et les prompts peuvent être rédigés dans plusieurs langues. Cette génération améliore le suivi des instructions, la narration multi-plans et la cohérence temporelle sur la durée. Accessible via le protocole compatible OpenAI.
Tarifs
up to -20%À partir de $0.11/s| Résolution | Mode | Audio | Prix / seconde |
|---|---|---|---|
| 480p | Texte vers vidéo | Tous | $0.11/s |
| 480p | Vidéo vers vidéo | Tous | $0.14/s |
| 720p | Texte vers vidéo | Tous | $0.24/s |
| 720p | Vidéo vers vidéo | Tous | $0.3/s |
| 1080p | Texte vers vidéo | Tous | $0.48/s$0.6/s |
| 1080p | Vidéo vers vidéo | Tous | $0.568/s$0.71/s |
| Toutes les autres combinaisons | $0.568/s$0.71/s | ||
Facturation à la seconde de vidéo générée. Les combinaisons de paramètres prises en charge et les prix sont déterminés par l'API en temps réel et peuvent varier selon la version du modèle.
Providers
/v1/videos/v1/videosExemples de code
import timeimport requestsBASE = "https://api.ofox.ai/v1/videos"HEADERS = {"Authorization": "Bearer YOUR_OFOX_API_KEY"}# Create the generation tasktask = requests.post(BASE, headers=HEADERS, json={"model": "bytedance/seedance-2.5","prompt": "A golden retriever running on the beach at sunset","duration": 4,"resolution": "720p","generate_audio": True,"provider": {"type": "byteplus"},# Or: "provider": {"type": "volcengine"}}).json()# Poll until the task reaches a terminal statewhile True:task = requests.get(f"{BASE}/{task['id']}", headers=HEADERS).json()if task["status"] in ("completed", "failed", "cancelled", "expired"):breaktime.sleep(10)# Prefer mirror_urls (persistent) then fall back to unsigned_urls (24h)print((task.get("mirror_urls") or task.get("unsigned_urls") or [None])[0])