Langsung ke konten utama

Ikhtisar

Alih-alih melakukan polling GET /jobs/{id}, berikan URL webhook kepada Krea. Krea mengirim job ke URL tersebut saat job selesai.

Menggunakan Webhooks

Tambahkan header X-Webhook-URL ke request generasi mana pun. Ketika job completed, failed, atau cancelled, Krea mengirim POST request ke URL tersebut.

Payload Webhook

Body request memiliki bentuk yang sama dengan respons GET /jobs/{id}:

Memverifikasi Tanda Tangan

Krea menandatangani setiap webhook dengan Ed25519. Verifikasi tanda tangan sebelum Anda memercayai payload, dan tolak request yang tidak memiliki tanda tangan. Krea menandatangani SHA-256 hex huruf kecil dari timestamp, URL, metadata, dan body request mentah, yang digabungkan dengan baris baru:
Untuk memverifikasi request:
  1. Periksa bahwa X-Krea-Webhook-Url sama persis dengan X-Webhook-URL yang Anda kirim bersama job.
  2. Periksa bahwa timestamp berada dalam rentang 5 menit dari waktu server Anda saat ini.
  3. Terima request jika tanda tangan berhasil diverifikasi dengan kunci mana pun di https://api.krea.ai/.well-known/jwks.json. Cache kunci paling lama 24 jam. Krea memublikasikan kunci baru 24 jam sebelum mulai menandatangani dengannya.
Hash byte body mentah, bukan JSON yang diserialisasi ulang. Misalnya, gunakan express.raw() di Express, await request.arrayBuffer() di framework Fetch API, atau request.get_data() di Flask. Perlakukan header X-Krea-Webhook-Metadata yang tidak ada sebagai string kosong.

Pengiriman dan Percobaan Ulang

Kembalikan 2xx dalam 15 detik. Jika request mengalami timeout, tidak dapat terhubung, atau menerima 5xx, 408, 423, 425, atau 429, Krea mencoba ulang selama sekitar 10 menit dengan timestamp dan tanda tangan baru setiap kali. Krea tidak mencoba ulang untuk 4xx lainnya. Job yang sama dapat diterima lebih dari sekali, jadi lakukan deduplikasi berdasarkan job_id dan status.

Webhooks vs. Polling

Gunakan webhooks bila Anda memiliki server yang dapat menerima HTTP request. Gunakan polling untuk aplikasi sisi klien atau ketika Anda tidak dapat mengekspos endpoint publik.

Langkah Berikutnya

Job Lifecycle

Pelajari status job dan polling status

Contoh Kode

Buat gambar dengan API, dari awal hingga akhir