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.