Usamos cookies. Cookies e o armazenamento do navegador mantêm você conectado e lembram suas preferências. Com sua permissão, também medimos como o site é usado. Você pode a qualquer momento. Veja nossa política de cookies.

Geração de vídeo

Endpoints

Geração de vídeo

Gere vídeo com Veo 3.1, Sora 2 Pro, Kling e outros pela API assíncrona do api14: criar o job, consultar o status, baixar o resultado e entender a cobrança.

Teste no playground

Gere vídeo com Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo e mais. A geração de vídeo leva de dezenas de segundos a vários minutos, então roda como um job assíncrono: você cria um job, consulta o status e depois baixa o resultado.

EtapaRequisição
1. CriarPOST /api/v1/videos
2. ConsultarGET /api/v1/videos/{id}
3. BaixarGET /api/v1/videos/{id}/content?index=0

Criar um job

POST https://api14.com/api/v1/videos
ParâmetroTipoObrigatórioDescrição
modelstringsimUm id de modelo de vídeo, por exemplo google/veo-3.1-fast.
promptstringsimO que acontece no vídeo.
durationnumbernãoDuração em segundos. Por padrão, a primeira duração suportada pelo modelo.
resolutionstringnãoPor exemplo 720p, 1080p. Deve ser suportada pelo modelo.
aspect_ratiostringnãoPor exemplo 16:9, 9:16.
generate_audiobooleannãoGera uma trilha sonora quando suportado (padrão true).
imagestringnãoPrimeiro quadro como URL ou URI data: (imagem para vídeo).

Durações, resoluções e proporções suportadas por modelo: GET /videos/models (público) ou a página do modelo.

Verificação de saldo

Antes de o job ser enviado, o gateway estima seu preço como duração × o preço por segundo da resolução solicitada (e da opção de áudio). Se o seu saldo for menor que a estimativa, a requisição falha com 402 insufficient_balance e nada é iniciado.

Resposta

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

Consultar o job

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
queuedAguardando o provedor.
in_progressRenderizando.
completedConcluído; unsigned_urls lista as saídas.
failed, cancelled, expiredTerminou sem saída; veja error. Você não é cobrado.

Consulte a cada 5–10 segundos. Somente a conta que criou o job pode lê-lo; outros ids retornam 404 not_found.

Baixar o resultado

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

Retorna os bytes do vídeo (normalmente video/mp4) com a sua chave de API. As URLs de saída sempre apontam para o gateway, nunca para o provedor original. Se o arquivo não estiver pronto ou tiver expirado, você recebe content_unavailable.

Exemplo

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);

Cobrança

Você é cobrado uma única vez, quando o job chega a completed, pelo custo real do provedor. Jobs com falha, cancelados e expirados são gratuitos. Os jobs também são concluídos em segundo plano, então um job que você nunca consulta ainda é liquidado e aparece em Uso.

Erros

StatusCódigoQuando
402insufficient_balanceO saldo está abaixo do preço estimado do job.
403plan_requiredSeu plano não inclui modelos de vídeo.
404model_not_found / not_foundModelo desconhecido ou id de job que não é seu.
502upstream_unavailableNão foi possível ler o status; tente novamente.

Veja Erros.