ข้ามไปยังเนื้อหาหลัก
s.id Logo
แพลตฟอร์มนักพัฒนา

Webhooks

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

ภาพรวม

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

POST

การส่งข้อมูล JSON

10s

หมดเวลาการตอบกลับ

2xx

การตอบกลับสำเร็จ

นโยบายการลองใหม่และความปลอดภัย

  • เหตุการณ์ที่ล้มเหลวจะถูกลองทั้งหมดไม่เกินสามครั้ง โดยเว้นช่วง 0, 5 และ 30 วินาที
  • หลังจากเหตุการณ์ล้มเหลวติดต่อกันห้าครั้ง webhook จะถูกปิดใช้งานโดยอัตโนมัติ
  • ตรวจสอบลายเซ็นกับเนื้อหาคำขอดิบที่ตรงกันทุกประการก่อนแยกวิเคราะห์ JSON

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

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

link.created

ทำงานเมื่อสร้างลิงก์ใหม่

link.updated

ทำงานเมื่อ URL หรือชื่อลิงก์เปลี่ยนแปลง

link.archived

ทำงานเมื่อลิงก์ถูกเก็บเข้าคลัง

link.clicked

ทำงานทุกครั้งที่เปลี่ยนเส้นทาง (หนึ่งเหตุการณ์ต่อหนึ่งคลิก)

microsite.published

ทำงานเมื่อเผยแพร่ microsite

qr.scanned

ทำงานเมื่อสแกนคิวอาร์โค้ด

โครงสร้าง Payload

ทุก webhook POST มีเนื้อหา JSON พร้อมชื่อเหตุการณ์ ทรัพยากรที่เกี่ยวข้อง และ timestamp UTC

application/json
{
  "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-Event
ชื่อเหตุการณ์
X-SID-Signature
ลายเซ็น sha256=<hmac-hex>
X-SID-Delivery-ID
รหัสการส่งที่ไม่ซ้ำกัน
User-Agent
s.id-Webhooks/1.0

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

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

ตรวจสอบลายเซ็นเสมอก่อนประมวลผลเหตุการณ์ อย่าเชื่อถือ payload โดยไม่ตรวจสอบ HMAC
Node.js
const crypto = require('node:crypto');

function verifySignature(secret, rawBody, sigHeader) {
  if (typeof sigHeader !== 'string' || !sigHeader.startsWith('sha256=')) {
    return false;
  }

  const expected = 'sha256=' +
    crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  const receivedBuffer = Buffer.from(sigHeader, 'utf8');
  const expectedBuffer = Buffer.from(expected, 'utf8');

  return receivedBuffer.length === expectedBuffer.length &&
    crypto.timingSafeEqual(receivedBuffer, expectedBuffer);
}
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 จะถูกปิดใช้งานโดยอัตโนมัติ

เพิ่ม Webhook

พร้อมเริ่มสร้างแล้วหรือยัง?

สร้าง API key ในไม่กี่นาที มีแพ็กเกจฟรี, ไม่ต้องใช้บัตรเครดิต

รับ API key ของคุณ