वेबहुक कार्यान्वयन गाइड

एक HTTPS URL पंजीकृत करें और रियल-टाइम में HMAC-साइन्ड इवेंट पुश प्राप्त करें जब स्मार्ट-मनी सिग्नल फायर होते हैं — कोई पोलिंग नहीं। यह गाइड पंजीकरण, इवेंट फिल्टरिंग, सिग्नेचर वेरिफिकेशन और पुनः प्रयास व्यवहार को कवर करती है।

अवलोकन

पोलिंग करने के बजाय /v1/confirm या सिग्नल फीड, एक वेबहुक पंजीकृत करें और Smart Money API आपके एंडपॉइंट पर एक इवेंट POST करेगा जब कोई मिलान करने वाला सिग्नल फायर होता है। प्रत्येक डिलीवरी HMAC-SHA256 के साथ साइन्ड होती है ताकि आप वेरिफाई कर सकें कि यह वास्तव में हमारी तरफ से आई है।

आउटबाउंड वेबहुक उपलब्ध हैं Pro और Enterprise प्लान्स पर।

वेबहुक पंजीकृत करें

POST करें /v1/webhooks पर अपने API की के साथ X-API-Key हेडर में। बॉडी में चार फील्ड्स की आवश्यकता है:

फील्डप्रकारविवरण
urlस्ट्रिंगइवेंट प्राप्त करने के लिए HTTPS एंडपॉइंट (जो https://)
eventsऐरेप्राप्त करने के लिए इवेंट नाम, जैसे ["HIGH","MEDIUM","VETO"] या ["*"]
symbolsऐरेफिल्टर करने के लिए सिंबल्स, जैसे ["BTC","ETH"] या ["*"]
secretस्ट्रिंगआपका साइनिंग सीक्रेट — कम से कम 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 इवेंट्स। उपयोग करें ["*"] सभी इवेंट्स या सभी सिंबल्स प्राप्त करने के लिए।

डिलीवरी और हेडर्स

प्रत्येक डिलीवरी एक HTTP POST होती है जिसमें JSON बॉडी और ये हेडर्स होते हैं:

हेडरवैल्यू
X-SmartMoney-Eventइवेंट का नाम (उदाहरण के लिए HIGH)
X-SmartMoney-Signatureरिक्वेस्ट बॉडी का HMAC-SHA256 हेक्स डाइजेस्ट (नीचे देखें)
Content-Typeapplication/json
User-AgentSmartMoneyAPI-Webhook/1.0
उदाहरण पेलोड
{ "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 हेक्स डाइजेस्ट है। HMAC की SHA-256 हेक्स डाइजेस्ट है जिसे आपने रजिस्टर किया था (आपका रॉ सीक्रेट केवल हमारे पास हैश्ड स्टोर होता है)। वेरिफाई करने के लिए: की डेरिव करें, रॉ बॉडी को HMAC करें, और कॉन्स्टेंट-टाइम चेक से तुलना करें। फेल होने वाली किसी भी रिक्वेस्ट को रिजेक्ट करें।

Python (Flask रिसीवर)
import hashlib, hmac from flask import Flask, request, abort app = Flask(__name__) MY_SECRET = "a-long-random-secret-16-plus-chars" # the value you registered @app.post("/webhooks/smartmoney") def receive(): raw = request.get_data() # exact bytes of the body sig = request.headers.get("X-SmartMoney-Signature", "") key = hashlib.sha256(MY_SECRET.encode()).hexdigest() # HMAC key = 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() # ... act on 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"; // Capture the raw body so the signature check uses the exact bytes. 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()); // ... act on event ... res.status(200).end(); });
के खिलाफ वेरिफाई करें रॉ, अनपार्स्ड रिक्वेस्ट बॉडी — पार्स किए गए JSON को दोबारा सीरियलाइज़ करने से बाइट ऑर्डर या स्पेसिंग बदल सकती है और चेक फेल हो सकता है।

रिट्राइज़

अगर आपका एंडपॉइंट कोई 2xx (या टाइमआउट — डिलीवरी टाइमआउट 10s है), Smart Money API 3 बार रिट्राइ करेगा एक्सपोनेंशियल बैकऑफ के साथ (लगभग 1s, 4s, फिर 16s)। अपने हैंडलर को इडेम्पोटेंट बनाएं ताकि री-डिलीवर की गई इवेंट को दोबारा प्रोसेस करना सुरक्षित हो।

इनबाउंड वेबहुक्स (TradingView)

अलग से, आप एक इनबाउंड अलर्ट हमें भेज सकते हैं। POST /v1/tradingview/webhook एक TradingView अलर्ट प्राप्त करता है, इसे /confirmके माध्यम से चलाता है, और कन्फर्मेशन रिटर्न करता है। क्योंकि TradingView कस्टम हेडर्स नहीं भेज सकता, यह JSON बॉडी में एक secret फील्ड के माध्यम से ऑथेंटिकेट करता है (न कि X-API-Key)। भेजें secret, symbol, और direction (long/short); वैकल्पिक रूप से timeframe, strategy, और price.

रियल-टाइम सिग्नल्स को वायर अप करने के लिए तैयार हैं?

अपना API की प्राप्त करें
मुफ्त में शुरू करें — 100 कॉल्स/दिन, कोई कार्ड नहीं

एक API से 3 एक्सचेंजेज पर लाइव व्हेल फ्लो, फंडिंग, ओपन इंटरेस्ट और ऑन-चेन डेटा प्राप्त करें। फ्री टियर, कोई क्रेडिट कार्ड नहीं, कभी भी अपग्रेड करें।

मुफ्त में शुरू करें →
लाइव API कंसोल आज़माएं → (कोई अकाउंट नहीं चाहिए)
30 सेकंड में अपना API की प्राप्त करें

बिल्ड करने के लिए तैयार हैं? एक मुफ्त API की प्राप्त करें (100 कॉल्स/दिन, कोई कार्ड नहीं) और लाइव व्हेल, फंडिंग और ऑन-चेन डेटा पुल करना शुरू करें।

अपना API की प्राप्त करें →