Saltar a la documentación
En esta página

Documentación

Desarrolla con la API de Seevio

Añade la generación de video a tu producto. Elige un modelo, envía una petición y obtén el resultado mediante consulta o webhook.

Elige un modelo

La referencia de cada modelo incluye sus parámetros completos, precios y ejemplos. Puedes completar la integración directamente desde la página del modelo.

Autenticación

Crea una clave de API en el panel de control. La clave completa se mostrará una sola vez. Almacénala de forma segura en tu servidor y envíala como Bearer token en cada petición.

URL base

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Define la variable de entorno SEEVIO_API_KEY antes de ejecutar estos ejemplos. Los ejemplos en JavaScript se ejecutan en tu servidor con Node.js; los de Python usan el paquete requests.

Inicio rápido

Este ejemplo genera un video de 5 segundos a 720p con Seedance 2.5. Abre la referencia del modelo para ver todos los modos de generación y límites de parámetros.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Ejemplo de respuesta de creación de tarea

Una vez aceptada la solicitud anterior, la API devuelve esta respuesta JSON. El parámetro taskId es el identificador de la tarea que se utilizará para las consultas de estado posteriores; credits representa la cantidad de créditos reservados para esta tarea. Esta respuesta confirma la creación de la tarea, pero no significa que el video esté listo. Deberá realizar consultas periódicas del estado de la tarea (polling) o utilizar un Webhook para recibir los resultados del video.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Consultar una tarea

GET https://api.seevio.ai/v1/tasks/{taskId}

Reemplaza el ID de ejemplo por el taskId obtenido al crear la tarea. Las consultas solo devuelven tareas que pertenecen al usuario de la clave API; los ID inaccesibles o desconocidos devuelven HTTP 404.

Realiza consultas cada 10 o 20 segundos como punto de partida, reduce la frecuencia si recibes un HTTP 429 y detente cuando el estado sea completed o failed. Para entornos de producción, se recomienda usar webhooks. Cada ejemplo de código abajo realiza una sola consulta.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
EstadoDescripción y restricciones
queuedAceptada y en cola para procesamiento.
generatingGeneración en curso.
completedFinalizada correctamente. Descarga el archivo de data.results antes de que expire.
failedError al procesar. Revisa failed_reason y billing_status.
CampoTipoDescripción y restricciones
idstring
Identificador de la tarea. Corresponde al taskId de la respuesta de creación.
created_atnumber
Fecha de creación de la tarea en formato de tiempo Unix (segundos).
modelstring
El ID del modelo público utilizado para esta tarea.
billing_statusstring
reserved, charged, refunded o refund_failed.
creditsnumber
Créditos reservados para la tarea. Este valor se mantiene tras un reembolso; revisa billing_status para conocer el estado final de la facturación.
failed_reasonstring | null
Razón del fallo en tareas fallidas; de lo contrario null. Las respuestas de consulta fallidas omiten el objeto data.
dataobject
Presente en consultas de tareas que no han fallado. Contiene los detalles de procesamiento y el resultado.
data.resultsstring[]
Array de URL del video. Vacío hasta que finalice la generación o si el video ha expirado.
data.video_expires_atstring | null
Fecha de expiración del video en formato ISO 8601, o null antes de estar disponible. Guarda el resultado antes de esta fecha.
data.last_frame_urlstring | null
URL del último fotograma si se solicitó y está disponible; de lo contrario null.
data.processing_timenumber | null
Duración de procesamiento del proveedor en segundos si está disponible; de lo contrario null.

Tarea completada: respuesta de consulta con resultados del video

Cuando la consulta devuelve status=completed, significa que la generación del video ha finalizado. Puede obtener las URL de los videos desde data.results y descargarlos antes de la fecha indicada en data.video_expires_at. El estado billing_status=charged indica que se han cobrado los créditos reservados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tarea fallida: respuesta de consulta con detalles del error y facturación

Cuando la consulta devuelve status=failed, significa que el proceso de generación ha fallado. Consulte failed_reason para conocer el motivo del error y billing_status para saber si se ha realizado el reembolso. En este ejemplo, refunded indica que se han devuelto los créditos. El campo credits conserva el valor reservado originalmente y la respuesta no incluye data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhooks

Para integraciones de producción, proporciona una callback_url al crear la tarea. La referencia de cada modelo incluye el contenido de callback y un ejemplo de receptor.

Configura callback_url en la petición de creación para recibir un POST con formato JSON cuando la tarea se complete o falle. Responde con un código 2xx en menos de 15 segundos. Los envíos fallidos se reintentan; procesa los envíos repetidos de forma idempotente usando el ID de la tarea.

Tu endpoint de callback debe aceptar solicitudes POST con un cuerpo en formato JSON (Content-Type: application/json).

Crear una tarea con callback

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Los datos del webhook difieren de las respuestas de consulta de tareas: omiten billing_status y credits; los detalles del fallo se encuentran en data.failed_reason y data.credits_refunded. El campo created_at del webhook es la hora de creación del evento en segundos Unix.

Tarea completada: carga útil del callback exitosa

Si la generación se realiza correctamente, el callback devolverá status=completed. Usa el id para identificar la tarea y data.results para obtener las URL de los videos. Asegúrate de descargar y guardar los resultados antes de la fecha indicada en data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tarea fallida: carga útil del callback con error

Si la generación falla, el callback devolverá status=failed. Usa el id para identificar la tarea, data.failed_reason para conocer el motivo del fallo y data.credits_refunded para ver la cantidad de créditos reembolsados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Ejemplo de receptor

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Este ejemplo de Next.js lee el cuerpo de la llamada JSON y procesa directamente las tareas completadas y fallidas. Te recomendamos implementar persistencia y deduplicación de ID de tareas en tu aplicación, así como encolar las tareas lentas antes de confirmar la recepción del callback.

Errores

Los errores HTTP contienen un objeto error con un código (code) y un mensaje (message). Una tarea aceptada con éxito puede fallar más tarde; consulta su estado o gestiona el callback de fallo.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPCampoQué hacer
400invalid_request
Corrige el JSON, el prompt faltante, el rango de parámetros o la URL del archivo multimedia antes de reintentar.
401invalid_api_key
Verifica el Bearer token y asegúrate de que la clave API esté activa.
402insufficient_credits
Añade créditos o reduce el costo de la tarea. La respuesta puede indicar la cantidad de créditos requeridos y disponibles.
403forbidden
Revisa la restricción de cuenta detallada en el mensaje de error.
404not_found
Verifica el ID de la tarea y que la clave pertenezca al usuario que la creó.
429rate_limited
Espera a que transcurra el intervalo indicado en Retry-After antes de intentarlo de nuevo.
500internal_error
Revisa el mensaje de error y los registros de la API. Reintenta con precaución; reenviar una petición de creación puede generar otra tarea facturable.