GetVibe menyediakan pembuatan media melalui API job asinkron di samping API model teksnya. Jalur permintaan media tidak sama dengan chat completion OpenAI: kirim job pembuatan, terima ID job, lalu ambil status dan hasilnya. Model gambar, video, dan audio/suara memiliki input serta unit penagihan yang berbeda, jadi pilih dari katalog model media alih-alih mengasumsikan bahwa satu bentuk permintaan berlaku untuk semua model.
Temukan model dan periksa persyaratannya
Gunakan katalog media dan /v1/models?type=image,video,audio untuk melihat jenis media yang tersedia bagi akun Anda. Periksa ID persis setiap model, input yang diterima, opsi yang didukung, format output, dan unit harganya. Model gambar mungkin mengenakan biaya berdasarkan pengaturan output; video mungkin bergantung pada durasi dan resolusi; model suara mungkin ditagih berdasarkan panjang teks, durasi, atau unit lain yang didokumentasikan. Jangan membandingkan harga ini seolah-olah semuanya adalah token teks.
gpt-image-2 adalah salah satu model gambar dalam katalog. Halaman model dan dokumentasi medianya mencantumkan rasio aspek, resolusi, serta opsi pembuatan/edit yang didukung. Model video memiliki inputnya sendiri dan dapat memerlukan waktu lebih lama. Fitur suara berbeda-beda menurut model; konfirmasikan daftar media terbaru sebelum menjanjikan operasi tertentu di UI Anda.
Kirim job gambar
Simpan key di server Anda. Berikut adalah bentuk asinkron yang didokumentasikan untuk permintaan text-to-image: prompt berada di field tingkat teratas, sedangkan opsi pembuatan berada di dalam opts.
curl https://getvibeapi.com/api/media/generate \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Ilustrasi editorial bersih tentang meja kerja developer, tanpa teks",
"opts": {"aspect_ratio":"16:9", "resolution":"1K", "mode":"text-to-image"}
}'Simpan jobId yang dikembalikan bersama catatan pengguna dan tugas Anda sendiri. Permintaan ini memulai pembuatan; permintaan ini tidak mengembalikan isi gambar yang sudah selesai secara inline.
Lakukan polling atau terima webhook
Untuk integrasi kecil, lakukan polling ke endpoint job dengan interval sedang dan berhenti saat job mencapai status terminal. Statusnya mencakup submitting, processing, success, fail, dan expired. Polling setiap beberapa milidetik hanya menambah traffic tanpa mempercepat pembuatan. Untuk batch produksi, konfigurasikan webhook yang didokumentasikan dan buat callback idempotent agar pengiriman duplikat tidak membuat aset duplikat.
curl "https://getvibeapi.com/api/media/jobs/$JOB_ID" \
-H "Authorization: Bearer $GETVIBE_API_KEY"Jika berhasil, ambil URL hasil dan salin media ke storage yang Anda kontrol jika media tersebut perlu disimpan dalam jangka panjang. Jika gagal, simpan ID job untuk keperluan dukungan dan tampilkan error yang berguna. Jangan mengulangi setiap kegagalan: opsi yang tidak valid akan gagal lagi, dan pembuatan duplikat dapat menimbulkan biaya tambahan.
Video dan suara memerlukan penanganan khusus untuk setiap model
Untuk video, periksa durasi, ukuran frame, persyaratan image-conditioning, dan opsi yang didukung model sebelum mengirimkan permintaan. Validasi URL sumber jarak jauh dan pastikan URL tersebut dapat diakses. Tampilkan progres job karena proses rendering dapat memerlukan waktu lebih lama daripada pembuatan teks. Gunakan alur webhook yang didokumentasikan untuk batch alih-alih membiarkan halaman interaktif tetap terbuka.
Untuk suara dan audio, bedakan pembuatan ucapan dari transkripsi atau pemahaman audio. Keduanya memiliki modalitas input dan output yang berbeda. Sesuaikan endpoint dan payload dengan kartu model, tetapkan batas teks atau durasi jika tersedia, dan simpan audio yang dikembalikan dalam format yang dapat diterima oleh player Anda. Jangan menjanjikan bahwa setiap model media dapat menghasilkan suara.
Anggaran dan perilaku saat gagal
Periksa harga terbaru model media sebelum menjalankan batch dan buat estimasi berdasarkan unit penagihan yang sebenarnya. Harga model teks bukan proksi untuk pembuatan gambar atau video. Jalankan satu sampel dengan resolusi, durasi, atau pengaturan suara persis seperti yang direncanakan untuk produksi. Catat ID job, model, opsi, durasi, status terminal, dan penggunaan yang ditagihkan. Tetapkan ukuran batch maksimum dan tinjauan manual untuk output yang mahal atau ditujukan kepada pelanggan.
Jangan menyertakan prompt dan URL media dalam log umum kecuali kebijakan privasi Anda mengizinkannya. Samarkan kredensial, terapkan batas upload, dan hindari mengekspos aset hasil pembuatan yang bersifat privat sebagai URL publik. Untuk proses edit, simpan aset asli secara terpisah sampai hasilnya ditinjau.
Checklist sebelum produksi
- Konfirmasikan ID model, modalitas, dan persyaratan input yang tepat.
- Simpan API key di server.
- Gunakan prompt tingkat teratas yang didokumentasikan dan opsi khusus model.
- Simpan ID job dan buat penanganan polling/webhook idempotent.
- Tentukan perilaku saat terjadi kegagalan dan kedaluwarsa.
- Buat anggaran berdasarkan unit penagihan model yang sebenarnya.
- Salin output yang berhasil ke storage jika output tersebut harus dipertahankan.
Baca pembuatan media, webhook media, dan model media sebelum merilisnya. Daftar model publik dan opsi yang didukung dapat berubah; halaman-halaman tersebut dan katalog live menjadi referensi untuk akun Anda.
Kelola aset sumber dengan aman
Untuk image-to-image atau video yang dikondisikan gambar, gunakan metode upload atau URL yang didokumentasikan untuk model tersebut. Pastikan URL sumber dapat diakses publik oleh layanan pembuatan dan tidak memerlukan sesi browser Anda yang sudah login. Hindari menyematkan signed URL yang berlaku lama ke dalam prompt yang dapat disalin ke log. Terapkan pemeriksaan ukuran upload dan content-type di aplikasi Anda sendiri sebelum menerima file pengguna.
Saat membuat media dari gambar yang diberikan pengguna, pertahankan file asli dan lacak persyaratan persetujuan serta retensi. Hasil yang dibuat dapat memuat detail sumber yang dapat dikenali; terapkan aturan privasi dan moderasi produk Anda sebelum membagikannya.
Rancang antarmuka pengguna berdasarkan status job
Tampilkan status submitted setelah ID job dikembalikan, status processing saat layanan bekerja, serta status terminal yang jelas untuk success, failure, atau expiration. Izinkan pengguna berpindah halaman dengan aman jika job terus berjalan secara asinkron, lalu pulihkan status dengan mencari catatan job yang Anda simpan sendiri. Cegah klik dua kali agar tidak mengirim pekerjaan duplikat dengan menonaktifkan kontrol submit atau menggunakan guard idempotensi Anda sendiri.
Untuk batch, tampilkan jumlah yang selesai, gagal, dan masih pending secara terpisah. Satu spinner agregat tidak memberi petunjuk apakah job video yang lama berjalan normal atau macet. Terapkan backoff polling yang dibatasi dan beralihlah ke jalur webhook yang didokumentasikan saat batch bertambah besar.
Simpan hasil dengan rencana retensi
Jangan menganggap URL hasil yang dikembalikan sebagai storage permanen kecuali dokumentasi media menyatakan demikian. Download output yang berhasil ke bucket storage Anda jika akses jangka panjang diperlukan, lalu simpan ID objek baru tersebut di database Anda. Terapkan kontrol akses pada file hasil pembuatan dan tentukan perilaku penghapusan saat pengguna menghapus sebuah project.
Catat ID model, opsi, versi prompt, ID job, objek hasil, status terminal, dan penggunaan yang ditagihkan. Dengan begitu, pertanyaan dukungan di kemudian hari dapat dijawab tanpa mencatat prompt sensitif secara lengkap atau mengekspos URL media kepada semua orang di tim.
