API & Developer
Webhook
Daftarkan endpoint HTTPS untuk menerima notifikasi secara real-time saat tugas PDF Anda selesai atau gagal. Pelajari cara memverifikasi tanda tangan webhook dan menangani percobaan ulang.
Webhook memungkinkan aplikasi Anda menerima notifikasi peristiwa secara real-time dari PDFSimple. Alih-alih melakukan polling ke API untuk status tugas, daftarkan sebuah endpoint dan PDFSimple akan mengirim payload bertanda tangan ke sana saat peristiwa terjadi.
Menyiapkan webhook
- Buka Dasbor → Webhook dan klik Tambah endpoint.
- Masukkan URL endpoint HTTPS Anda (mis., https://yourapp.com/webhooks/pdfsimple).
- Pilih peristiwa yang ingin Anda terima (mis., job.completed, job.failed).
- Klik Buat. Secret webhook unik akan ditampilkan — salin segera, hanya ditampilkan satu kali.
- Simpan secret tersebut dengan aman di variabel environment aplikasi Anda.
Secret webhook Anda digunakan untuk memverifikasi bahwa payload berasal dari PDFSimple. Jangan pernah mengeksposnya secara publik. Jika bocor, hapus webhook tersebut dan buat yang baru.
Peristiwa webhook
- job.completed — tugas pemrosesan PDF selesai dengan sukses. Payload mencakup ID tugas, URL file output, dan metadata.
- job.failed — tugas mengalami kesalahan. Payload mencakup pesan kesalahan.
Memverifikasi tanda tangan webhook
Setiap permintaan webhook mencakup header X-PDFSimple-Signature yang berisi tanda tangan HMAC-SHA256 dari body permintaan mentah, dihitung menggunakan secret webhook Anda. Selalu verifikasi tanda tangan ini sebelum memproses payload.
const crypto = require('crypto');
function verifySignature(rawBody, secret, signature) {
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}Percobaan ulang dan jaminan pengiriman
Jika endpoint Anda tidak mengembalikan respons 2xx dalam 30 detik, PDFSimple akan mencoba ulang pengiriman dengan back-off eksponensial, hingga 5 kali percobaan selama 30 hari. Peristiwa webhook disimpan selama 30 hari.
Balas dengan HTTP 200 secepat mungkin. Proses payload secara asinkron dalam tugas latar belakang untuk menghindari timeout.
Apakah ini membantu?