GPT-6 Astra is now live on CometAPI →
technology/Investigación de CometAPI

Cómo utilizar la API de Seedance 2.0

Seedance 2.0 API es el último modelo multimodal de generación de video con IA de ByteDance (lanzado el 9 de abril de 2026). Admite texto, imágenes, clips de video y audio en una sola solicitud para producir videos MP4 cinematográficos de 4–15 segundos con sincronización de audio nativa, control de cámara a nivel de director y una consistencia del movimiento excepcional. Para usarlo: regístrese en CometAPI.com, obtenga una clave de API, envíe una tarea asíncrona mediante REST, consulte periódicamente hasta que se complete y descargue el video desde la URL.

CometAPI
AnnaEquipo de investigación de modelos de IA y API
Actualizado Sep 3, 2026 11 min de lectura
Cómo utilizar la API de Seedance 2.0
Usa este patrón

Haz la primera llamada a la API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

Seedance 2.0, el modelo insignia multimodal de generación de video de ByteDance, se lanzó oficialmente el 9 de abril de 2026 y ya está disponible en las principales plataformas, incluida fal.ai. Esta potente herramienta de IA transforma referencias de texto, imágenes, audio y video en videos cinematográficos de 4–15 segundos con sincronización de audio nativa, control de cámara a nivel de director y física del mundo real, todo en una sola pasada de generación. Tanto si eres un desarrollador que construye flujos de trabajo de video automatizados, un especialista de marketing que crea contenido viral o un cineasta que prototipa escenas, la API de Seedance 2.0 ofrece resultados de calidad de producción más rápido que nunca.

¿Qué es Seedance 2.0? Características y capacidades clave

Seedance 2.0 es el modelo de próxima generación de ByteDance para la generación conjunta unificada multimodal de audio y video. A diferencia de versiones anteriores o competidores limitados a entradas de texto o de una sola imagen, admite de forma nativa hasta 9 imágenes + 3 clips de video + 3 clips de audio (12 recursos en total) en una sola solicitud.

Las capacidades principales incluyen:

  • Co-generación nativa de audio y video: música, diálogos, efectos de sonido y sincronización labial se crean junto con el video, sin necesidad de posproducción.
  • Control a nivel de director: movimientos de cámara precisos (dolly zoom, travellings, cambios de POV, cámara en mano), iluminación, sombras y física.
  • Narrativa multi-plano: cortes y transiciones naturales dentro de clips de 4–15 segundos.
  • Especificaciones de salida: MP4 a 480p/720p, relaciones de aspecto (16:9, 9:16, 1:1, etc.), resoluciones de hasta 2K en algunos niveles.

Tres modos principales:

  • text_to_video: Basado puramente en prompt.
  • first_last_frames: 1–2 imágenes como fotogramas inicial/final.
  • omni_reference: Multimodal completo con sintaxis @reference para control preciso.

Los benchmarks en SeedVideoBench-2.0 muestran a Seedance 2.0 liderando en estabilidad de movimiento, adherencia al prompt y consistencia de personajes en comparación con sus predecesores. Se posiciona como una fuerte alternativa a Sora para salidas cinematográficas e inmersivas. A 15 de abril de 2026, los desarrolladores reportan tiempos de generación inferiores a 2 minutos para clips de 10 segundos, con física del mundo real y calidad de audio superiores frente a versiones anteriores.

Primeros pasos: Accede a la API de Seedance 2.0 a través de CometAPI

Seedance 2.0 está disponible a través de múltiples proveedores, pero CometAPI.com destaca para desarrolladores. Como pasarela unificada a más de 500 modelos de IA (incluyendo generadores de video como Sora 2 y Gemini video), CometAPI ofrece:

  • Endpoints REST compatibles con OpenAI.
  • Una sola clave API para todos los modelos.
  • Precios competitivos con créditos iniciales gratuitos.
  • SDKs integrados, manejo de trabajos asíncronos y paneles de uso.
  • Sin dependencia del proveedor: cambia de modelo modificando el ID del modelo.

Autenticación de API y flujo central

La mayoría de los proveedores usan APIs REST basadas en trabajos asíncronos:

  • POST para crear la tarea → devuelve task_id.
  • GET /tasks/{task_id} para consultar el estado (queued → processing → completed).
  • Recuperar video_url al tener éxito.

Autenticación: token Bearer o encabezado X-API-Key.

Configuración paso a paso en CometAPI

