OrcaRouter habla con los modelos de vídeo Seedance en el mismo
endpoint enviar-y-consultar que Kling. Envías
model: byteplus/dreamina-seedance-2-0-260128, OrcaRouter enruta la
solicitud a la API upstream Ark
/contents/generations/tasks, y consultas el mismo ID de tarea de
vuelta a través de OrcaRouter una vez terminado (típicamente 30
segundos a 4 minutos dependiendo de duración / resolución /
generate_audio).
Modelo actualmente disponible. Solo Seedance 2.0 está
aprovisionado ahora mismo, bajo el nombre backend
byteplus/dreamina-seedance-2-0-260128. La tabla de capacidades
abajo lista el resto de la familia Seedance para referencia, pero
aún no son seleccionables en el playground ni enrutables a través de
OrcaRouter — usa byteplus/dreamina-seedance-2-0-260128 para cada
solicitud por ahora.
El endpoint de envío POST /v1/video/generations y el endpoint de
obtención GET /v1/video/generations/{task_id} se comparten con
Kling. Lo que cambia es el cuerpo de la
solicitud: Kling usa
prompt + image + metadata.{mode, aspect_ratio, image_list, ...},
Seedance usa prompt + metadata.{content[], ratio, duration, generate_audio, watermark, ...}. El prefijo en model selecciona
qué esquema se honra.
Modelos
| Modelo | T2V | I2V (primero) | I2V (primero+último) | Ref. multimodal¹ | Edición vídeo² | Generar audio³ | Duración | Disponible |
|---|
byteplus/dreamina-seedance-2-0-260128 (2.0) | ✓ | ✓ | ✓ | ✓ completo | ✓ | ✓ | 4 – 15 s | ✓ |
byteplus/seedance-2.0-fast | ✓ | ✓ | ✓ | ✓ completo | ✓ | ✓ | 4 – 15 s | planeado |
byteplus/seedance-1-5-pro | ✓ | ✓ | ✓ | solo imagen | | ✓ | 4 – 12 s | planeado |
byteplus/seedance-1-0-pro | ✓ | ✓ | ✓ | solo imagen | | | 2 – 12 s | planeado |
byteplus/seedance-1-0-pro-fast | ✓ | ✓ | | solo imagen | | | 2 – 12 s | planeado |
byteplus/seedance-1-0-lite-i2v | | ✓ | ✓ | solo imagen | | | 2 – 12 s | planeado |
byteplus/seedance-1-0-lite-t2v | ✓ | | | solo imagen | | | 2 – 12 s | planeado |
¹ Referencia multimodal = el array metadata.content[] puede llevar
elementos image_url / video_url / audio_url con marcadores
role (reference_image / reference_video / reference_audio).
“Completo” significa que se aceptan combinaciones de imagen + vídeo
² Edición de vídeo = pasa un elemento de contenido video_url para
aplicar ediciones impulsadas por prompt al vídeo fuente (intercambio
de sujeto, inpainting de región, etc.).
³ Audio nativo = el upstream auto-genera una banda sonora que
coincide con el vídeo. Activa vía metadata.generate_audio: true.
El endpoint de envío es el mismo para cada modelo —
POST /v1/video/generations. Lo que cambia es qué campos metadata
honra el upstream según la tabla anterior. Ver la
matriz de capacidades Seedance
upstream para la lista de características por modelo autorizada.
Enviar una tarea
Envía un POST a /v1/video/generations con model, prompt y
cualquier parámetro específico del upstream bajo metadata:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "A girl holding a fox, the girl opens her eyes, looks gently at the camera, the fox hugs affectionately, the camera slowly pulls out, the girl'\''s hair is blown by the wind",
"metadata": {
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/foxgirl.png" } }
],
"ratio": "16:9",
"duration": 5,
"generate_audio": true,
"watermark": false
}
}'
La respuesta lleva el ID de tarea (misma envoltura que Kling —
OrcaRouter normaliza entre proveedores):
{
"id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"object": "video",
"model": "byteplus/dreamina-seedance-2-0-260128",
"status": "queued",
"progress": 0,
"created_at": 1777975188
}
OrcaRouter envuelve tu prompt como el elemento de texto dentro del
array content[] de Seedance automáticamente — no necesitas pasar
un elemento {type: "text"} tú mismo. Cualquier elemento de texto
que proporciones en metadata.content[] se reemplaza por tu
prompt de nivel superior. Otros elementos de contenido
(image_url, video_url, audio_url) pasan sin cambios.
Campos del cuerpo
Estos campos van dentro de metadata. Disponlos según las tablas
de variantes abajo.
| Campo | Tipo | Notas |
|---|
content | array | Elementos de referencia multimodal. Cada elemento: {type, image_url? | video_url? | audio_url?, role?}. Omitir si texto-a-vídeo puro. |
ratio | string | Relación de aspecto. 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive. adaptive infiere de la entrada. |
duration | integer | Segundos. El rango permitido depende del modelo — ver tabla arriba. |
resolution | string | 480p / 720p / 1080p. Por defecto 720p. 1080p solo en seedance-2.0 / seedance-2.0-fast / seedance-1-5-pro / seedance-1-0-pro / seedance-1-0-pro-fast. |
generate_audio | boolean | Auto-generar una banda sonora sincronizada. Por defecto false. Solo en seedance-2.0 / 2.0-fast / 1-5-pro. |
watermark | boolean | Imprimir marca de agua upstream. Por defecto definido por upstream. |
seed | integer | Semilla aleatoria para reproducibilidad. |
service_tier | string | default (en línea) o flex (fuera de línea / prioridad más baja, mayor cuota). Por defecto default. |
return_last_frame | boolean | Devolver el fotograma final como imagen junto con el MP4. Por defecto false. |
callback_url | string | URL de webhook — recibe cambios de estado en lugar de (o junto con) la consulta. |
Forma del elemento content[]
Cada elemento en metadata.content es una de cuatro formas:
{ "type": "image_url", "image_url": { "url": "https://..." }, "role": "first_frame" }
{ "type": "video_url", "video_url": { "url": "https://..." }, "role": "reference_video" }
{ "type": "audio_url", "audio_url": { "url": "https://..." }, "role": "reference_audio" }
{ "type": "text", "text": "..." } // reemplazado automáticamente por el prompt de nivel superior
Valores role:
role | Propósito |
|---|
first_frame | Anclar esta imagen como el primer fotograma del vídeo generado. |
end_frame | Anclar esta imagen como el último fotograma (usar con first_frame para i2v primer+último fotograma). |
reference_image | Referencia de estilo / sujeto (variante de referencia multimodal; puede pasar múltiples). |
reference_video | Referencia de estilo / movimiento, o el vídeo fuente para edición / extensión. |
reference_audio | Música de fondo o referencia de voz (generación audio-vídeo). |
Referencia elementos dentro del prompt con la sintaxis [Image 1],
[Video 1], [Audio 1]. El índice coincide con el orden del array
(base 1, alcance por tipo).
Consultar resultados
Usa el ID de tarea devuelto al enviar:
curl https://api.orcarouter.ai/v1/video/generations/task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw \
-H "Authorization: Bearer sk-orca-..."
La forma de respuesta está envuelta (idéntica a Kling):
{
"code": "success",
"message": "",
"data": {
"task_id": "task_9q9oz6tjtgABYWC1QIqoz3sscgVz7ycw",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://ark-content-generation-ap-southeast-1.tos-ap-southeast-1.volces.com/.../video.mp4",
"submit_time": 1777975188,
"start_time": 1777975241,
"finish_time": 1777975277,
"fail_reason": ""
}
}
Los valores de estado se normalizan en mayúsculas entre proveedores:
| Estado | Estado upstream Seedance | Significado |
|---|
NOT_START | (transitorio) | Fila de tarea creada, aún no despachada |
SUBMITTED | queued | Enviado al upstream, esperando en la cola |
IN_PROGRESS | running | El upstream está renderizando |
SUCCESS | succeeded | Hecho. data.result_url lleva el MP4 |
FAILURE | failed | Fallido. data.fail_reason tiene la razón |
El progreso es una cadena de porcentaje ("50%", "100%"), no
un entero.
Consulta cada 5 - 10 segundos. Un clip 720p de 5 segundos típicamente
se completa en 30 - 60 segundos; 1080p con audio o clips de 15
segundos / referencia multimodal pueden tardar 3 - 5 minutos.
El result_url es una URL TOS firmada por el upstream con un TTL
corto — descarga o re-aloja rápidamente si necesitas retención larga.
Variantes de endpoint
Todas las variantes comparten POST /v1/video/generations. Qué
camino de característica Seedance sirve el upstream se determina por
los elementos metadata.content[] y los marcadores role — no por
la URL.
Texto-a-vídeo
Solo model + prompt + metadatos opcionales. Sin elementos de
contenido significa texto-a-vídeo puro:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "Photorealistic style: under a clear blue sky, a vast expanse of white daisy fields stretches out. The camera gradually zooms in on a single daisy with glistening dewdrops on its petals.",
"metadata": {
"ratio": "16:9",
"duration": 5,
"watermark": true
}
}'
Imagen-a-vídeo — primer fotograma
Pasa un elemento de imagen con role: "first_frame":
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "the cat starts dancing energetically",
"metadata": {
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/cat.png" }, "role": "first_frame" }
],
"ratio": "adaptive",
"duration": 5,
"generate_audio": true
}
}'
Imagen-a-vídeo — primer y último fotograma
Dos elementos de imagen, uno cada uno para first_frame y
end_frame:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "Create a 360-degree orbiting camera shot from start to end frame.",
"metadata": {
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/start.jpg" }, "role": "first_frame" },
{ "type": "image_url", "image_url": { "url": "https://example.com/end.jpg" }, "role": "end_frame" }
],
"ratio": "16:9",
"duration": 6
}
}'
Referencia multimodal — imagen + vídeo + audio
Combina elementos reference_image / reference_video /
reference_audio. Referénciallos en el prompt con índices
[Image N] / [Video N] / [Audio N] (base 1, por tipo):
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "Use the first-person POV framing from [Video 1] throughout, and use [Audio 1] as the background music. First-person POV fruit tea promotional ad: [Image 1] hands pick a dew-covered apple; [Image 2] holds the finished drink up to the camera.",
"metadata": {
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/tea_pic1.jpg" }, "role": "reference_image" },
{ "type": "image_url", "image_url": { "url": "https://example.com/tea_pic2.jpg" }, "role": "reference_image" },
{ "type": "video_url", "video_url": { "url": "https://example.com/tea_video1.mp4" }, "role": "reference_video" },
{ "type": "audio_url", "audio_url": { "url": "https://example.com/tea_audio1.mp3" }, "role": "reference_audio" }
],
"ratio": "16:9",
"duration": 11,
"generate_audio": true,
"watermark": false
}
}'
Disponible en seedance-2.0 y seedance-2.0-fast (combinaciones
completas imagen + vídeo + audio); seedance-1-5-pro y
seedance-1-0-* solo aceptan elementos reference_image.
Edición de vídeo / extensión
Pasa {type: "video_url", role: "reference_video"} y pide al prompt
que lo modifique o extienda:
curl https://api.orcarouter.ai/v1/video/generations \
-H "Authorization: Bearer sk-orca-..." \
-H "Content-Type: application/json" \
-d '{
"model": "byteplus/dreamina-seedance-2-0-260128",
"prompt": "Change all the fruits in [Video 1] into fresh fruits.",
"metadata": {
"content": [
{ "type": "video_url", "video_url": { "url": "https://example.com/source.mp4" }, "role": "reference_video" }
],
"ratio": "adaptive",
"duration": 6
}
}'
Disponible solo en seedance-2.0 y seedance-2.0-fast.
Webhooks
Pasa metadata.callback_url: "https://your.domain/webhook" para
recibir un POST cuando la tarea transicione a SUCCESS o FAILURE.
La carga útil refleja la respuesta de consulta. Si configuras tanto
consulta como un callback, obtendrás ambos — son independientes.
Facturación
OrcaRouter pasa el cargo upstream por tarea y token sin recargo. El
coste final coincide con la tarjeta de tarifas publicada de
ByteDance Ark (los completion_tokens / total_tokens upstream del
resultado de la tarea se convierten en cuota a la tasa por token del
modelo configurada en tu configuración Channel Margin).
Una pequeña reserva de pre-consumo se reserva al enviar; la
diferencia se liquida al éxito. Ver
Operaciones / Facturación y uso.
Véase también