Kami menggunakan cookie. Cookie dan penyimpanan browser menjaga Anda tetap masuk dan mengingat preferensi Anda. Dengan izin Anda, kami juga mengukur cara situs digunakan. Anda dapat kapan saja. Lihat kebijakan cookie kami.

Video (job asinkron)

Endpoint

Video (job asinkron)

POST /videos membuat job video asinkron; lakukan polling GET /videos/{id} lalu unduh hasilnya dengan model seperti Veo 3.1 dan Sora 2 Pro.

Coba di playground

Buat video dengan Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo, dan lainnya. Generasi video memakan waktu dari puluhan detik hingga beberapa menit, jadi berjalan sebagai job asinkron: Anda membuat job, melakukan polling statusnya, lalu mengunduh hasilnya.

LangkahRequest
1. BuatPOST /api/v1/videos
2. PollingGET /api/v1/videos/{id}
3. UnduhGET /api/v1/videos/{id}/content?index=0

Membuat job

POST https://api14.com/api/v1/videos
ParameterTipeWajibDeskripsi
modelstringyaID model video, mis. google/veo-3.1-fast.
promptstringyaApa yang terjadi dalam video.
durationnumbertidakPanjang dalam detik. Default ke durasi pertama yang didukung model.
resolutionstringtidakmis. 720p, 1080p. Harus didukung oleh model.
aspect_ratiostringtidakmis. 16:9, 9:16.
generate_audiobooleantidakMenghasilkan soundtrack jika didukung (default true).
imagestringtidakFrame pertama sebagai URL atau data: URI (image-to-video).

Durasi, resolusi, dan rasio aspek yang didukung per model: GET /videos/models (publik) atau halaman model.

Pemeriksaan saldo

Sebelum job dikirim, gateway memperkirakan harganya sebagai durasi × harga per detik untuk resolusi (dan opsi audio) yang diminta. Jika saldo Anda lebih rendah dari perkiraan, request gagal dengan 402 insufficient_balance dan tidak ada yang dimulai.

Respons

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

Polling 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 }
}
statusArti
queuedMenunggu provider.
in_progressSedang dirender.
completedSelesai; unsigned_urls mencantumkan keluaran.
failed, cancelled, expiredSelesai tanpa keluaran; lihat error. Anda tidak ditagih.

Lakukan polling setiap 5–10 detik. Hanya akun yang membuat job yang dapat membacanya; id lain mengembalikan 404 not_found.

Mengunduh hasil

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

Mengembalikan byte video (biasanya video/mp4) dengan API key Anda. URL keluaran selalu mengarah ke gateway, tidak pernah ke provider upstream. Jika file belum siap atau sudah kedaluwarsa, Anda mendapat content_unavailable.

Contoh

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

Penagihan

Anda ditagih satu kali, saat job mencapai completed, memakai biaya aktual dari provider. Job yang gagal, dibatalkan, dan kedaluwarsa gratis. Job juga selesai di latar belakang, jadi job yang tidak pernah Anda polling tetap diselesaikan dan muncul di Usage.

Error

StatusKodeKapan
402insufficient_balanceSaldo di bawah perkiraan harga job.
403plan_requiredPaket Anda tidak mencakup model video.
404model_not_found / not_foundModel tidak dikenal, atau id job bukan milik Anda.
502upstream_unavailableStatus tidak dapat dibaca; coba lagi.

Lihat Error.