Seedance 2.5
Video Generationup to -20%bytedance/seedance-2.5Seedance 2.5 es el modelo multimodal de creación de video de nueva generación de la línea Doubao de ByteDance, lanzado el 2026-08-07. Admite entrada mixta de texto, imágenes, video y audio —hasta 30 imágenes, 10 videos y 10 clips de audio, con un total de 50 materiales de referencia— y cubre la generación de video a partir de texto, de imagen y de video. Cada clip puede durar cualquier número entero de segundos entre 4 y 30, con resolución de 480p, 720p o 1080p (720p de forma predeterminada), seis relaciones de aspecto y una opción adaptativa. La salida incluye audio sincronizado de forma predeterminada y los prompts pueden escribirse en varios idiomas. Esta generación mejora el seguimiento de instrucciones, la narrativa de varios planos y la coherencia temporal en secuencias largas. Accesible mediante el protocolo compatible con OpenAI.
Precios
up to -20%Desde $0.11/s| Resolución | Modo | Audio | Precio / segundo |
|---|---|---|---|
| 480p | Texto a video | Cualquiera | $0.11/s |
| 480p | Video a video | Cualquiera | $0.14/s |
| 720p | Texto a video | Cualquiera | $0.24/s |
| 720p | Video a video | Cualquiera | $0.3/s |
| 1080p | Texto a video | Cualquiera | $0.48/s$0.6/s |
| 1080p | Video a video | Cualquiera | $0.568/s$0.71/s |
| Todas las demás combinaciones | $0.568/s$0.71/s | ||
Se cobra por segundo de video generado. Las combinaciones de parámetros admitidas y los precios los determina la API en tiempo real y pueden variar según la versión del modelo.
Providers
/v1/videos/v1/videosEjemplos de Código
import timeimport requestsBASE = "https://api.ofox.io/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])