Webhook Uygulama Rehberi

Bir HTTPS URL'si kaydedin ve akıllı para sinyalleri tetiklendiğinde gerçek zamanlı, HMAC imzalı etkinlik bildirimleri alın — sorgulama yok. Bu rehber, kayıt, etkinlik filtreleme, imza doğrulama ve yeniden deneme davranışını kapsar.

Genel Bakış

Sorgulama yerine /v1/confirm veya sinyal akışı yerine, bir webhook kaydedin ve Smart Money API, eşleşen bir sinyal tetiklendiği anda bir etkinliği endpoint'inize POST edecektir. Her teslimat HMAC-SHA256 ile imzalanır, böylece gerçekten bizden geldiğini doğrulayabilirsiniz.

Giden webhook'lar Pro ve Enterprise planlarında mevcuttur.

Bir Webhook Kaydet

POST isteği gönderin /v1/webhooks API anahtarınızı X-API-Key başlığına ekleyin. Gövde dört alan gerektirir:

AlanTürAçıklama
urlstringEtkinlikleri almak için HTTPS endpoint'i (şununla başlamalı https://)
eventsarrayAlınacak etkinlik isimleri, örneğin ["HIGH","MEDIUM","VETO"] veya ["*"]
symbolsarrayFiltrelenecek semboller, örneğin ["BTC","ETH"] veya ["*"]
secretstringİmza sırrınız — en az 16 karakter. Hashlenmiş olarak saklanır; imzaları doğrulamak için ham değeri kendi tarafınızda saklayın.
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 kaydedildi. POST /v1/webhooks/test ile test edin" }

Etkinlik Filtreleri

Teslimatlar, adı ve sembolü kaydınızla eşleşen etkinlikler için tetiklenir. Tipik etkinlik isimleri, onay güven seviyeleri — HIGH, MEDIUM, VETO — artı genel SIGNAL etkinliklerdir. Tüm etkinlikleri veya tüm sembolleri almak için ["*"] kullanın.

Teslimat & Başlıklar

Her teslimat bir HTTP POST JSON gövdesi ve şu başlıklarla birlikte gelir:

BaşlıkDeğer
X-SmartMoney-EventEtkinlik adı (örneğin HIGH)
X-SmartMoney-Signatureİstek gövdesinin HMAC-SHA256 hex özeti (aşağıya bakın)
Content-Typeapplication/json
User-AgentSmartMoneyAPI-Webhook/1.0
Örnek yük
{ "event": "HIGH", "ts": "2026-07-01T18:22:05Z", "symbol": "BTC", "direction": "long", "confidence": "HIGH", "composite": 0.74, "webhook_id": 42 }

Herhangi bir 2xx durum koduyla yanıt verin. 2xx olmayan (veya zaman aşımı) bir yeniden denemeyi tetikler.

İmzaları Doğrulama

İçindeki imza X-SmartMoney-Signature istek gövdesinin HMAC-SHA256 hex özetidir. HMAC anahtarı, kaydettiğiniz sırrın SHA-256 hex özetidir (ham sırrınız sadece bizim tarafımızda hashlenmiş olarak saklanır). Doğrulamak için: anahtarı türetin, ham gövdeyi HMAC ile işleyin ve sabit zamanlı bir kontrolle karşılaştırın. Başarısız olan herhangi bir isteği reddedin.

Python (Flask alıcı)
import hashlib, hmac from flask import Flask, request, abort app = Flask(__name__) MY_SECRET = "a-long-random-secret-16-plus-chars" # kaydettiğiniz değer @app.post("/webhooks/smartmoney") def receive(): raw = request.get_data() # gövdenin tam baytları sig = request.headers.get("X-SmartMoney-Signature", "") key = hashlib.sha256(MY_SECRET.encode()).hexdigest() # HMAC anahtarı = 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() # ... etkinlik["event"], etkinlik["symbol"], etkinlik["composite"] üzerinde işlem yapın ... return "", 200
Node.js (Express alıcı)
import crypto from "crypto"; import express from "express"; const app = express(); const MY_SECRET = "a-long-random-secret-16-plus-chars"; // İmza kontrolünün tam baytları kullanması için ham gövdeyi yakalayın. 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()); // ... etkinlik üzerinde işlem yapın ... res.status(200).end(); });
Doğrulamayı ham, ayrıştırılmamış istek gövdesine karşı yapın — ayrıştırılmış JSON'u yeniden serileştirmek bayt sırasını veya boşlukları değiştirebilir ve kontrolü bozabilir.

Yeniden Denemeler

Endpoint'iniz bir 2xx döndürmezse (veya zaman aşımına uğrarsa — teslimat zaman aşımı 10s'dir), Smart Money API üstel geri çekilme ile en fazla 3 kez yeniden dener (yaklaşık 1s, 4s, sonra 16s). İşleyicinizi idempotent yapın, böylece yeniden teslim edilen bir etkinliği iki kez işlemek güvenli olur.

Gelen Webhook'lar (TradingView)

Ayrıca, bir gelen uyarısını bize gönderebilirsiniz. POST /v1/tradingview/webhook bir TradingView uyarısını alır, onu /confirmüzerinden çalıştırır ve onayı döndürür. TradingView özel başlıklar gönderemediği için, JSON gövdesindeki bir secret alanı ile kimlik doğrular (değil X-API-Key). Gönderin secret, symbolve direction (long/short); isteğe bağlı olarak timeframe, strategyve price.

Gerçek zamanlı sinyalleri bağlamaya hazır mısınız?

API anahtarınızı alın
Ücretsiz başlayın — günde 100 çağrı, kart gerekmez

3 borsadan canlı balina akışı, fonlama, açık pozisyon ve zincir üstü verileri tek bir API'den alın. Ücretsiz katman, kredi kartı gerekmez, istediğiniz zaman yükseltin.

Ücretsiz başlayın →
Canlı API konsolunu deneyin → (hesap gerekmez)
30 saniyede API anahtarınızı alın

Hazır mısınız? Ücretsiz bir API anahtarı alın (günde 100 çağrı, kart gerekmez) ve canlı balina, fonlama ve zincir üstü verileri çekmeye başlayın.

API anahtarınızı alın →