s.id Logo
s.id
แพลตฟอร์มนักพัฒนา

Webhooks

การส่งเหตุการณ์แบบเรียลไทม์ไปยัง HTTPS endpoint ของคุณ

ภาพรวม

ลงทะเบียน HTTPS endpoint สาธารณะใน Dashboard → Developer → Webhooks s.id จะ POST payload JSON ที่ลงนามแล้วไปยัง URL ของคุณเมื่อเหตุการณ์ที่สมัครสมาชิกเกิดขึ้น การส่งที่ล้มเหลว (ไม่ใช่ 2xx หรือหมดเวลา) จะถูกลองใหม่สูงสุด 3 ครั้ง โดยหน่วงเวลา 0 วินาที 5 วินาที และ 30 วินาที

เหตุการณ์ที่มีให้

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

โครงสร้าง Payload

ทุก webhook POST มีเนื้อหา JSON พร้อมชื่อเหตุการณ์ ทรัพยากรที่เกี่ยวข้อง และ timestamp 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"
}

การตรวจสอบลายเซ็น

ทุกการส่งมีส่วนหัว X-SID-Signature: sha256=<hex> คำนวณ HMAC-SHA256 ของเนื้อหาคำขอดิบโดยใช้ webhook secret ของคุณและเปรียบเทียบด้วย timing-safe equality

ตรวจสอบลายเซ็นเสมอก่อนประมวลผลเหตุการณ์ อย่าเชื่อถือ payload โดยไม่ตรวจสอบ 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))
}

การตั้งค่า

  1. 1ไปที่ Dashboard → Developer → Webhooks และคลิก Add Webhook
  2. 2ป้อน URL endpoint HTTPS ของคุณและเลือกเหตุการณ์ที่คุณต้องการสมัคร
  3. 3คัดลอก webhook secret — จะแสดงเพียงครั้งเดียว
  4. 4ในเซิร์ฟเวอร์ของคุณ ตรวจสอบส่วนหัว X-SID-Signature ก่อนประมวลผล
  5. 5ส่งคืน HTTP 2xx ภายใน 10 วินาที การส่งที่ล้มเหลวจะลองใหม่สูงสุด 3 ครั้ง หลังจากส่งล้มเหลวติดต่อกัน 5 ครั้ง webhook จะถูกปิดใช้งานโดยอัตโนมัติ