Lompati ke dokumentasi
Pada halaman ini

Kling 4.0

Buat video dengan Kling 4.0 menggunakan teks, bingkai pertama dan terakhir, atau referensi multimodal. Halaman ini menjelaskan alur kerja lengkap dari permintaan hingga hasil untuk model ini.

ID model API: kling-4-0

Pembuatan video bersifat asinkron. Simpan taskId yang dikembalikan saat membuat tugas, lalu lakukan kueri statusnya atau terima melalui webhook.

Kemampuan

FiturNilai yang didukung
Resolusi output720p · 1080p
Durasi output3–30 s
Rasio aspekauto, 16:9, 9:16, 1:1, 21:9
Gambar referensiHingga 10 gambar
Video referensiHingga 5 video
File audio referensiHingga 3 file audio
Semua gabungan referensiHingga total 15 file referensi
Video referensi (Σ)30 detik
seedTidak didukung

Harga & kredit

Pembuatan video dikenakan biaya dalam bentuk kredit berdasarkan durasi tagihan dalam hitungan detik. Tanpa input video, durasi tagihan adalah durasi output; dengan input video, durasi tagihan juga mencakup durasi video referensi.

Tabel di bawah ini mencantumkan biaya kredit yang dikenakan per detik, bukan total biaya dari suatu tugas. Tarif bergantung pada model, resolusi output, dan apakah video referensi disediakan dalam mode reference-to-video. Lihat rumus dan contoh di bawah tabel untuk perhitungan total biaya.

Resolusi outputTanpa input videoDengan input video
720p13 kredit/detik8 kredit/detik
1080p20 kredit/detik13 kredit/detik
  • Tanpa input video: detik output × tarif tanpa-video.
  • Jika ada masukan video, T adalah total durasi video referensi dalam detik yang diukur server. Jumlah kredit akhir dibulatkan ke atas. ceil((duration + max(duration, T)) × rate)
  • Referensi gambar atau audio saja menggunakan tarif tanpa-video. Tarif penagihan video referensi hanya berlaku dalam mode referensi-ke-video saat referensi video disertakan.

Contoh perhitungan biaya

Teks-ke-video 720p berdurasi 5 detik: 5 × 13 = 65 kredit.

Output 720p berdurasi 5 detik dengan video referensi 5 detik: (5 + 5) × 8 = 80 kredit.

Kredit dicadangkan saat pengiriman dan didebit setelah berhasil. Tugas yang gagal atau habis waktu (timeout) akan masuk ke alur pengembalian dana. Status penagihan refund_failed berarti pengembalian dana tidak selesai; periksa log API atau hubungi dukungan.

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.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Atur 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

Kirim permintaan minimal ini, simpan taskId yang dikembalikan, lalu gunakan contoh kueri tugas di bawah ini. Nilai kredit dalam respons pembuatan adalah jumlah yang dicadangkan.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

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": 65
}

Buat tugas

POST https://api.seevio.ai/v1/videos/generations

Kirim objek JSON yang berisi model dan input, serta callback_url opsional. Selalu tentukan ID model yang ditampilkan di halaman ini; jika model tidak ditentukan, sistem otomatis memilih seedance-2-0.

Isi permintaan

KolomTipeWajibDeskripsi & batasan
model
stringYa

ID Model. Untuk menggunakan Kling 4.0, atur bidang ini ke kling-4-0.

callback_url
stringTidak

Endpoint HTTPS publik untuk callback POST selesai dan gagal. Jaringan privat dan localhost tidak diizinkan.

Contoh: https://example.com/webhooks/seevio
input
objectYa

Parameter input

Parameter input

KolomTipeDefaultDeskripsi & batasan
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—Maksimal 8000 karakter. Opsional hanya untuk pembuatan video dari gambar. Nomori referensi per jenis sesuai urutan larik mulai dari @Image1, @Video1, dan @Audio1.
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringTergantung mode
Nilai yang didukungauto16:99:161:121:9

Rasio tetap menentukan bentuk keluaran. Jika kolom ini dihilangkan atau diisi auto, mode teks menggunakan 16:9 dan mode gambar mengikuti bingkai pertama. Mode referensi menentukan rasio dari gambar atau video referensi.

input.image_urlsstring[][]Untuk video dari gambar, kirim bingkai pertama lalu bingkai terakhir jika perlu. Mode referensi menerima hingga 10 gambar.
input.keyframe_urlsstring[][]Bingkai perantara sesuai urutan pemutaran untuk video dari gambar. Maksimal 9 tanpa bingkai terakhir atau 8 dengan bingkai terakhir.
input.video_urlsstring[][]Khusus mode referensi. Berikan URL HTTPS video yang akan memandu aksi atau gerakan kamera. Maksimal 5 klip, masing-masing 2–30 detik, dengan total durasi maksimal 30 detik.
input.audio_urlsstring[][]Khusus mode referensi. Berikan URL HTTPS klip audio yang akan memandu suara yang dihasilkan. Maksimal 3 klip, masing-masing 5–30 detik.
input.keep_original_soundbooleanfalseJika video_urls berisi video referensi, true mempertahankan audio asli dan false (bawaan) menghasilkan audio baru. Tanpa video referensi, pengaturan ini diabaikan.

