API & Webhooks
วิธีเชื่อมระบบของคุณเข้ากับเหตุการณ์การทิป เอกสารนี้บอกตามจริงว่าตอนนี้มีอะไรพร้อมใช้ และอะไรอยู่ในแผน
ภาพรวม
Tipjai เป็นระบบไม่ถือเงิน (non-custodial) เงินวิ่งจากผู้ให้ทิปถึงครีเอเตอร์โดยตรง เหตุการณ์ในระบบจึงเกี่ยวกับวงจรของทิป (รอชำระ → ยืนยัน → แจ้งเตือนบนสตรีม) ไม่ใช่การเคลื่อนเงิน
Auto-confirm webhook live
เมื่อเชื่อม Paynoi (ของเสริม) ธนาคารของคุณยืนยันการรับเงินแล้วยิงเข้ามาที่ Webhook URL เฉพาะของคุณ Tipjai จะจับคู่กับทิปที่รอชำระ ยืนยัน และยิงการ์ดแจ้งเตือนให้อัตโนมัติ
POST https://tipjai.com/api/paynoi/<your-secret>
ตั้งค่าได้ที่ แดชบอร์ด → การยืนยันอัตโนมัติ (Auto-confirm) — Webhook URL ของคุณเป็นความลับเฉพาะตัว อย่าเปิดเผย ระบบยืนยันด้วยการจับคู่ทิปจริง + กันส่งซ้ำ
ฝั่งคุณไม่ต้องเขียนโค้ด เพียงวาง Webhook URL ในแดชบอร์ด Paynoi
Overlay sources live
หน้าจอ overlay ทุกตัวคือ Browser Source สำหรับ OBS เปิดพื้นหลังโปร่งใสให้เอง วางลิงก์แล้วใช้ได้ทันที
/overlay/<token> การ์ดแจ้งเตือนทิป /overlay/<token>/<widget> leaderboard, goal, ticker, chat /countdown?...&overlay=1 นับถอยหลัง / เดบิวต์
Public read API live
REST แบบอ่านอย่างเดียว เปิด CORS ทุก origin คืนเฉพาะข้อมูลสาธารณะ (เหมือนที่เห็นบนหน้าโปรไฟล์) ไม่มีข้อมูลการเงิน/ส่วนตัว และไม่ต้องใช้คีย์
GET /api/v1/creator/<username> GET /api/v1/creator/<username>/leaderboard?period=month&limit=10 GET /api/v1/stats
ตัวอย่าง:
curl https://tipjai.com/api/v1/creator/<username>
{
"username": "...", "display_name": "...", "verified": true,
"category": "vtuber", "total_received": 1850, "supporters": 9,
"socials": { ... }, "tip_url": "https://tipjai.com/..."
}total_received เป็น null ถ้าครีเอเตอร์เลือกซ่อนยอด และ response นี้ไม่แคชเพื่อให้การตั้งค่าความเป็นส่วนตัวมีผลทันที เหมาะกับ overlay บอท หรือแดชบอร์ดของคุณเอง และพร้อมห่อเป็น MCP tool ได้
Outbound webhooks live
ต่อ Catch Hook ของ Zapier, Make หรือ IFTTT จากแดชบอร์ด เมื่อทิปจริงยืนยันแล้ว Tipjai จะส่ง event ที่มีลายเซ็นและลองซ้ำอัตโนมัติหากปลายทางล่ม โดยไม่แตะสถานะเงิน
POST <your catch-hook> Idempotency-Key: <delivery UUID> X-Tipjai-Event: tip.confirmed X-Tipjai-Timestamp: 1787936000 X-Tipjai-Signature: v1=<HMAC-SHA256>
คำนวณ HMAC-SHA256 จากข้อความ timestamp + จุด + raw JSON body ด้วย signing secret ที่แสดงในแดชบอร์ด แล้วเทียบแบบ constant-time ปฏิเสธ timestamp เก่าเกิน 5 นาที และ dedupe ด้วย Idempotency-Key
expected = HMAC_SHA256(secret, timestamp + "." + rawBody)
valid = timingSafeEqual("v1=" + expected, xTipjaiSignature)ระบบลองส่งซ้ำแบบ exponential backoff สูงสุด 10 ครั้งภายใน 24 ชั่วโมง สถานะ queued / retrying / delivered / dead-letter ดูได้จากการ์ด Automation ในแดชบอร์ด