language untuk memilih bahasa pesan kegagalan.
Mulai cepat
Saat mengirim tugas, tambahkanwebhook di tingkat teratas body permintaan. Untuk menerjemahkan pesan kegagalan, tambahkan juga language:
URL Anda + /callback.
Endpoint tugas asinkron lainnya (video, audio, dll.) menggunakan
webhook dengan cara yang sama. language saat ini berlaku untuk POST /v1/videos/generations dan POST /v1/images/generations; kedua field harus berada di tingkat teratas body permintaan.Pilih bahasa pesan kesalahan
language adalah parameter string opsional yang hanya memengaruhi error.message dalam callback kegagalan. ID tugas, status, progres, biaya, dan URL hasil tidak berubah berdasarkan bahasa. Jika tidak diisi, pesan kesalahan asli dari penyedia upstream atau platform akan dikembalikan.
- Nilai tidak peka huruf besar-kecil dan spasi di awal atau akhir akan dihapus secara otomatis. Misalnya,
"ID"dan" id "sama-sama diperlakukan sebagaiid. - Gunakan kode dua huruf dalam tabel. Tag wilayah seperti
zh-CN,en-US, danpt-BRtidak dikenali. - Nilai yang tidak didukung tidak menyebabkan pengiriman tugas gagal; callback tetap berisi pesan kesalahan asli.
- Jika pesan asli sudah menggunakan bahasa target, pesan tersebut dikembalikan tanpa diterjemahkan ulang.
- Jika penerjemahan gagal, pesan asli dikembalikan tanpa menunda atau membatalkan callback.
Saat melakukan polling, gunakan parameter kueri
language pada endpoint status tugas untuk memilih bahasa pesan kesalahan yang sama. Webhook tidak memiliki string kueri, jadi language harus ditentukan saat mengirim tugas.Aturan URL
webhook yang Anda berikan adalah URL dasar (base), dan kami otomatis menambahkan /callback di belakangnya:
Jadi server Anda perlu menyediakan endpoint yang menerima
POST .../callback.
Apa yang akan Anda terima
Konten yang dikirim persis sama dengan yang dikembalikan oleh endpoint “Dapatkan Status Tugas” — Anda dapat memprosesnya dengan logika parsing yang sama.Untuk tugas video, hasilnya ada di
result.videos, dan untuk audio di result.audios.Contoh kegagalan di atas menggunakan
"language": "id". Parameter bahasa hanya mengubah error.message; semua field lainnya tetap sama.Percobaan ulang dan deduplikasi (penting)
- Percobaan ulang: Jika server Anda tidak mengembalikan
2xxdalam sekitar 10 detik, atau mengembalikan5xx, kami akan otomatis mencoba lagi, hingga 3 kali, dengan interval sekitar 10 dtk, 30 dtk, dan 60 dtk. Jika ketiganya gagal, kami menyerah (dalam sekitar 2 menit). - Tidak dicoba ulang: Jika endpoint Anda mengembalikan
4xx(dianggap URL / permintaan bermasalah), kami langsung menyerah tanpa mencoba lagi. - Deduplikasi: Biasanya satu tugas hanya dikirim sekali. Namun dalam kasus ekstrem (mis. restart di sisi kami setelah pengiriman tetapi sebelum konfirmasi) Anda mungkin menerima pengiriman ganda. Pastikan untuk melakukan deduplikasi secara idempoten berdasarkan
id(task_id) untuk menghindari pemrosesan ganda.
1
Kembalikan 2xx secepat mungkin
Terima dan masukkan ke antrean dulu, lalu proses secara asinkron — jangan biarkan kami menunggu Anda selesai memproses.
2
Deduplikasi berdasarkan id
Gunakan
id (task_id) sebagai kunci idempotensi untuk menghindari pemrosesan ganda.3
Konfigurasi dan verifikasi tanda tangan
Di produksi, verifikasi asal permintaan callback dan tolak permintaan palsu.
Persyaratan untuk URL callback
Demi keamanan, URL callback harus memenuhi:
URL yang tidak memenuhi persyaratan ini akan langsung dibuang (tidak dikirim, tidak dicoba ulang).
FAQ
Saya mengirim tugas dengan webhook tetapi tidak menerima pengiriman?
Saya mengirim tugas dengan webhook tetapi tidak menerima pengiriman?
Periksa satu per satu:
- Apakah tugas benar-benar selesai? Periksa detail tugas — apakah
statussudahcompleted/failed(tidak dikirim saat diproses)? - Apakah URL Anda dapat diakses publik? Bisakah kami menjangkau
/callbackAnda? - Apakah port-nya standar (80 / 443)? Port non-standar mungkin diblokir oleh kebijakan keamanan.
- Apakah
/callbackAnda mengembalikan 2xx tepat waktu? Mengembalikan 4xx akan langsung ditinggalkan. - Apakah Anda menggunakan
https? Apakah sertifikatnya valid?
Mengapa url di dalam result berupa array?
Mengapa url di dalam result berupa array?
Beberapa model menghasilkan banyak gambar sekaligus, jadi
images[].url bisa berupa array — cukup perlakukan sebagai array.Apakah tautan hasil memiliki masa berlaku?
Apakah tautan hasil memiliki masa berlaku?
Jika
result menyertakan expires_at (timestamp Unix), itu menunjukkan waktu kedaluwarsa tautan — segera transfer/simpan.Apakah status 'sedang diproses' dikirim?
Apakah status 'sedang diproses' dikirim?
Tidak. Kami hanya mengirim sekali, saat tugas akhirnya berhasil atau gagal.
Contoh penerima minimal
Python
200 secepat mungkin, dan jalankan logika pemrosesan Anda secara asinkron di latar belakang.