Langsung ke konten

Pembuatan video

Video dibuat secara asinkron: Anda membuat job, melakukan polling hingga selesai, lalu mengunduh hasilnya. Membuat satu klip memakan waktu dari puluhan detik hingga beberapa menit. Model video mencakup veo-3.1-generate-preview, veo-3.1-fast-generate-preview, seedance-2-0, kling-v3-0, grok-imagine-video-1-5 dan wan-2-6-t2v — lihat halaman model untuk durasi, ukuran, dan harga masing-masing.

1. Buat job

curl https://api.inferray.com/v1/videos \
  -H "Authorization: Bearer $INFERRAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1-fast-generate-preview",
    "prompt": "A paper boat drifting across a quiet pond at sunrise",
    "seconds": 8,
    "size": "1280x720"
  }'
{
  "id": "video_7f3a...",
  "object": "video",
  "model": "veo-3.1-fast-generate-preview",
  "status": "queued",
  "progress": 0,
  "created_at": 1767225600,
  "completed_at": null,
  "error": null
}
FieldFungsi
modelWajib. Model video.
promptWajib. Hal yang harus ditampilkan video.
secondsDurasi. Setiap model menawarkan sekumpulan nilai tetap, misalnya 4, 6, 8 atau 10.
sizeUkuran output sebagai widthxheight, dari ukuran yang didukung model.
audiofalse untuk klip tanpa suara, pada model yang mendukung keduanya. Klip tanpa suara sering kali lebih murah.
imageFrame pertama untuk dianimasikan, pada model yang mendukung image-to-video.

2. Poll status

curl https://api.inferray.com/v1/videos/$VIDEO_ID \
  -H "Authorization: Bearer $INFERRAY_API_KEY"

status berpindah dari queued ke in_progress, lalu berakhir sebagai completed atau failed (atau expired). Lakukan polling setiap 10–20 detik dengan backoff, bukan dalam loop ketat; polling tidak dikenakan biaya.

3. Unduh video

Setelah job completed:

curl https://api.inferray.com/v1/videos/$VIDEO_ID/content \
  -H "Authorization: Bearer $INFERRAY_API_KEY" \
  --output video.mp4

Unduh segera dan simpan sendiri; video yang sudah selesai tidak disimpan tanpa batas waktu. Membaca ulang status atau konten tidak akan dikenakan biaya lagi.

Dalam kode

const headers = { Authorization: `Bearer ${process.env.INFERRAY_API_KEY}`, "Content-Type": "application/json" };
const base = "https://api.inferray.com/v1/videos";

let job = await (await fetch(base, {
  method: "POST",
  headers,
  body: JSON.stringify({ model: "veo-3.1-fast-generate-preview", prompt: "A paper boat drifting across a pond", seconds: 8 }),
})).json();

while (job.status === "queued" || job.status === "in_progress") {
  await new Promise((resolve) => setTimeout(resolve, 15_000));
  job = await (await fetch(`${base}/${job.id}`, { headers })).json();
}

if (job.status !== "completed") throw new Error(job.error?.message ?? job.status);
const video = await fetch(`${base}/${job.id}/content`, { headers });

Kepemilikan dan harga

ID job dimiliki oleh project yang kuncinya membuatnya; kunci dari project lain akan mendapatkan 404. Video dihargai per detik output, berdasarkan resolusi dan ada-tidaknya audio, dan ditampilkan di halaman setiap model. Sebelum job dimulai, saldo Anda harus mencukupi estimasi harganya; job yang gagal tidak dikenakan biaya.

Gunakan Idempotency-Key saat membuat job, agar permintaan yang diulang mengembalikan job yang sudah Anda mulai, alih-alih membayar job kedua.