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
}
| Field | Fungsi |
|---|---|
model | Wajib. Model video. |
prompt | Wajib. Hal yang harus ditampilkan video. |
seconds | Durasi. Setiap model menawarkan sekumpulan nilai tetap, misalnya 4, 6, 8 atau 10. |
size | Ukuran output sebagai widthxheight, dari ukuran yang didukung model. |
audio | false untuk klip tanpa suara, pada model yang mendukung keduanya. Klip tanpa suara sering kali lebih murah. |
image | Frame 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.