Dokumentasi
Kembangkan dengan Seevio API
Tambahkan fitur pembuatan video ke produk Anda. Pilih model, kirim permintaan, dan ambil hasilnya melalui polling atau webhook.
Pilih model
Setiap referensi model mencakup parameter lengkap, harga, dan contoh. Anda dapat menyelesaikan integrasi langsung dari satu halaman model.
Autentikasi
Buat kunci API di dasbor. Kunci lengkap hanya akan ditampilkan sekali. Simpan di server Anda dan kirimkan sebagai Bearer token pada setiap permintaan.
URL Basis
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonAtur variabel lingkungan SEEVIO_API_KEY sebelum menjalankan contoh ini. Contoh JavaScript dijalankan di server Anda menggunakan Node.js; contoh Python menggunakan paket requests.
Mulai cepat
Contoh ini membuat video 720p berdurasi 5 detik dengan Seedance 2.5. Buka referensi model untuk melihat semua mode pembuatan dan batasan parameter.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'Contoh respons pembuatan tugas
Setelah permintaan di atas diterima, API akan mengembalikan respons JSON ini. taskId adalah pengenal tugas yang digunakan untuk kueri status berikutnya; credits adalah jumlah kredit yang dicadangkan untuk tugas ini. Respons ini hanya mengonfirmasi pembuatan tugas, bukan berarti video telah siap. Anda perlu melakukan polling status tugas atau menggunakan Webhook untuk menerima hasil video.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 100
}Kueri tugas
GET https://api.seevio.ai/v1/tasks/{taskId}Ganti ID contoh dengan taskId yang dikembalikan oleh pembuatan. Kueri hanya mengembalikan tugas milik pengguna dari kunci API tersebut; ID yang tidak dapat diakses atau tidak dikenal akan mengembalikan HTTP 404.
Lakukan polling setiap 10–20 detik sebagai permulaan, kurangi frekuensi pada HTTP 429, dan hentikan saat status telah selesai atau gagal. Gunakan webhook untuk produksi. Setiap contoh kode di bawah ini melakukan satu kueri.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Status | Deskripsi & batasan |
|---|---|
queued | Diterima dan menunggu pengiriman. |
generating | Pembuatan sedang berlangsung. |
completed | Selesai dengan sukses. Unduh data.results sebelum kedaluwarsa. |
failed | Gagal total. Periksa failed_reason dan billing_status. |
| Kolom | Tipe | Deskripsi & batasan |
|---|---|---|
id | string | Pengidentifikasi tugas. Ini adalah taskId dari respons pembuatan. |
created_at | number | Waktu pembuatan tugas dalam detik Unix. |
model | string | ID model publik yang digunakan untuk tugas ini. |
billing_status | string | reserved, charged, refunded, atau refund_failed. |
credits | number | Kredit yang dicadangkan untuk tugas ini. Nilai ini tetap ada setelah pengembalian dana; periksa billing_status untuk menentukan hasil akhir penagihan. |
failed_reason | string | null | Alasan kegagalan pada tugas yang gagal; jika tidak, nilainya null. Respons kueri yang gagal mengosongkan data. |
data | object | Ada pada kueri tugas yang tidak gagal. Berisi detail output dan pemrosesan. |
data.results | string[] | Array URL video. Kosong hingga selesai atau setelah masa kedaluwarsa video. |
data.video_expires_at | string | null | Kedaluwarsa video sebagai stempel waktu ISO 8601, atau null sebelum tersedia. Simpan hasilnya sebelum waktu ini. |
data.last_frame_url | string | null | URL bingkai terakhir saat diminta dan tersedia, jika tidak nilainya null. |
data.processing_time | number | null | Durasi pemrosesan penyedia dalam detik saat tersedia, jika tidak nilainya null. |
Tugas selesai: respons kueri dengan hasil video
Ketika kueri mengembalikan status=completed, pembuatan video telah selesai. Ambil URL video dari data.results dan unduh sebelum data.video_expires_at. billing_status=charged menunjukkan bahwa kredit yang dicadangkan telah terpotong.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "completed",
"billing_status": "charged",
"credits": 100,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Tugas gagal: respons kueri dengan detail kegagalan dan penagihan
Ketika kueri mengembalikan status=failed, proses pembuatan video gagal. Lihat failed_reason untuk mengetahui penyebabnya dan billing_status untuk hasil pengembalian dana. Pada contoh ini, refunded berarti kredit telah dikembalikan. credits tetap menampilkan jumlah awal yang dicadangkan, dan respons tidak menyertakan data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "failed",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}Webhook
Untuk integrasi produksi, sertakan callback_url saat membuat tugas. Setiap referensi model menyertakan muatan callback dan contoh penerimanya.
Atur callback_url dalam permintaan buat untuk menerima POST JSON saat tugas selesai atau gagal. Kembalikan respons 2xx dalam waktu 15 detik. Pengiriman yang gagal akan dicoba kembali; proses pengiriman berulang secara idempoten berdasarkan ID tugas.
Endpoint callback Anda harus menerima permintaan POST dengan body permintaan JSON (Content-Type: application/json).
Buat tugas dengan callback
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'Muatan webhook berbeda dari respons kueri tugas: webhook tidak menyertakan billing_status dan credits; detail kegagalan ada di dalam data.failed_reason dan data.credits_refunded. created_at pada webhook adalah waktu pembuatan peristiwa dalam detik Unix.
Tugas selesai: payload callback sukses
Saat pembuatan berhasil, callback akan berisi status=completed. Gunakan id untuk mengidentifikasi tugas dan data.results untuk mengambil URL video. Unduh dan simpan hasilnya sebelum data.video_expires_at.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "completed",
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Tugas gagal: payload callback gagal
Saat pembuatan gagal, callback akan berisi status=failed. Gunakan id untuk mengidentifikasi tugas, data.failed_reason untuk melihat alasan kegagalan, dan data.credits_refunded untuk melihat jumlah kredit yang dikembalikan.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}Contoh penerima
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData.data;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Contoh Next.js ini membaca body callback JSON dan menangani tugas yang berhasil serta gagal secara langsung. Tambahkan persistensi dan deduplikasi ID tugas untuk aplikasi Anda; antrekan pekerjaan yang lambat sebelum mengonfirmasi callback.
Error
Error HTTP memiliki objek error dengan kode dan pesan. Tugas yang berhasil diterima masih bisa gagal nanti; kueri tugas atau tangani callback kegagalannya.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Kolom | Tindakan |
|---|---|---|
| 400 | invalid_request | Perbaiki JSON, prompt yang hilang, rentang parameter, atau URL media sebelum mencoba lagi. |
| 401 | invalid_api_key | Periksa Bearer token dan apakah kunci API aktif. |
| 402 | insufficient_credits | Tambahkan kredit atau kurangi biaya tugas. Respons mungkin menyertakan jumlah yang diperlukan dan yang tersedia. |
| 403 | forbidden | Periksa batasan tingkat akun yang dijelaskan dalam pesan kesalahan. |
| 404 | not_found | Periksa ID tugas dan pastikan kunci tersebut milik pengguna tugas. |
| 429 | rate_limited | Tunggu interval Retry-After sebelum mencoba lagi. |
| 500 | internal_error | Periksa pesan error dan log API. Coba lagi dengan hati-hati; mengirim ulang permintaan pembuatan dapat membuat tugas berbayar lainnya. |