Saltar al contenido principal
Usa POST /v1/videos para crear una tarea asíncrona de generación de vídeo con Seedance. Consulta el estado de la tarea hasta que se complete y luego descarga el vídeo desde la URL de Flatkey devuelta. Los modelos compatibles son seedance-2.0, seedance-2.0-fast, seedance-2.0-mini y seedance-2.5. La disponibilidad depende de tu cuenta; usa GET /v1/models para obtener la lista de modelos actual.

Endpoint

Flatkey también acepta POST /v1/video/generations y GET /v1/video/generations/{task_id}. Usa /v1/videos para obtener la estructura de respuesta estándar y los datos nativos de usage.

Solicitud

Cabeceras

Parámetros del cuerpo

string
requerido
ID del modelo Seedance: "seedance-2.0", "seedance-2.0-fast", "seedance-2.0-mini" o "seedance-2.5".
array
requerido
Elementos de entrada multimodal. Incluye al menos un elemento no vacío de texto, imagen, vídeo o audio. Consulta Elementos de content.
string
Resolución de salida. Valor por defecto: "720p".
string
Relación de aspecto de salida: "16:9", "4:3", "1:1", "3:4", "9:16", "21:9" o "adaptive". Valor por defecto: "adaptive". Con "adaptive", el modelo elige la relación de aspecto a partir de tus imágenes o vídeos de entrada. En seedance-2.5, las tareas de primer fotograma y de primer y último fotograma solo admiten "adaptive".
integer
Duración del vídeo en segundos. Valor por defecto: 5. Los modelos Seedance 2.0 admiten de 4 a 15; seedance-2.5 admite de 4 a 30.
Envía siempre un valor positivo en duration. Flatkey factura Seedance por segundo, por lo que -1 (dejar que el modelo elija la duración) se rechaza con video_price_not_configured. La única excepción es una edición de vídeo con seedance-2.5, que requiere -1.
boolean
Añade una marca de agua “AI generated” en la esquina inferior derecha. Valor por defecto: false.
boolean
Genera una pista de audio mono sincronizada. Valor por defecto: true. Establécelo en false si solo necesitas el vídeo; el audio generado puede no superar ocasionalmente las comprobaciones de derechos de autor.
boolean
Devuelve el último fotograma del vídeo generado como imagen. Valor por defecto: false. Si es true, la tarea completada incluye metadata.last_frame_url, que descarga un JPEG con las mismas dimensiones que el vídeo y sin marca de agua. Úsalo como first_frame de la siguiente tarea para encadenar clips. Al igual que metadata.url, no requiere cabecera de autorización; trátalo como privado.
string
Solo seedance-2.5. Contenedor del vídeo generado: "mp4" o "mov". Valor por defecto: "mp4". MOV conserva más precisión de color para etalonaje y composición (H.264, YUV 4:4:4, audio PCM), pero algunos reproductores no pueden abrirlo. El endpoint de contenido devuelve video/quicktime para los resultados en MOV.
string
Solo seedance-2.5, para tareas en modo de referencia. Indica al modelo qué tarea quieres realizar: "auto" (valor por defecto), "reference", "edit" o "extend". Si lo estableces explícitamente, las comprobaciones del tipo de tarea se hacen en el envío, de modo que una combinación no válida falla de inmediato en lugar de después de que empiece la tarea. "reference", "edit" y "extend" necesitan elementos de referencia en content; una solicitud solo de texto con "reference" se rechaza. Consulta edición y extensión de vídeo.
integer
Prioridad en la cola, de 0 a 9. Valor por defecto: 0. Los valores más altos adelantan la tarea a las tareas de menor prioridad que esperan en el mismo modelo. Compatible con todos los modelos Seedance 2.0 y con seedance-2.5. Los valores fuera del rango de 0 a 9 se rechazan con 400.
integer
Segundos que la tarea puede esperar y ejecutarse antes de caducar. Valor por defecto: 172800 (48 horas). Usa un valor menor si un resultado tardío no te sirve.
string
URL HTTPS pública que recibe un POST cada vez que cambia el estado de la tarea. Consulta Callbacks de tareas. Debe usar https, no contener credenciales de usuario, tener como máximo 2.048 caracteres y resolverse a una dirección pública; de lo contrario, la solicitud se rechaza con 400.

