คู่มือการใช้งาน Webhook

ลงทะเบียน URL แบบ HTTPS และรับการ推送 เหตุการณ์ที่ลงลายเซ็น HMAC แบบเรียลไทม์เมื่อสัญญาณ smart-money ทำงาน — ไม่ต้อง polling คู่มือนี้ครอบคลุมการลงทะเบียน การกรองเหตุการณ์ การตรวจสอบลายเซ็น และพฤติกรรมการลองส่งใหม่

ภาพรวม

แทนที่จะใช้การ polling /v1/confirm หรือฟีดสัญญาณ ให้ลงทะเบียน webhook และ Smart Money API จะ POST เหตุการณ์ไปยัง endpoint ของคุณทันทีที่สัญญาณที่ตรงกันทำงาน ทุกการส่งข้อมูลจะลงลายเซ็นด้วย HMAC-SHA256 เพื่อให้คุณสามารถยืนยันได้ว่าเป็นข้อมูลจากเราจริงๆ

Webhook ขาอื่นมีให้บริการในแผน Pro และ Enterprise

ลงทะเบียน Webhook

POST ไปที่ /v1/webhooks ด้วย API key ของคุณในส่วนหัว X-API-Key ส่วนหัว เนื้อหาต้องการสี่ฟิลด์:

