Usamos cookies. Las cookies y el almacenamiento del navegador mantienen tu sesión iniciada y recuerdan tus preferencias. Con tu permiso, también medimos cómo se usa el sitio. Puedes en cualquier momento. Consulta nuestra política de cookies.

Vídeo (trabajos asíncronos)

Endpoints

Vídeo (trabajos asíncronos)

Crea un trabajo de vídeo con POST /videos, consulta su estado con GET /videos/{id} y descarga el resultado; incluye facturación y errores.

Pruébalo en el playground

Genera vídeo con Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo y más. La generación de vídeo tarda desde decenas de segundos hasta varios minutos, así que funciona como un trabajo asíncrono: creas un trabajo, consultas su estado y luego descargas el resultado.

PasoPetición
1. CrearPOST /api/v1/videos
2. ConsultarGET /api/v1/videos/{id}
3. DescargarGET /api/v1/videos/{id}/content?index=0

Crear un trabajo

POST https://api14.com/api/v1/videos
ParámetroTipoObligatorioDescripción
modelstringsíUn id de modelo de vídeo, p. ej. google/veo-3.1-fast.
promptstringsíQué ocurre en el vídeo.
durationnumbernoDuración en segundos. Por defecto, la primera duración admitida por el modelo.
resolutionstringnop. ej. 720p, 1080p. Debe ser admitida por el modelo.
aspect_ratiostringnop. ej. 16:9, 9:16.
generate_audiobooleannoGenera una banda sonora donde se admita (por defecto true).
imagestringnoPrimer fotograma como URL o URI data: (imagen a vídeo).

Duraciones, resoluciones y proporciones admitidas por modelo: GET /videos/models (público) o la página del modelo.

Comprobación de saldo

Antes de enviar el trabajo, la pasarela estima su precio como duración × el precio por segundo de la resolución solicitada (y de la opción de audio). Si tu saldo es inferior a la estimación, la petición falla con 402 insufficient_balance y no se inicia nada.

Respuesta

{
  "id": "vid_01JABCDEF",
  "status": "queued",
  "polling_url": "/api/v1/videos/vid_01JABCDEF"
}

Consultar el trabajo

GET https://api14.com/api/v1/videos/{id}
{
  "id": "vid_01JABCDEF",
  "status": "completed",
  "generation_id": "gen-1791100000-abc",
  "unsigned_urls": ["/api/v1/videos/vid_01JABCDEF/content?index=0"],
  "usage": { "cost": 1.2 }
}
statusSignificado
queuedEsperando al proveedor.
in_progressRenderizando.
completedTerminado; unsigned_urls lista las salidas.
failed, cancelled, expiredTerminó sin salida; consulta error. No se te cobra.

Consulta el estado cada 5-10 segundos. Solo la cuenta que creó el trabajo puede leerlo; otros ids devuelven 404 not_found.

Descargar el resultado

GET https://api14.com/api/v1/videos/{id}/content?index=0

Devuelve los bytes del vídeo (normalmente video/mp4) con tu clave de API. Las URL de salida siempre apuntan a la pasarela, nunca al proveedor. Si el archivo no está listo o ha caducado, recibes content_unavailable.

Ejemplo

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

// Video generation is asynchronous: submit, then poll until completed.
let job = await client.post("/videos", { body: {
  "model": "google/veo-3.1-fast",
  "prompt": "A drone shot over turquoise ocean waves at sunrise",
  "duration": 8,
  "resolution": "720p",
  "aspect_ratio": "16:9"
} });
while (!["completed", "failed"].includes(job.status)) {
  await new Promise((r) => setTimeout(r, 5000));
  job = await client.get(`/videos/${job.id}`);
}
console.log(job.status, job.unsigned_urls);

Facturación

Se te cobra una sola vez, cuando el trabajo llega a completed, con el coste real del proveedor. Los trabajos fallidos, cancelados y caducados son gratuitos. Los trabajos también se completan en segundo plano, así que un trabajo que nunca consultas igualmente se liquida y aparece en Uso.

Errores

EstadoCódigoCuándo
402insufficient_balanceEl saldo es inferior al precio estimado del trabajo.
403plan_requiredTu plan no incluye modelos de vídeo.
404model_not_found / not_foundModelo desconocido, o el id del trabajo no es tuyo.
502upstream_unavailableNo se pudo leer el estado; reintenta.

Consulta Errores.