1) Configuración en CometAPI

Visita CometAPI.com y regístrate (los nuevos usuarios reciben créditos gratuitos).

Ve a tu panel → API Tokens → Crea una nueva clave.

Copia tu clave sk- y configúrala como variable de entorno (COMETAPI_KEY).

Usa los endpoints unificados de estilo /v1/chat/completions o los endpoints dedicados de video para Seedance 2.0 (nombre del modelo: bytedance/seedance-2.0 o seedance-2-preview).

Este enfoque ahorra horas frente a gestionar claves separadas para fal.ai, PiAPI, etc. CometAPI también proporciona rutas de menor latencia y créditos agrupados ideales para escalar en producción.

2) Prepara un buen prompt

Seedance 2.0 responde mejor cuando el prompt actúa como un breve briefing de dirección. Indica cuál es el sujeto, qué debe hacer la cámara, qué estilo quieres, qué debe mantenerse consistente y qué no debe cambiar. Dado que el modelo admite múltiples referencias, también puedes adjuntar una referencia de fotograma, una referencia de movimiento y una referencia de audio en lugar de forzarlo todo en un único prompt de texto.

Una fórmula práctica para prompts es: sujeto + acción + movimiento de cámara + estilo visual + iluminación + notas de referencia + restricciones. Por ejemplo, en lugar de escribir “un anuncio de coche elegante”, escribe “un sedán eléctrico brillante estacionado en una azotea mojada por la noche, dolly-in lento, reflejos de neón, iluminación de comercial premium, sin vibración de cámara, mantén el coche centrado, 16:9”. Ese tipo de prompt encaja mucho mejor con el posicionamiento del modelo a nivel de director.

3) Envía una solicitud asíncrona de generación

Aquí tienes un ejemplo limpio en curl para una solicitud estilo Seedance 2.0:

import json
import os
import time

import requests

# Get your CometAPI key from https://www.cometapi.com/console/token, and paste it here
BASE_URL = "https://api.cometapi.com"
OUTPUT_DIR = "./output"
POLL_INTERVAL_SECONDS = 10
RETRY_DELAY_SECONDS = 5
MAX_CREATE_ATTEMPTS = 5
MAX_QUERY_ATTEMPTS = 3
TERMINAL_STATUSES = {"success", "completed", "failed", "error"}
SUCCESS_STATUSES = {"success", "completed"}


def is_progress_complete(progress):
    if isinstance(progress, int):
        return progress >= 100
    if isinstance(progress, float):
        return progress >= 100
    if isinstance(progress, str):
        try:
            return float(progress.rstrip("%")) >= 100
        except ValueError:
            return False
    return False


def is_transient_status(status_code):
    return status_code == 429 or 500 <= status_code < 600


def create_task(files):
    for attempt in range(1, MAX_CREATE_ATTEMPTS + 1):
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            files=files,
            timeout=30,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_CREATE_ATTEMPTS:
            response.raise_for_status()
        print(f"Create request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to create task.")