ฟิลด์ประเภทคำอธิบาย
urlstringendpoint HTTPS เพื่อรับเหตุการณ์ (ต้องเริ่มต้นด้วย https://)
eventsarrayชื่อเหตุการณ์ที่จะรับ เช่น ["HIGH","MEDIUM","VETO"] หรือ ["*"]
symbolsarrayสัญลักษณ์เพื่อกรอง เช่น ["BTC","ETH"] หรือ ["*"]
secretstringรหัสลับสำหรับการลงลายเซ็นของคุณ — อย่างน้อย 16 ตัวอักษรจัดเก็บในรูปแบบแฮช; เก็บค่าดิบไว้ที่ฝั่งคุณเพื่อตรวจสอบลายเซ็น
cURL
curl -X POST https://api.smartmoneyapi.com/v1/webhooks \ -H "X-API-Key: sm_your_key" \ -H "Content-Type: application/json" \ -d '{ "url": "https://yourapp.com/webhooks/smartmoney", "events": ["HIGH", "MEDIUM"], "symbols": ["BTC", "ETH"], "secret": "a-long-random-secret-16-plus-chars" }'
201 Created
{ "webhook_id": 42, "url": "https://yourapp.com/webhooks/smartmoney", "events": ["HIGH", "MEDIUM"], "symbols": ["BTC", "ETH"], "message": "Webhook registered. Test with POST /v1/webhooks/test" }

ตัวกรองเหตุการณ์

การส่งข้อมูลจะทำงานสำหรับเหตุการณ์ที่ชื่อและสัญลักษณ์ตรงกับการลงทะเบียนของคุณ ชื่อเหตุการณ์ทั่วไปคือกลุ่มความมั่นใจในการยืนยัน — HIGH, MEDIUM, VETO — รวมถึงเหตุการณ์ทั่วไป SIGNAL events ใช้ ["*"] เพื่อรับเหตุการณ์ทั้งหมดหรือสัญลักษณ์ทั้งหมด

การส่งข้อมูลและส่วนหัว

แต่ละการส่งข้อมูลคือ HTTP POST ด้วยเนื้อหา JSON และส่วนหัวเหล่านี้:

ส่วนหัวค่า
X-SmartMoney-Eventชื่อเหตุการณ์ (เช่น HIGH)
X-SmartMoney-SignatureHMAC-SHA256 hex digest ของเนื้อหาคำขอ (ดูด้านล่าง)
Content-Typeapplication/json
User-AgentSmartMoneyAPI-Webhook/1.0
ตัวอย่าง payload
{ "event": "HIGH", "ts": "2026-07-01T18:22:05Z", "symbol": "BTC", "direction": "long", "confidence": "HIGH", "composite": 0.74, "webhook_id": 42 }

ตอบกลับด้วยสถานะ 2xx ใดๆ เพื่อยืนยัน การไม่ใช่ 2xx (หรือการหมดเวลา) จะทำให้มีการลองส่งใหม่

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

ลายเซ็นใน X-SmartMoney-Signature คือ HMAC-SHA256 hex digest ของเนื้อหาคำขอ คีย์ HMAC คือ SHA-256 hex digest ของรหัสลับที่คุณลงทะเบียน (รหัสลับดิบของคุณจะถูกเก็บในรูปแบบแฮชที่ฝั่งเราเท่านั้น) เพื่อตรวจสอบ: หาคีย์, HMAC เนื้อหาดิบ และเปรียบเทียบกับการตรวจสอบแบบคงที่เวลา ปฏิเสธคำขอใดๆ ที่ล้มเหลว

Python (ตัวรับ Flask)
import hashlib, hmac from flask import Flask, request, abort app = Flask(__name__) MY_SECRET = "a-long-random-secret-16-plus-chars" # ค่าที่คุณลงทะเบียน @app.post("/webhooks/smartmoney") def receive(): raw = request.get_data() # ไบต์ที่แน่นอนของเนื้อหา sig = request.headers.get("X-SmartMoney-Signature", "") key = hashlib.sha256(MY_SECRET.encode()).hexdigest() # คีย์ HMAC = sha256(secret) hex expected = hmac.new(key.encode(), raw, hashlib.sha256).hexdigest() if not hmac.compare_digest(expected, sig): abort(401) event = request.get_json() # ... กระทำกับ event["event"], event["symbol"], event["composite"] ... return "", 200
Node.js (ตัวรับ Express)
import crypto from "crypto"; import express from "express"; const app = express(); const MY_SECRET = "a-long-random-secret-16-plus-chars"; // จับเนื้อหาดิบเพื่อให้การตรวจสอบลายเซ็นใช้ไบต์ที่แน่นอน app.post("/webhooks/smartmoney", express.raw({ type: "*/*" }), (req, res) => { const sig = req.get("X-SmartMoney-Signature") || ""; const key = crypto.createHash("sha256").update(MY_SECRET).digest("hex"); const expected = crypto.createHmac("sha256", key).update(req.body).digest("hex"); const ok = expected.length === sig.length && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig)); if (!ok) return res.status(401).end(); const event = JSON.parse(req.body.toString()); // ... กระทำกับ event ... res.status(200).end(); });
ตรวจสอบกับ เนื้อหาดิบที่ยังไม่ได้แยกวิเคราะห์ เนื้อหาคำขอ — การจัดลำดับ JSON ที่แยกวิเคราะห์แล้วใหม่สามารถเปลี่ยนลำดับไบต์หรือช่องว่างและทำให้การตรวจสอบล้มเหลว

การลองส่งใหม่

หาก endpoint ของคุณไม่ตอบกลับด้วยสถานะ 2xx (หรือหมดเวลา — ระยะเวลาส่งข้อมูลคือ 10 วินาที) Smart Money API จะลองส่งใหม่สูงสุด 3 ครั้งด้วย exponential backoff (ประมาณ 1 วินาที, 4 วินาที, แล้ว 16 วินาที) ทำให้ handler ของคุณเป็น idempotent เพื่อให้เหตุการณ์ที่ส่งมาซ้ำสามารถประมวลผลได้สองครั้งอย่างปลอดภัย

Webhook ขาเข้า (TradingView)

แยกกัน คุณสามารถส่ง ขาเข้า การแจ้งเตือนมาที่เรา POST /v1/tradingview/webhook รับการแจ้งเตือนจาก TradingView เรียกใช้งานผ่าน /confirmและส่งกลับการยืนยัน เนื่องจาก TradingView ไม่สามารถส่งส่วนหัวที่กำหนดเองได้ จึงตรวจสอบสิทธิ์ผ่าน secret ฟิลด์ในเนื้อหา JSON (ไม่ใช่ X-API-Key) ส่ง secret, symbolและ direction (long/short); เลือกได้ timeframe, strategyและ price.

พร้อมที่จะเชื่อมต่อสัญญาณแบบเรียลไทม์หรือยัง?

รับ API key ของคุณ
เริ่มต้นฟรี — 100 ครั้ง/วัน ไม่ต้องใช้บัตร

รับข้อมูลการไหลของวาฬ เงินทุน ดอกเบี้ยเปิด และข้อมูล on-chain จาก 3 exchange จาก API เดียว ระดับฟรี ไม่ต้องใช้บัตรเครดิต อัพเกรดได้ทุกเมื่อ

เริ่มต้นฟรี →
ลองใช้คอนโซล API แบบสด → (ไม่จำเป็นต้องมีบัญชี)
รับ API key ของคุณภายใน 30 วินาที

พร้อมที่จะสร้างหรือยัง? รับ API key ฟรี (100 ครั้ง/วัน ไม่ต้องใช้บัตร) และเริ่มดึงข้อมูลวาฬ เงินทุน และ on-chain แบบสด

รับ API key ของคุณ →