s.id Logo
s.id
Platform Pembangun

Webhooks

Penghantaran acara masa nyata ke titik akhir HTTPS anda.

Gambaran Keseluruhan

Daftarkan titik akhir HTTPS awam di Dashboard → Pembangun → Webhooks. s.id akan POST muatan JSON bertanda tangan ke URL anda apabila acara yang dilanggan berlaku. Penghantaran yang gagal (bukan 2xx atau tamat masa) akan dicuba semula sehingga 3 kali, dengan lengah 0 saat, 5 saat, dan 30 saat.

Acara yang Tersedia

link.createdFired when a new link is created
link.updatedFired when a link's URL or title is changed
link.archivedFired when a link is archived
link.clickedFired on each redirect (per-click event)
microsite.publishedFired when a microsite is published
qr.scannedFired when a QR code is scanned

Struktur Muatan

Setiap POST webhook mengandungi badan JSON dengan nama acara, sumber yang berkaitan, dan cap waktu UTC.

{
  "event": "link.created",
  "link": {
    "id": 123,
    "short": "mylink",
    "short_url": "https://s.id/mylink",
    "long_url": "https://example.com/long-url",
    "title": "My Link",
    "created": "2026-06-22T10:00:00Z"
  },
  "timestamp": "2026-06-22T10:00:00Z"
}

Mengesahkan Tandatangan

Setiap penghantaran menyertakan pengepala X-SID-Signature: sha256=<hex>. Kira HMAC-SHA256 badan permintaan mentah menggunakan rahsia webhook anda dan bandingkan dengan kesetaraan selamat-masa.

Sentiasa sahkan tandatangan sebelum memproses acara. Jangan sesekali mempercayai muatan tanpa mengesahkan HMAC.

Node.js

const crypto = require('crypto');

function verifySignature(secret, rawBody, sigHeader) {
  const expected = 'sha256=' +
    crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(sigHeader),
    Buffer.from(expected),
  );
}

Go

func verifySignature(secret, body []byte, sig string) bool {
  mac := hmac.New(sha256.New, secret)
  mac.Write(body)
  expected := "sha256=" + hex.EncodeToString(mac.Sum(nil))
  return hmac.Equal([]byte(sig), []byte(expected))
}

Persediaan

  1. 1Pergi ke Dashboard → Pembangun → Webhooks dan klik Tambah Webhook.
  2. 2Masukkan URL titik akhir HTTPS anda dan pilih acara yang ingin anda langgan.
  3. 3Salin rahsia webhook, ia ditunjukkan sekali sahaja.
  4. 4Di pelayan anda, sahkan pengepala X-SID-Signature sebelum memproses.
  5. 5Kembalikan HTTP 2xx dalam 10 saat. Penghantaran yang gagal dicuba semula sehingga 3 kali; selepas 5 kegagalan berturut-turut, webhook akan dilumpuhkan secara automatik.