Respons pembuatan

HTTP 200 mengembalikan taskId (string) dan credits (number). Ini menyatakan diterimanya pembuatan tugas, bukan penyelesaiannya. Jumlah di bawah ini sesuai dengan mulai cepat 720p berdurasi 5 detik.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

Mode pembuatan & contoh

Ganti URL media example.com dengan file HTTPS Anda sendiri yang dapat diakses publik. URL contoh ini hanya menunjukkan struktur permintaan dan bukan aset sampel yang dapat diunduh.

Teks ke video

Hasilkan dari prompt teks. URL media tidak diteruskan dalam mode ini.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

Bingkai pertama

Sediakan satu gambar sebagai bingkai pertama, lalu deskripsikan gerakannya dalam prompt Anda.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg"
    ]
  }
}'

Bingkai pertama dan terakhir

Untuk video dari gambar, kirim bingkai pertama lalu bingkai terakhir jika perlu. Mode referensi menerima hingga 10 gambar.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ]
  }
}'

Contoh bingkai kunci: mawar mekar

Buat video selang waktu 8 detik dari empat foto dengan sudut yang sama. Di image_urls, masukkan kuncup tertutup lalu mawar yang mekar penuh sebagai bingkai awal dan akhir. Di keyframe_urls, masukkan kelopak yang mulai terbuka lalu bunga yang setengah mekar. Video bergerak dari kuncup melalui kedua tahap tersebut hingga mekar penuh. Urutan larik menentukan urutan bingkai, sedangkan model menentukan waktunya.

Ganti URL media example.com dengan file HTTPS Anda sendiri yang dapat diakses publik. URL contoh ini hanya menunjukkan struktur permintaan dan bukan aset sampel yang dapat diunduh.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/rose-bud.jpg",
      "https://example.com/rose-full-bloom.jpg"
    ],
    "keyframe_urls": [
      "https://example.com/rose-opening.jpg",
      "https://example.com/rose-half-open.jpg"
    ]
  }
}'

Referensi multimodal

Gabungkan referensi gambar, video, dan audio. Prompt tetap wajib diisi. Input video referensi akan mengubah formula penagihan.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/motion.mp4"
    ],
    "audio_urls": [
      "https://example.com/surf.mp3"
    ],
    "keep_original_sound": false
  }
}'

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"
StatusDeskripsi & batasan
queuedDiterima dan menunggu pengiriman.
generatingPembuatan sedang berlangsung.
completedSelesai dengan sukses. Unduh data.results sebelum kedaluwarsa.
failedGagal total. Periksa failed_reason dan billing_status.
KolomTipeDeskripsi & batasan
idstring
Pengidentifikasi tugas. Ini adalah taskId dari respons pembuatan.
created_atnumber
Waktu pembuatan tugas dalam detik Unix.
modelstring
ID model publik yang digunakan untuk tugas ini.
billing_statusstring
reserved, charged, refunded, atau refund_failed.
creditsnumber
Kredit yang dicadangkan untuk tugas ini. Nilai ini tetap ada setelah pengembalian dana; periksa billing_status untuk menentukan hasil akhir penagihan.
failed_reasonstring | null
Alasan kegagalan pada tugas yang gagal; jika tidak, nilainya null. Respons kueri yang gagal mengosongkan data.
dataobject
Ada pada kueri tugas yang tidak gagal. Berisi detail output dan pemrosesan.
data.resultsstring[]
Array URL video. Kosong hingga selesai atau setelah masa kedaluwarsa video.
data.video_expires_atstring | null
Kedaluwarsa video sebagai stempel waktu ISO 8601, atau null sebelum tersedia. Simpan hasilnya sebelum waktu ini.
data.last_frame_urlstring | null
URL bingkai terakhir saat diminta dan tersedia, jika tidak nilainya null.
data.processing_timenumber | null
Durasi pemrosesan tugas dalam detik jika tersedia, jika tidak maka bernilai 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": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 65,
  "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": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed"
}

Webhook

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": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

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.

created_at adalah waktu pembuatan peristiwa; task_created_at adalah waktu pembuatan tugas, dalam detik Unix. Contoh menampilkan kolom yang disarankan; respons dapat memuat kolom tambahan.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 65,
  "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: payload callback gagal

Saat pembuatan gagal, callback akan berisi status=failed. Gunakan id untuk mengidentifikasi tugas, failed_reason untuk melihat alasan kegagalan, dan credits_refunded untuk melihat jumlah kredit yang dikembalikan.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed",
  "credits_refunded": 65
}

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;
    // 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.

Persyaratan & batasan media

  • Semua media dan URL callback harus berupa URL HTTPS publik. Hindari localhost, IP privat, dan file yang memerlukan cookie atau masuk log. URL referensi video/audio harus mengarah ke media yang dapat dibaca secara langsung.
  • Ukuran setiap video tidak boleh lebih dari 100 MB.
  • Ukuran setiap file audio tidak boleh lebih dari 15 MB.
  • Hingga total 15 file referensi