def get_task(task_id):
    for attempt in range(1, MAX_QUERY_ATTEMPTS + 1):
        response = requests.get(
            f"{BASE_URL}/v1/videos/{task_id}",
            headers=headers,
            timeout=15,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_QUERY_ATTEMPTS:
            response.raise_for_status()
        print(f"Status request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to query task.")

if COMETAPI_KEY == "<YOUR_COMETAPI_KEY>":
    print("Set COMETAPI_KEY before running this example.")
    raise SystemExit(0)

headers = {"Authorization": f"Bearer G00igxF5pXVB56lrtvvgn3hGXJA4bsobmX9YMpGukWAwJDiy"}

create_response = create_task(
    {
        "prompt": (None, "A slow cinematic camera push across a coastal landscape at sunrise."),
        "model": (None, "doubao-seedance-2-0"),
        "seconds": (None, "5"),
        "size": (None, "16:9"),
    }
)
create_response.raise_for_status()
create_result = create_response.json()

task_id = create_result.get("id") or create_result.get("task_id")
if not task_id:
    print(json.dumps(create_result, indent=2))
    raise SystemExit("No task id returned.")

print(f"Task created: {task_id}")
print(f"Initial status: {create_result.get('status')}")

while True:
    task_response = get_task(task_id)
    task_response.raise_for_status()
    task = task_response.json()
    status = str(task.get("status") or "unknown")
    normalized_status = status.lower()
    progress = task.get("progress")
    should_try_download = normalized_status in SUCCESS_STATUSES or (
        normalized_status == "unknown" and is_progress_complete(progress)
    )

    print(f"Status: {status}, progress: {progress}")

    if should_try_download or normalized_status in TERMINAL_STATUSES:
        if should_try_download:
            video_url = task.get("video_url") or ""
            content_url = f"{BASE_URL}/v1/videos/{task_id}/content"
            output_path = os.path.join(OUTPUT_DIR, f"{task_id}.mp4")

            os.makedirs(OUTPUT_DIR, exist_ok=True)
            with requests.get(
                content_url,
                headers=headers,
                timeout=120,
                stream=True,
            ) as video_response:
                video_response.raise_for_status()
                with open(output_path, "wb") as output_file:
                    for chunk in video_response.iter_content(chunk_size=8192):
                        if chunk:
                            output_file.write(chunk)

            print(f"Video URL: {video_url}")
            print(f"Content endpoint: {content_url}")
            print(f"Saved to {output_path}")
            print(f"File size: {os.path.getsize(output_path)} bytes")
        else:
            print(json.dumps(task, indent=2))
            raise SystemExit(1)
        break

    time.sleep(POLL_INTERVAL_SECONDS)

La guía propia de Seedance 2.0 de CometAPI usa el mismo patrón de endpoints y muestra controles de output como resolution: "1080p" y duration_s: 12 como parte de la forma de la solicitud.

4) Consulta hasta completarse y descarga el resultado

El flujo típico es: enviar el trabajo, almacenar el ID de la tarea, consultar el estado y luego recuperar la URL del video. El endpoint de tareas devuelve un ID de tarea y el estado se verifica con GET /volc/v3/contents/generations/tasks/{task_id} hasta que el trabajo finaliza.

Modos de generación de Seedance 2.0 explicados

ModoIdeal paraEjemplo de entradaReferencias máximas
text_to_videoIdeación rápidaSolo prompt de texto0
first_last_framesStoryboard con fotogramas clave1–2 imágenes + prompt2
omni_referenceControl cinematográfico profesionalImágenes + video + audio + texto12

Paso a paso: Texto a video con ejemplo de código en Python

Aquí tienes un ejemplo en Python que puedes adaptar:

import osimport timeimport requestsAPI_KEY = os.environ["COMETAPI_API_KEY"]BASE_URL = "https://api.cometapi.com/volc/v3/contents/generations/tasks"headers = {    "Authorization": f"Bearer {API_KEY}",    "Content-Type": "application/json",}payload = {    "model": "doubao-seedance-2-pro",    "content": [        {            "type": "text",            "text": (                "A cinematic drone shot over a rain-soaked neon street at night, "                "slow push-in, realistic reflections, subtle crowd motion."            )        },        {            "type": "image",            "url": "https://example.com/reference-frame.jpg"        }    ],    "output": {        "resolution": "1080p",        "duration_s": 12    }}resp = requests.post(BASE_URL, json=payload, headers=headers, timeout=60)resp.raise_for_status()data = resp.json()task_id = data.get("id") or data.get("task_id")if not task_id:    raise RuntimeError(f"Unexpected response, no task ID found: {data}")status_url = f"{BASE_URL}/{task_id}"for _ in range(60):    status_resp = requests.get(status_url, headers=headers, timeout=30)    status_resp.raise_for_status()    status_data = status_resp.json()    status = status_data.get("status")    if status in {"succeeded", "failed"}:        break    time.sleep(5)print("Final status:", status)if status == "succeeded":    result = status_data.get("result", {})    print("Video URL:", result.get("download_url"))else:    print("Task details:", status_data)

Este patrón coincide con el flujo asíncrono documentado en las páginas de Seedance de CometAPI: envía el trabajo, consulta la tarea y luego lee el resultado cuando el trabajo se completa.

Imagen a video y primeros/últimos fotogramas

Agrega image_urls o reference_images al payload:

payload = {
    "model": MODEL,
    "prompt": "The character turns and smiles at camera, natural motion",
    "image_urls": ["https://example.com/start-frame.jpg"],  # first frame
    "task_type": "first_last_frames"  # or omni_reference
}

Ejemplo avanzado multimodal Omni-Reference