Elementos de content

Cada URL puede ser una URL HTTPS pública, un data URI data:<mime>;base64, (solo imágenes y audio) o una referencia asset:// de la biblioteca de activos. El cuerpo completo de la solicitud debe ocupar menos de 64 MB. Elige un único modo de entrada por tarea. Estos modos no se pueden mezclar:

Edición de vídeo

seedance-2.5 puede editar o extender un vídeo existente en modo de referencia. Describe el cambio en el prompt y refiérete al vídeo como @Video1.
Al igual que cualquier solicitud de seedance-2.5 con un vídeo de referencia, una edición se factura con la tarifa con vídeo de la resolución correspondiente por 30 segundos fijos, independientemente de la duración de entrada o de salida.

Modo borrador

seedance-2.5 puede generar primero un borrador económico en 480p para que compruebes la escena, los planos y el movimiento antes de pagar por el vídeo final. Se necesitan dos solicitudes:
  1. Crea el borrador. Envía una solicitud normal con "draft": true y "resolution": "480p". Se factura como un vídeo estándar de 480p.
  2. Genera el vídeo final. Cuando el borrador se complete, envía una solicitud cuyo único elemento de content sea un draft_task que apunte al ID de la tarea del borrador, con "resolution": "1080p".
El vídeo final reutiliza el prompt, los archivos multimedia, la duración, la relación de aspecto, la semilla, el ajuste de audio y el tipo de tarea del borrador. No envíes duration, ratio, frames, seed, generate_audio, omni_reference_task_type, draft ni ningún otro elemento de content junto con un draft_task; la solicitud se rechaza con 400. Puedes seguir configurando return_last_frame, output_format, watermark, priority, execution_expires_after y callback_url.
Seedance no acepta directamente imágenes ni vídeos que muestren rostros humanos reales. Súbelos como activos de persona real y haz referencia a ellos con asset://.

Ejemplos de solicitudes

Entrada con primer y último fotograma

Referencia multimodal

Respuesta

Campos de la respuesta

string
ID público de la tarea, que se usa para consultar su estado y descargar el vídeo completado. task_id contiene el mismo valor.
string
Estado de la tarea: queued, in_progress, completed o failed.
integer
Progreso de la generación de 0 a 100.
integer
Marca de tiempo Unix de la creación de la tarea.

Consultar el estado de la tarea

Mientras la generación está en curso, la respuesta incluye el progreso actual:
Cuando la tarea se completa, la respuesta incluye la URL del vídeo y el uso de tokens:
Las tareas fallidas devuelven los detalles del error junto con la respuesta de la tarea:
Cualquier saldo consumido previamente se reembolsa de forma automática.

Valores de estado

Callbacks de tareas

Configura callback_url para recibir los cambios de estado en lugar de consultar la tarea, o además de hacerlo. Flatkey envía un POST con Content-Type: application/json cuando la tarea pasa a in_progress, completed o failed. El cuerpo es exactamente lo que devuelve GET /v1/videos/{task_id} en ese momento, incluidos metadata.url y metadata.last_frame_url para las tareas completadas.
Responde con cualquier estado 2xx en un plazo de 5 segundos. De lo contrario, Flatkey reintenta dos veces, a los 2 y a los 8 segundos, y después desiste. No se siguen las redirecciones. Los callbacks no están firmados, así que verifica el resultado consultando la tarea antes de actuar en consecuencia, y sigue usando la consulta como fuente de verdad por si se pierde algún callback.

Descargar el vídeo

El endpoint de contenido transmite datos video/mp4, o video/quicktime si la tarea usó output_format: "mov". No requiere token Bearer y puede usarse directamente como fuente de un elemento <video>.
El endpoint de contenido solo funciona una vez que la tarea se ha completado y tiene limitación de velocidad por IP de cliente. Trata la URL como información sensible, ya que cualquier persona que la tenga puede descargar el vídeo.

Errores

Los errores en el momento de la solicitud usan el sobre de error estándar de Flatkey:

Ejemplo de extremo a extremo

Este ejemplo crea una tarea, consulta su estado cada cinco segundos y descarga el vídeo completado. Requiere jq.