Descripción General
Utiliza tu clave API para generar vídeos a través de la API de Seedance. La API admite tanto la generación de texto a vídeo como de imagen a vídeo. La generación de vídeo es asíncrona: envías una tarea y luego consultas los resultados.
Endpoints
Generar Vídeo
- Método:
POST - URL:
https://api.seedanceapi.dev/v1/video/generate
Consultar Tarea
- Método:
POST - URL:
https://api.seedanceapi.dev/v1/video/query
Autenticación
Incluye tu clave API en el encabezado Authorization:
Authorization: Bearer TU_CLAVE_API
Content-Type: application/jsonSolicitud de Generación de Vídeo
{
"prompt": "Un gato con gafas de sol caminando por una playa con palmeras de fondo",
"model": "seedance-pro-5s",
"image": "https://example.com/reference-image.jpg"
}Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
prompt | string | Sí* | Descripción textual del vídeo |
model | string | No | Modelo a utilizar (por defecto: seedance-pro-5s) |
image | string | No* | URL de imagen de referencia para imagen a vídeo |
*Se requiere prompt o image.
Modelos Disponibles
| Modelo | Resolución | Duración | Créditos |
|---|---|---|---|
seedance-lite-5s | 720p | 5s | 12 |
seedance-lite-10s | 720p | 10s | 24 |
seedance-pro-5s | 1080p | 5s | 35 |
seedance-pro-10s | 1080p | 10s | 70 |
seedance-1.5-pro-5s | 1080p + Audio | 5s | 50 |
seedance-1.5-pro-10s | 1080p + Audio | 10s | 100 |
Respuesta de Generación
{
"code": 0,
"message": "ok",
"data": {
"task_id": "abc123-def456-789",
"status": "pending",
"model": "seedance-pro-5s",
"scene": "text-to-video"
}
}Solicitud de Consulta de Tarea
{
"task_id": "abc123-def456-789"
}Respuesta de Consulta
{
"code": 0,
"message": "ok",
"data": {
"task_id": "abc123-def456-789",
"status": "success",
"model": "seedance-pro-5s",
"scene": "text-to-video",
"videos": [
{
"url": "https://cdn.seedanceapi.dev/videos/abc123.mp4"
}
],
"error": null
}
}Valores de Estado de la Tarea
| Estado | Descripción |
|---|---|
pending | Tarea en cola |
processing | Vídeo en generación |
success | Generación completada |
failed | Generación fallida |
Ejemplos
cURL - Generar Vídeo
curl -X POST "https://api.seedanceapi.dev/v1/video/generate" \
-H "Authorization: Bearer TU_CLAVE_API" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Un gato con gafas de sol caminando por una playa",
"model": "seedance-pro-5s"
}'cURL - Consultar Tarea
curl -X POST "https://api.seedanceapi.dev/v1/video/query" \
-H "Authorization: Bearer TU_CLAVE_API" \
-H "Content-Type: application/json" \
-d '{
"task_id": "abc123-def456-789"
}'Node.js
async function generateVideo() {
// Paso 1: Enviar tarea de generación de vídeo
const genRes = await fetch('https://api.seedanceapi.dev/v1/video/generate', {
method: 'POST',
headers: {
Authorization: 'Bearer TU_CLAVE_API',
'Content-Type': 'application/json',
},
body: JSON.stringify({
prompt: 'Un gato con gafas de sol caminando por una playa',
model: 'seedance-pro-5s',
}),
});
const genResult = await genRes.json();
if (genResult.code !== 0) throw new Error(genResult.message);
const taskId = genResult.data.task_id;
console.log('Tarea enviada:', taskId);
// Paso 2: Consultar resultados periódicamente
while (true) {
await new Promise((r) => setTimeout(r, 15000)); // Esperar 15 segundos
const queryRes = await fetch('https://api.seedanceapi.dev/v1/video/query', {
method: 'POST',
headers: {
Authorization: 'Bearer TU_CLAVE_API',
'Content-Type': 'application/json',
},
body: JSON.stringify({ task_id: taskId }),
});
const queryResult = await queryRes.json();
if (queryResult.code !== 0) throw new Error(queryResult.message);
const { status, videos, error } = queryResult.data;
if (status === 'success') {
console.log('Vídeo listo:', videos[0].url);
return videos[0].url;
}
if (status === 'failed') {
throw new Error(error || 'La generación del vídeo ha fallado');
}
console.log('Estado:', status);
}
}Python
import requests
import time
def generate_video():
headers = {
'Authorization': 'Bearer TU_CLAVE_API',
'Content-Type': 'application/json',
}
# Paso 1: Enviar tarea de generación de vídeo
gen_res = requests.post(
'https://api.seedanceapi.dev/v1/video/generate',
headers=headers,
json={
'prompt': 'Un gato con gafas de sol caminando por una playa',
'model': 'seedance-pro-5s',
},
timeout=60
)
gen_result = gen_res.json()
if gen_result.get('code') != 0:
raise Exception(gen_result.get('message'))
task_id = gen_result['data']['task_id']
print(f'Tarea enviada: {task_id}')
# Paso 2: Consultar resultados periódicamente
while True:
time.sleep(15) # Esperar 15 segundos
query_res = requests.post(
'https://api.seedanceapi.dev/v1/video/query',
headers=headers,
json={'task_id': task_id},
timeout=60
)
query_result = query_res.json()
if query_result.get('code') != 0:
raise Exception(query_result.get('message'))
data = query_result['data']
status = data['status']
if status == 'success':
video_url = data['videos'][0]['url']
print(f'Vídeo listo: {video_url}')
return video_url
if status == 'failed':
raise Exception(data.get('error') or 'La generación del vídeo ha fallado')
print(f'Estado: {status}')
if __name__ == '__main__':
generate_video()Respuestas de Error
{
"code": 400,
"message": "Insufficient credits"
}Códigos de error comunes:
400: Parámetros de solicitud inválidos o créditos insuficientes401: Clave API inválida403: Sin permiso para acceder a la tarea404: Tarea no encontrada500: Error del servidor