payload = {
    "model": MODEL,
    "prompt": "A professional chef cooks pasta while explaining steps. Use @image1 for chef face consistency, @video1 for kitchen layout, @audio1 for upbeat Italian music and voiceover.",
    # Upload references via provider dashboard or pre-signed URLs
    "references": {  # Platform-specific field
        "image1": "https://.../chef.jpg",
        "video1": "https://.../kitchen.mp4",
        "audio1": "https://.../music.wav"
    }
}

Mejores prácticas de ingeniería de prompts para Seedance 2.0

  • Sé específico: “Dolly zoom lento de plano general a primer plano, iluminación de hora dorada, física realista.”
  • Usa referencias: prefija siempre con @assetN.
  • Lenguaje de cámara: “Plano secuencia en mano, rack focus, órbita suave.”
  • Señales de audio: “Sincroniza cortes con el golpe del bajo, diálogo claro con sincronización labial.”
  • Control de duración: especifica “clip de 8 segundos, 5 planos.”

Consejo profesional: prueba prompts en el playground del proveedor primero (CometAPI ofrece pruebas con un clic).

Tabla comparativa: Seedance 2.0 vs principales competidores (2026)

CaracterísticaSeedance 2.0Kling 3.0Runway Gen-4Luma Ray 2 / Sora 2
Audio nativo⭐⭐⭐⭐⭐ (mejor)⭐⭐⭐⭐⭐⭐⭐⭐⭐
Referencias multimodalesHasta 12 archivosLimitadasSolo imágenesVariable
Duración máxima15 s10–15 s8–16 s8–20 s
Control de cámaraNivel directorSólidoExcelenteBueno
Consistencia de movimientoLíder en la industriaMuy buenaBuenaExcelente
Ideal paraNarrativa cinematográficaConsistencia de personajesPulido artísticoFotorrealismo

Seedance 2.0 destaca por su audio nativo y control multimodal.

Casos de uso reales

  • Marketing: demostraciones de producto con voz en off sincronizada.
  • Redes sociales: contenido corto viral con cortes guiados por música.
  • Previsualización de cine: de storyboard a video con personajes consistentes.
  • Educación: explicativos animados con narración sincronizada labialmente.

Los usuarios de CometAPI reportan un 40% de iteración más rápida al alternar entre Seedance 2.0 y modelos complementarios en una misma base de código.

Mejores prácticas, escalado y manejo de errores

  • Implementa backoff exponencial para la consulta.
  • Usa claves de idempotencia para reintentos.
  • Monitorea el uso desde el panel de CometAPI.
  • Eliminación de marca de agua disponible en algunos niveles.
  • Respeta la moderación de contenido (nada ilegal/engañoso).

Fragmento de manejo de errores en Python:

try:
    video_url = generate_seedance_video(...)
except requests.exceptions.HTTPError as e:
    if e.response.status_code == 429:
        print("Rate limit – retry after backoff")

Solución de problemas comunes

  • Tarea atascada en la cola: verifica el estado del proveedor; usa el nivel rápido.
  • Pobre consistencia: agrega más imágenes de referencia con sintaxis @.
  • Desincronización de audio: describe explícitamente el ritmo en el prompt.
  • Costo elevado: cambia a modelos de vista previa rápida para pruebas.

Conclusión y próximos pasos

La API de Seedance 2.0 representa un gran avance en generación de video controlable y con audio nativo. Con los ejemplos de código anteriores y la plataforma unificada de CometAPI.com, puedes comenzar a construir flujos de trabajo de video en producción hoy mismo, a menudo en menos de 30 minutos.

¿Listo para probarlo? Ve a CometAPI.com, consigue tus créditos gratuitos y genera tu primer video con Seedance 2.0 al instante. Tanto si eres un creador independiente, una agencia o un equipo empresarial, CometAPI ofrece el acceso de menor fricción y mayor valor a Seedance 2.0 y a más de 500 modelos.

Empieza a crear video cinematográfico con IA hoy: tu próxima campaña viral (o previsualización de un largometraje) está a un solo llamado a la API.

Seguir aprendiendo

Conecta este artículo con la siguiente decisión.

Ver todos los temas
Publicado el Apr 17, 2026
Última actualización Sep 3, 2026
729 visitas
Revisado para mayor claridad, atribución de fuentes y terminología API actual.

¿Listo para reducir los costos de desarrollo de IA en un 20%?

Comienza gratis en minutos. Créditos de prueba gratuitos incluidos. No se requiere tarjeta de crédito.

Leer Más