Webhook Implementationsguide

Registrera en HTTPS-URL och ta emot realtidshändelser som skickas med HMAC-signatur när smart-money-signaler aktiveras — ingen avsökning. Denna guide täcker registrering, händelsefiltrering, signaturverifiering och försöksbeteende.

Översikt

Istället för avsökning /v1/confirm eller signalflödet, registrera en webhook så kommer Smart Money API att POST:a en händelse till din slutpunkt när en matchande signal aktiveras. Varje leverans är signerad med HMAC-SHA256 så att du kan verifiera att den verkligen kommer från oss.

Utgående webhooks är tillgängliga på Pro och Enterprise-planerna.

Registrera en Webhook

POST:a till /v1/webhooks med din API-nyckel i X-API-Key rubriken. Brödtexten behöver fyra fält:

FältTypBeskrivning
urlsträngHTTPS-slutpunkt för att ta emot händelser (måste börja med https://)
eventsarrayHändelsenamn att ta emot, t.ex. ["HIGH","MEDIUM","VETO"] eller ["*"]
symbolsarraySymboler att filtrera, t.ex. ["BTC","ETH"] eller ["*"]
secretsträngDin signeringshemlighet — minst 16 tecken. Lagras hashad; behåll det råa värdet på din sida för att verifiera signaturer.
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 Skapad
{ "webhook_id": 42, "url": "https://yourapp.com/webhooks/smartmoney", "events": ["HIGH", "MEDIUM"], "symbols": ["BTC", "ETH"], "message": "Webhook registrerad. Testa med POST /v1/webhooks/test" }

Händelsefilter

Leveranser aktiveras för händelser vars namn och symbol matchar din registrering. Typiska händelsenamn är bekräftelsekonfidensbuckets — HIGH, MEDIUM, VETO — plus generiska SIGNAL händelser. Använd ["*"] för att ta emot alla händelser eller alla symboler.

Leverans & Rubriker

Varje leverans är en HTTP POST med en JSON-brödtext och dessa rubriker:

RubrikVärde
X-SmartMoney-EventHändelsenamnet (t.ex. HIGH)
X-SmartMoney-SignatureHMAC-SHA256 hex-digest av förfrågansbrödtexten (se nedan)
Content-Typeapplication/json
User-AgentSmartMoneyAPI-Webhook/1.0
Exempel på nyttolast
{ "event": "HIGH", "ts": "2026-07-01T18:22:05Z", "symbol": "BTC", "direction": "long", "confidence": "HIGH", "composite": 0.74, "webhook_id": 42 }

Svara med vilken 2xx status som helst för att bekräfta. Icke-2xx (eller en timeout) utlöser ett nytt försök.

Verifiera Signaturer

Signaturen i X-SmartMoney-Signature är en HMAC-SHA256 hex-digest av förfrågansbrödtexten. Den HMAC-nyckeln är SHA-256 hex-digest av hemligheten du registrerade (din råa hemlighet lagras endast hashad på vår sida). För att verifiera: härled nyckeln, HMAC:a råbrödtexten och jämför med en konstant-tidskontroll. Avvisa alla förfrågningar som misslyckas.

Python (Flask-mottagare)
import hashlib, hmac from flask import Flask, request, abort app = Flask(__name__) MY_SECRET = "a-long-random-secret-16-plus-chars" # värdet du registrerade @app.post("/webhooks/smartmoney") def receive(): raw = request.get_data() # exakta byte av brödtexten sig = request.headers.get("X-SmartMoney-Signature", "") key = hashlib.sha256(MY_SECRET.encode()).hexdigest() # HMAC-nyckel = 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() # ... agera på event["event"], event["symbol"], event["composite"] ... return "", 200
Node.js (Express-mottagare)
import crypto from "crypto"; import express from "express"; const app = express(); const MY_SECRET = "a-long-random-secret-16-plus-chars"; // Fånga råbrödtexten så att signaturkontrollen använder exakta byte. 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()); // ... agera på event ... res.status(200).end(); });
Verifiera mot rå, oparsad förfrågansbrödtext — omparsning av JSON kan ändra byteordning eller mellanrum och bryta kontrollen.

Försök igen

Om din slutpunkt inte returnerar en 2xx (eller timeoutar — leveranstimeouten är 10s), försöker Smart Money API igen upp till 3 gånger med exponentiell backoff (ungefär 1s, 4s, sedan 16s). Gör din hanterare idempotent så att en omlevererad händelse är säker att bearbeta två gånger.

Inkommande Webhooks (TradingView)

Separat kan du skicka en inkommande varning till oss. POST /v1/tradingview/webhook tar emot en TradingView-varning, kör den genom /confirm, och returnerar bekräftelsen. Eftersom TradingView inte kan skicka anpassade rubriker, autentiserar den via ett secret fält i JSON-brödtexten (inte X-API-Key). Skicka secret, symbol, och direction (long/short); valfritt timeframe, strategy, och price.

Redo att koppla upp realtidssignaler?

Hämta din API-nyckel
Börja gratis — 200 anrop/dag, inget kort

Få live-valflöde, finansiering, öppet intresse och on-chain-data över 3 börser från ett API. Gratis nivå, inget kreditkort, uppgradera när som helst.

Börja gratis →
Prova live API-konsolen → (inget konto behövs)
Hämta din API-nyckel på 30 sekunder

Redo att bygga? Hämta en gratis API-nyckel (200 anrop/dag, inget kort) och börja hämta live-val, finansiering och on-chain-data.

Hämta din API-nyckel →