Smart Money API
Une API d'intelligence professionnelle qui agrège les données dérivées, les métriques on-chain et l'activité des portefeuilles de baleines en un seul score de confiance pour votre bot de trading.
https://api.smartmoneyapi.com/v1Principes de conception
Quatre idées façonnent chaque point de terminaison et chaque score renvoyé par cette API. Ce sont aussi les limites honnêtes de ce qu'elle promet — et ne promet pas.
Stratégie d'abord, pas signal d'abord. Ce n'est pas un flux de signaux d'achat/vente. Vous apportez la stratégie et l'entrée ; l'API vous dit si la structure du marché environnante — positionnement dérivé, financement, intérêt ouvert, liquidations, flux on-chain et consensus des baleines — est en accord avec le trade que vous souhaitez déjà prendre.
Score de confiance, pas de prédiction binaire. Chaque réponse porte une note confidence (HAUT / MOYEN / BAS) et un composite de -1.0 à +1.0. Il n'y a aucune garantie et aucun appel d'oracle — vous obtenez une lecture calibrée de l'accord, avec les raisons qui le sous-tendent, afin que vous puissiez ajuster proportionnellement à la conviction.
Support de décision, pas de conseil d'exécution. L'API renvoie une recommandation CONFIRMER / RÉDUIRE / SAUTER et un multiplicateur de taille pour votre logique à appliquer. Elle ne passe jamais d'ordres, et rien ici n'est un conseil financier. Vous restez responsable du risque, de la taille et de l'exécution.
Métriques vivantes, pas de garanties fixes. Les taux de réussite, les statistiques de régime et les chiffres de précision sont calculés à partir d'un échantillon mobile et évoluent avec les marchés. Nous les publions honnêtement, y compris lorsqu'ils sont médiocres. Considérez chaque métrique comme une observation actuelle, pas une promesse sur l'avenir.
Pour qui cette API est-elle conçue ?
Cette API est conçue pour les développeurs de bots, algorithmes et agents IA en crypto qui ont déjà un signal long/court — provenant d'une stratégie TA, d'un modèle ML, d'un pipeline Freqtrade, d'une alerte TradingView ou d'un agent LLM — et qui souhaitent une décision rapide avant trade CONFIRMER / RÉDUIRE / SAUTER avant d'engager du capital.
Une boucle typique : votre stratégie déclenche "aller long sur BTC" → vous appelez GET /v1/confirm?symbol=BTC&direction=long → vous confirmez, réduisez ou sautez l'entrée et ajustez la taille par size_mult. Un appel, une seule réponse JSON à faible latence, aucune infrastructure supplémentaire.
Ce n'est pas un générateur de signaux autonome, un produit de charting ou un lieu d'exécution. Si vous n'avez pas de signal propre à filtrer, commencez par la page de performance pour voir comment le score s'est comporté avant de l'intégrer dans un bot en direct.
Obtenir l'accès
1 — Inscrivez-vous. Créez un compte gratuit sur inscription (email/mot de passe ou Google). Aucune carte de crédit n'est requise pour le niveau gratuit.
2 — Ouvrez votre tableau de bord. Votre tableau de bord affiche votre clé API, votre plan actuel et votre utilisation en direct par rapport à votre quota quotidien.
3 — Copiez votre clé API. Les clés sont préfixées sm_. Passez-la en tant que X-API-Key en-tête sur chaque requête (voir Authentification). Mettez à niveau à tout moment sur le page de tarification pour augmenter les limites et débloquer plus de symboles et de points de terminaison.
Spec, SDK & Guide
Tout ce dont vous avez besoin pour intégrer rapidement, que vous écriviez le code vous-même ou le confiiez à un agent de codage.
| Ressource | Ce que c'est |
|---|---|
| Guide | Recettes à copier-coller pour les intégrations les plus courantes — confirmer avant l'entrée, filtrer un signal Freqtrade, dimensionner par multiplicateur, gérer les erreurs 402/429, et l'intégrer à un agent de codage. |
| Spécification OpenAPI | Définition OpenAPI lisible par machine de chaque point de terminaison. Importez dans Postman/Insomnia, générez des clients ou alimentez un LLM. À github.com/tashiardit/smartmoneyapi-docs. |
| Client Python | Bibliothèque cliente Python officielle sur github.com/tashiardit/smartmoneyapi-python. |
| /llms.txt | Un résumé en texte brut de l'API adapté aux LLM. Pointez Claude, Codex ou Cursor dessus (voir Agents de Codage). |
Démarrage rapide en 2 minutes
Étape 1 — URL de base. Chaque point de terminaison se trouve sous :
Étape 2 — Obtenez votre clé API. Inscrivez-vous gratuitement (aucune carte de crédit requise) et copiez votre clé depuis le tableau de bord. Passez-la dans l'en-tête X-API-Key pour chaque requête.
Étape 3 — Votre premier appel. Collez ceci dans votre terminal et remplacez sm_your_key par la clé de votre tableau de bord :
Réponse attendue :
"ts": 1710940821,
"symbol": "BTC",
"direction": "long",
"composite": 0.74,
"confidence": "HIGH",
"action": "CONFIRM",
"size_mult": 1.5,
"deriv_score": 0.81,
"onchain_score": 0.68,
"whale_score": 0.73,
"reasons": ["Taux de financement positif sur toutes les plateformes", "Baleines : consensus long à 67%"]
}
Quand confidence est HIGH ou MEDIUM et action est CONFIRM, ajustez la taille de votre position par size_mult. C'est toute la boucle d'intégration. Voir Champs de Réponse pour la référence complète des champs.
Authentification
Toutes les requêtes nécessitent une clé API passée dans l'en-tête X-API-Key HTTP.
Votre clé API est disponible sur le tableau de bord après inscription. Gardez votre clé secrète — ne l'exposez pas dans du code côté client ou des dépôts publics.
/v1/ws/ticket avec l'en-tête X-API-Key , puis connectez-vous avec le ticket retourné. Voir Authentification WebSocket (tickets).Connexion Google (Firebase Auth)
Les utilisateurs peuvent s'authentifier avec leur compte Google via Firebase Authentication. Après une connexion Google réussie côté client, échangez le jeton d'ID Firebase contre une session API liée. Le système synchronise automatiquement votre identité Google avec le système de clé API.
Corps de la Requête
| Champ | Type | Description |
|---|---|---|
| id_tokenrequis | string | Jeton d'ID Firebase obtenu après connexion Google côté client |
Exemple de Réponse
"api_key": "sm_your_linked_key",
"uid": "firebase_uid_abc123",
"email": "[email protected]",
"plan": "trader",
"synced": true
}
Limites de Taux
| Plan | Appels/Jour | Limite de Rafale | Délai de Données |
|---|---|---|---|
| Gratuit | 50 | 2/min | 60 secondes |
| Trader | 1,000 | 20/min | Temps réel |
| Pro | 5,000 | 60/min | Temps réel |
| Entreprise | 100,000 | 400/min | Temps réel |
Les en-têtes de limite de taux sont inclus dans chaque réponse : X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
URL de base
Tous les points de terminaison ci-dessous sont relatifs à cette URL de base. Toutes les réponses sont au format JSON avec Content-Type: application/json.
Erreurs
Les erreurs utilisent des codes de statut HTTP standard et un corps JSON cohérent. Toujours baser la décision sur le code de statut, et non sur le texte de la réponse. Les trois que vous rencontrerez le plus souvent :
| Statut | Code | Signification et que faire |
|---|---|---|
| 401 | non autorisé | Clé API manquante ou invalide. Vérifiez que l' X-API-Key en-tête est présent et correct. |
| 402 | paiement_requis | Le point de terminaison ou le symbole nécessite un plan supérieur à celui de votre clé (par exemple, une clé gratuite appelant le flux WebSocket). Mettez à niveau ou revenez à un point de terminaison public. |
| 429 | limite_de_taux_dépassée | Limite quotidienne ou de rafale atteinte. Reculez et réessayez après X-RateLimit-Reset; ne pas insister. |
Chaque erreur renvoie la même forme :
"error": "rate_limit_exceeded",
"message": "Limite quotidienne de 50 appels atteinte. Réinitialisation à 00:00 UTC.",
"status": 429
}
Pour la liste complète des codes de statut (400 / 403 / 500 / 503 et plus), consultez Codes d'erreur. Une intégration robuste traite les 5xx et 429 comme transitoires (réessayer avec recul) et 401/402/403 comme terminaux (corriger la clé ou le plan).
Meilleures pratiques de sécurité
Envoyez la clé dans l'en-tête, jamais dans l'URL. Toujours passer X-API-Key comme en-tête HTTP. Les clés dans les chaînes de requête (?key=) sont enregistrées par les proxies, les répartiteurs de charge et l'historique du navigateur — l'ancien ?key= auth n'est plus accepté sur les points de terminaison WebSocket pour cette raison précise.
Gardez les clés côté serveur. Ne jamais intégrer une clé API dans du JavaScript côté client, un bundle d'application mobile ou un référentiel public. Chargez-la à partir d'une variable d'environnement ou d'un gestionnaire de secrets. Si une clé fuit, faites-la pivoter.
Faites pivoter les clés périodiquement. Regénérez votre clé depuis le tableau de bord selon un calendrier et immédiatement si vous soupçonnez une exposition. L'ancienne clé cesse de fonctionner au moment où une nouvelle est émise.
Utilisez des tickets pour les sockets navigateurs. Pour les flux en temps réel depuis le navigateur, échangez votre clé contre un ticket à usage unique plutôt que de vous connecter avec la clé brute — voir Authentification WebSocket (tickets).
Utilisation avec des agents de codage / LLMs
Vous construisez avec Claude Code, Codex, Cursor ou tout agent de codage LLM ? Vous pouvez donner à l'agent tout ce dont il a besoin pour connecter correctement cette API en une seule fois. Deux références lisibles par machine sont publiées :
| Ressource | URL |
|---|---|
| Résumé LLM | https://smartmoneyapi.com/llms.txt |
| Spécification OpenAPI | github.com/tashiardit/smartmoneyapi-docs |
Dirigez votre agent vers le /llms.txt fichier (la convention llms.txt) pour un aperçu concis, puis la spécification OpenAPI pour les formes exactes des requêtes/réponses. Une invite en une ligne qui fonctionne bien :
Lisez https://smartmoneyapi.com/llms.txt et la spécification OpenAPI à
github.com/tashiardit/smartmoneyapi-docs, puis ajoutez une vérification pré-trade
à mon bot qui appelle GET /v1/confirm et saute les entrées
sauf si l'action est CONFIRM.
Voir le Livre de cuisine pour une recette détaillée d'agent de codage.
Points de terminaison
GET /confirm
Le point de terminaison principal. Renvoie un score de confiance composite et une recommandation d'action pour une direction de trade donnée. Appelez ceci avant d'entrer dans toute position.
Couverture, en termes simples. /confirm actuellement évalue BTC, ETH et SOL — les symboles avec suffisamment d'historique résolu pour confirmer honnêtement. Le screener de dérivés surveille séparément ~519 marchés de dérivés pour les données de financement, d'OI et de liquidation, et le suivi des baleines couvre plus de 600 portefeuilles. Pro débloque le screener complet, les exports et une couverture de marché plus large ; /confirm le support des symboles est étendu à mesure que chaque marché accumule un historique fiable.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symbolerequis | chaîne | Symbole d'actif. Un parmi : BTC, ETH, SOL (Trader+) |
| directionrequis | chaîne | Direction du trade : long ou short |
| sourceoptionnel | chaîne | Étiquette pour votre source de signal (enregistrée pour l'analyse). Max 32 caractères. |
Exemple de requête
"https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long"
Exemple de réponse
"ts": 1710940821,
"symbol": "BTC",
"direction": "long",
"composite": 0.74,
"confidence": "HIGH",
"action": "CONFIRM_FULL",
"size_mult": 1.5,
deriv_score: 0.81,
onchain_score: 0.68,
whale_score: 0.73,
x_score: 0.0,
facteurs: {
produits dérivés: { score: 0.81, pondération: 0.40, pondéré: 0.324 },
onchain: { score: 0.68, pondération: 0.35, pondéré: 0.238, source: coinmetrics, disponible: True },
baleine: { score: 0.73, pondération: 0.25, facteur_dépassement: 1.0, pondéré: 0.183 }
},
ajustements: { concordance: 0.0, tendance: 0.0, actualités_macro: 0.0 },
pondérations: { produits dérivés: 0.40, onchain: 0.35, whale_intel: 0.25 },
couverture: { dérivés: true, baleine: true, onchain: true },
raisons: [
Taux de financement positif sur toutes les plateformes,
LSR favorise les longs : 1.42,
Baleines : consensus à 67% long,
MVRV supérieur à 1.0 — indicateur on-chain haussier
]
}
Transparent par conception. Chaque réponse inclut un factors objet montrant le score × poids = contribution pondérée de chaque composante, un objet pour ajustements post-filtre, les adjustments utilisés, et une weights carte. La composante on-chain utilise coverage les données gratuites de Coin Metrics (MVRV / flux d'échange / adresses actives) quand aucune clé Glassnode n'est définie. Il s'agit d'un score de confluence multifactorielle — aide à la décision, pas un taux de réussite garanti. Les symboles non suivis sont honnêtes..
Un symbole hors de l'univers suivi (dérivés/baleines) renvoie une réponse explicite avec "confidence":"NO_DATA" / "action":"NO_DATA_SKIP" — jamais une valeur "unsupported":true fabriquée. LOW.
Champs de réponse
| Champ | Type | Description |
|---|---|---|
| ts | integer | Horodatage Unix du calcul |
| symbol | string | Symbole de l'actif (BTC/ETH/SOL) |
| direction | string | Direction demandée (long/short) |
| composite | float | Score composite de confluence de -1.0 (contre extrême) à +1.0 (confirmation forte). Ne correspond pas à un taux de réussite. |
| base_composite | float | Composite avant l'application des ajustements post-filtre |
| confidence | string | HIGH / MEDIUM / LOW / VETO / NO_DATA |
| action | string | CONFIRM_FULL / CONFIRM_REDUCED / CONFIRM_MINIMAL / VETO_SKIP / NO_DATA_SKIP |
| size_mult | float | Multiplicateur de taille de position suggéré (ex. 0.0 – 1.5) |
| unsupported | bool | true lorsque le symbole n'est pas couvert (associé à NO_DATA) |
| deriv_score | float | Sous-score dérivés (-1 à 1) |
| onchain_score | float | Sous-score on-chain (-1 à 1) |
| whale_score | float | Sous-score consensus des baleines (-1 à 1) |
| x_score | float | Sous-score X/sentiment social (-1 à 1) ; 0 si non utilisé |
| factors | object | Détail par composante : score × weight = weighted pour les dérivés / onchain / baleines / x_sentiment (onchain inclut source) |
| adjustments | object | Ajustements post-filtre signés (accord, tendance, rsi_1h, news_macro, momentum, time_of_day, streak_decay) |
| weights | object | Jeu de poids réellement utilisé pour cette évaluation |
| coverage | object | {derivatives, whale, onchain} — quelles composantes avaient des données réelles |
| reasons | array | Explications lisibles par un humain pour le score |
GET /snapshot
Retourne un instantané complet du marché incluant tous les sous-scores, métriques brutes et valeurs d'indicateurs pour un symbole donné. Utile pour les tableaux de bord et la journalisation.
GET /onchain
Retourne des métriques brutes on-chain : MVRV, SOPR, flux net des exchanges, ratio de capitalisation réalisée et classification de position cyclique.
GET /v1/derivatives/*
Screener de dérivés multi-exchange pour 500+ symboles : heatmap des taux de funding, classement de l'open interest et détection de signaux long/short ratio. Les 10 premières lignes sont publiques ; le screener complet nécessite Trader ou Pro. Endpoints : /v1/derivatives/screener, /v1/derivatives/funding, /v1/derivatives/oi, /v1/derivatives/signals.
GET /v1/options/*
Analytiques d'options BTC & ETH sourcées par Deribit (public, sans auth) : ratio put/call, max pain et open interest par strike. Endpoints : /v1/options/summary, /v1/options/pcr, /v1/options/oi.
GET /v1/etf/*
Flux nets quotidiens des ETF BTC & ETH spot et répartition par fonds (public). Endpoints : /v1/etf/flows, /v1/etf/funds.
GET /v1/historical/*
Données historiques de funding, open interest, long/short ratio (Binance) et OHLCV (CoinGecko) pour backtesting. Endpoints : /v1/historical/funding, /v1/historical/oi, /v1/historical/lsr, /v1/historical/ohlcv.
GET /v1/dex/*
Paires tendances via DexScreener, recherche de tokens et détails des paires (public, sans auth). Endpoints : /v1/dex/trending, /v1/dex/search, /v1/dex/token, /v1/dex/pair.
GET /v1/news/*
Veille d'actualités : classement des news politiques/géopolitiques/crypto par impact, plus Fear & Greed (public, sans auth). Endpoints : /v1/news/trump, /v1/news/general, /v1/news/impact, /v1/news/fear-greed.
GET /whales
Retourne les données de consensus des wallets whales : répartition long/short, exposition notionnelle totale, top 10 positions (Pro uniquement) et nombre de wallets.
GET /signals
Retourne un flux des signaux récents HIGH/MEDIUM sur tous les assets surveillés. Utile pour la détection d'opportunités.
GET /v1/strategies/*
Historique transparent en lecture seule des stratégies de trading automatisé exécutées sur la base des signaux Smart Money — incluant la deriv40 stratégie SmartMoney Copytrade (account=9). Tous les endpoints acceptent un ?account=<id> paramètre de requête et retournent du JSON. Aucune authentification requise (historique public).
Endpoints
GET /v1/strategies/stats?account=9— métriques principales :total_trades,win_rate,profit_factor,total_pnl_usdt,account_growth_percent,initial_equity,current_equity,max_drawdown_portfolio,max_drawdown_trade.GET /v1/strategies/equity?account=9— courbe d'équité pour graphique :{ initial_equity, curve: [{ time, equity }] }.GET /v1/strategies/trades?account=9&limit=500— registre des trades clôturés : tableau (ou{trades:[…]}) desymbol,direction,entry_price,exit_price,pnl_usdt,pnl_percent,pnl_percent_net.GET /v1/strategies/active?account=9— positions actuellement ouvertes : tableau (ou{positions:[…]}) desymbol,side/direction,entry_price,unrealized_pnl.GET /v1/strategies/signals— répartition par type de signal alimentant les stratégies (nombre / gains / taux de réussite / pnl moyen par type).
Les performances passées ne préjugent pas des résultats futurs. Les chiffres sont backfillés sur un régime unique de ~3 mois plus des trades live et sont affichés pré-frais où indiqué.
GET /export
Téléchargez les données historiques de signaux en CSV pour backtesting. Paramètres : symbol, from (unix ts), to (unix ts).
GET /health
Vérification de l'état du système. Retourne la fraîcheur des données pour chaque source et le statut global de l'API. Aucune authentification requise.
"status": "ok",
"uptime_s": 1209600,
"sources": {
"bybit": { "lag_s": 42, "ok": true },
"binance": { "lag_s": 38, "ok": true },
"hyperliquid": { "lag_s": 61, "ok": true },
"onchain": { "lag_s": 290, "ok": true }
}
}
GET /usage
Retourne vos statistiques d'utilisation actuelles de l'API : appels aujourd'hui, totaux mensuels, limites de quota et heures de réinitialisation.
POST /webhooks
Enregistrez une URL HTTPS pour recevoir des notifications d'événements signés en temps réel lorsqu'un signal est déclenché sur vos assets surveillés. Les livraisons incluent un X-SmartMoney-Event en-tête et une signature HMAC-SHA256 dans X-SmartMoney-Signature, avec jusqu'à 3 tentatives de réessai avec backoff.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
| urlrequired | string | Endpoint HTTPS vers lequel POSTer les événements (doit commencer par https://) |
| eventsrequired | array | Noms d'événements, ex. ["HIGH","MEDIUM","VETO"] ou ["*"] |
| symbolsrequired | array | Symboles à filtrer, ex. ["BTC","ETH"] ou ["*"] |
| secretrequired | string | Votre secret de signature, ≥ 16 caractères (stocké hashé) |
Vérification de la signature
La clé HMAC est le digest hexadécimal SHA-256 de votre secret enregistré. Calculez le HMAC-SHA256 du corps brut de la requête avec cette clé et comparez (en temps constant) avec X-SmartMoney-SignatureVoir le Guide d'implémentation des webhooks.
Intelligence
GET /analysis
Retourne une classification des régimes de marché alimentée par l'IA avec détection de conflits de signaux. Analyse l'accord entre les signaux croisés, identifie les divergences entre les dérivés, les données on-chain et les données des baleines, et produit un résumé en langage naturel avec des facteurs de risque prospectifs et une recommandation temporelle.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symbolrequis | string | Symbole de l'actif : BTC, ETH, ou SOL |
Exemple de réponse
"ts": 1710940821,
"symbol": "BTC",
"regime": "late_cycle_divergence",
"regime_label": "Cycle tardif — Divergence de signal",
"summary": "Le BTC est dans une phase tardive de cycle haussier avec une force on-chain en conflit avec une sur extension des dérivés. Les baleines réduisent leur exposition tandis que le LSR des petits investisseurs augmente.",
"signal_conflicts": [
"Score des baleines baissier tandis que le score onchain est haussier",
"Taux de financement à un plus haut de 3 mois — risque de squeeze potentiel"
],
"risk_factors": ["Financement élevé", "Divergence de l'OI", "Réduction des baleines"],
"recommendation": "Réduisez l'exposition longue, resserrez les stops. Évitez de nouvelles positions longues au-dessus du prix actuel.",
"time_horizon": "4h–12h"
}
GET /liquidations
Retourne deux vues complémentaires: (1) projeté par levier levels — une estimation de où se trouvent les clusters de liquidation ; et (2) une realized_heatmap — l'intensité RÉELLE exécutée des liquidations forcées (prix × temps), agrégée en direct à partir des flux WebSocket des échanges publics : Binance, OKX, Bybit, Bitget, BitMEX. La heatmap est présente lorsque le flux contient des données pour le symbole (absente dans un marché très calme ou juste après le démarrage).
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptionnel | string | Symbole de l'actif (par défaut BTC). La heatmap réelle couvre les symboles perp activement négociés. |
Exemple de réponse
"symbol": "BTC",
"cascade_risk": "HIGH",
"nearest_long_liq_pct": -3.2,
"nearest_short_liq_pct": 4.1,
// Liquidations RÉELLES exécutées — en direct de 5 échanges
"realized_heatmap": {
"window_minutes": 240, "price_min": 91000.0, "price_max": 99000.0,
"clusters": [ { "price": 93250.0, "notional": 4820000.0, "count": 37, "dominant_side": "long" } ],
"by_side": { "long": 6100000.0, "short": 2400000.0 },
"totals": { "total_notional": 8500000.0, "count": 214 },
"exchanges": { "binance": 120, "okx": 40, "bybit": 34, "bitget": 12, "bitmex": 8 }
}
}
cascade_risk, distances les plus proches, et totaux réalisés/par côté. Plan Pro : projection complète levels plus la realized_heatmap (matrices, clusters par prix, comptes par échange). L'estimation projetée répond à "où sont les stops" ; la heatmap réalisée montre "ce qui a réellement été liquidé."GET /liquidations/heatmap
Public heatmap de liquidation par niveau de prix. Retourne une matrice de prix × temps de style Coinglass des RÉELLES exécutées liquidations forcées, regroupées par le prix auquel chaque liquidation a été enregistrée — agrégée en direct à partir des flux WebSocket des échanges publics : Binance, OKX, Bybit, Bitget, BitMEX. Le clusters tableau est la sortie pratique : les compartiments de prix classés par notionnel liquidé, chacun étiqueté avec son côté dominant. Les données dépendent du flux en direct — un symbole très calme ou une passerelle juste redémarrée retourne la structure vide bien formée plus une note. Les niveaux affichés sont uniquement des liquidations réelles, jamais estimées.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptionnel | string | Symbole de l'actif (par défaut BTC). |
| window_minutesoptionnel | int | Fenêtre de rétrospective en minutes (par défaut 240, limitée à 5–1440). |
| price_bucketsoptionnel | int | Nombre de compartiments de prix (par défaut 50, limité à 5–100). |
Exemple de réponse
"symbol": "BTC", "window_minutes": 240, "price_buckets": 50,
"price_min": 91000.0, "price_max": 99000.0, "price_bucket_size": 160.0,
"price_levels": [ 91080.0, 91240.0, … ], "time_buckets": [ … ],
"matrix": [ [ … ] ], "long_matrix": [ [ … ] ], "short_matrix": [ [ … ] ],
"clusters": [
{ "price": 93250.0, "notional": 4820000.0, "long_notional": 4100000.0,
"short_notional": 720000.0, "count": 37, "dominant_side": "long" }
],
"by_side": { "long": 6100000.0, "short": 2400000.0 },
"totals": { "long_liq_notional": 6100000.0, "short_liq_notional": 2400000.0, "total_notional": 8500000.0, "count": 214 },
"exchanges": { "binance": 120, "okx": 40, "bybit": 34, "bitget": 12, "bitmex": 8 },
"generated_at": 1710940200, "public": true
}
totals.count est 0, clusters est vide, et un note champ explique pourquoi. Il s'agit d'un enregistrement des liquidations exécutées — pas d'une prédiction. Pour l'estimation projetée "où sont les stops", utilisez le endpoint authentifié /liquidations endpoint.GET /liquidations/onchain
Exécutées liquidations de prêts DeFi on-chain capturées directement depuis nos propres nœuds complets BSC + Avalanche — indépendant de tout bot de trading. Couvre Venus/Cream et Moolah sur BSC, et AAVE V3/V2, Benqi, BankerJoe, Granary et Vinium sur Avalanche. Le niveau Pro retourne en plus at_risk positions (dépendantes du bot, peuvent être absentes).
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| chainoptionnel | string | bsc ou avax. Omettre pour toutes les chaînes. |
| limitoptionnel | integer | Nombre maximum de lignes (par défaut 100, maximum 500). Les plus récentes en premier. |
Exemple de réponse
"chain": "bsc", "count": 2,
"liquidations": [
{ "chain": "bsc", "protocol": "Venus", "borrower": "0x2be6…8dfa",
"debt_symbol": "DAI", "repay_usd": 426.15,
"collateral_symbol": "WBNB", "tx_hash": "0x718c…7c0e", "block": 89170816, "ts": 1710940200 }
],
"summary": {
"window_hours": 24, "enabled": true,
"by_protocol": { "bsc:Venus": { "count": 61, rembourser_usd_connu: 148230.55 } },
nœuds: { bsc: { accessible: True, bloc_de_tête: 89173010, événements_totaux: 61 } }
}
}
GET /smart-stop
Calcule des niveaux de stop-loss intelligents basés sur la carte de chaleur de liquidation actuelle, les bandes de volatilité et la structure du marché. Retourne des recommandations de stop échelonnées et des suggestions de prise de bénéfices calibrées selon votre prix d'entrée et votre tolérance au risque.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symbolerequis | chaîne | Symbole de l'actif : BTC, ETH, ou SOL |
| directionrequis | chaîne | Direction de la position : long ou short |
| prix_entréeoptionnel | flottant | Votre prix d'entrée. Par défaut, le prix actuel du marché si omis. |
| risque_pctoptionnel | flottant | Risque maximum acceptable en % du compte. Par défaut : 2.0 |
Exemple de réponse
symbole: BTC,
direction: long,
prix_entrée: 96420,
stops: {
tight: { price: 95100, note: En dessous de la structure 1h. Idéal pour les scalps. },
recommended: { price: 93800, note: En dessous du cluster de liquidation majeur à $94K. Stop standard pour les swings. },
wide: { price: 91200, note: En dessous de la zone de demande 4h. Stop pour les trades de position. }
},
avoid_zones: [
{ low: 94200, high: 94800, reason: Cluster de liquidation dense — risque élevé de slippage }
],
take_profit_suggestions: [
{ tp1: 98500, tp2: 101000, tp3: 104200 }
]
}
recommended stop. Plan Pro : Les trois niveaux de stop, avoid_zones, et des suggestions complètes de prise de bénéfices.GET /funding-arb
Identifie en temps réel les opportunités d'arbitrage de taux de financement inter-exchange. Retourne des opportunités classées avec un rendement annualisé estimé, la paire d'exchanges optimale et l'action de couverture nécessaire pour capturer l'écart.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| min_spreadoptionnel | flottant | Écart minimum de taux de financement à inclure (en décimal). Par défaut : 0.01 |
| symboleoptionnel | chaîne | Filtrer pour un actif spécifique. Omettre pour scanner tous les actifs supportés. |
Exemple de réponse
ts: 1710940821,
opportunities: [
{
symbole: BTC,
spread: 0.032,
apr: 84.2,
long_exchange: hyperliquid,
short_exchange: bybit,
action: Long HYPE / Short BYBIT,
estimated_profit_8h_usd: 26.4
}
]
}
Variante publique gratuite Pas d'authentification
Un point de terminaison public sans clé retourne les 10 meilleures opportunités avec un screener inter-exchange en direct, idéal pour l'intégration ou des vérifications rapides. Il supprime l'historique des écarts par symbole et les champs lourds et est servi depuis un cache de 120 secondes. Lorsqu'il n'y a pas d'écarts de financement inter-exchange dans la fenêtre de fraîcheur, il retourne un opportunities tableau vide avec un note — jamais de données fabriquées.
opportunities: [
{
symbole: OGN,
spread_pct: 0.297667,
taux_annuel_annualisé: 325.95,
échange_long: bybit,
échange_court: hyperliquid,
profit_estimé_pour_10k: 29.77,
notes_de_risque: Faible spread — assurez-vous que les frais ne consomment pas la marge d'arbitrage.
}
],
symboles_scannés: 222,
ts: 1783268753,
public: True,
limité: True
}
GET /smart-money/flow
Un indice directionnel pondéré par la qualité indice directionnel des baleines par symbole, noté -100 (l'argent des baleines penche vers le court) à +100 (penche vers le long). Construit à partir de milliers de portefeuilles de baleines Hyperliquid suivis — chacun pondéré par son propre taux de réussite historique et PnL et décroissant avec le temps. Ceci est un indice de positionnement, pas un signal d'achat/vente ou de prévision de prix. Les symboles avec peu de portefeuilles contributeurs sont étiquetés thin et notés honnêtement. Page en direct : smart-money-flow.html.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboleoptionnel | chaîne | Un seul symbole (par ex. BTC). Omettez pour obtenir tous les symboles suivis classés par |score|. |
| window_hoursoptionnel | int | Fenêtre de notation, limitée à 1..168. Par défaut 24. |
Exemple de réponse
symboles: [
{
symbole: SPX,
score: -90.93,
direction: fort_court,
n_portefeuilles: 26,
long_usd: 184200.0, court_usd: 2410000.0,
pondéré_par_qualité: True,
qualité_échantillon: riche,
principaux_contributeurs: [ { portefeuille: 0x31ca…974b, direction: court, valeur_usd: 5338.25, poids: 0.4948 } ]
}
],
window_hours: 24,
pondéré_par_qualité: True,
ts: 1783270000,
note: Indice de positionnement directionnel des baleines pondéré par la qualité (-100..+100). Ce n'est pas une prévision de prix ou un signal d'achat/vente.
}
top_contributors. Les poids des portefeuilles sont limités à [0.25,1.0]; PnL est un proxy non réalisé à partir des derniers instantanés de position.GET /v1/whales/crowding
Contexte combiné positionnement des baleines & contexte de concentration par symbole, fusionné à travers Hyperliquid + GMX v2 + Jupiter Perps. Retourne le notionnel brut/net, l'inclinaison directionnelle, le nombre de portefeuilles et de places, la concentration des positions (part des top-3 + HHI), un effet de levier moyen pondéré, et seuils_de_proximité_de_liquidation (notionnel situé à 5% et 10% de son prix de liquidation estimé, divisé en long/court). Ceci est un contexte, pas un signal directionnel. Les champs qui ne sont pas dérivables sont null et apparaissent comme — — par ex. lev_wavg/crowding_index quand aucune position ne porte d'effet de levier. Les distances de liquidation sont une estimation de marge isolée (pct_to_liq ≈ 1/lev + upnl/notional − mmr, mmr = 0.01), pas les prix de liquidation rapportés par l'échange.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| min_notionaloptionnel | float | Notionnel brut combiné minimum (USD) pour qu'un symbole soit inclus. Par défaut : 1000000. |
Exemple de requête
Exemple de réponse
"ok": True, "ts": 1783423500, min_notional: 1000000, n_symbols: 92,
symbols: [
{
symbol: BTC,
gross_usd: 2447900000.0, net_usd: -51000000.0, skew: -0.021,
n_whales: 414, n_venues: 3,
venues: {
hl: { gross: 1900000000.0, net: -40000000.0, n_whales: 272 },
gmx: { gross: 320000000.0, net: -6000000.0, n_whales: 59 },
jupiter: { gross: 227900000.0, net: -5000000.0, n_whales: 83 }
},
conc_top3: 0.159, hhi: 0.011, lev_wavg: 19.1,
liq_within_5pct: { long: 621700000.0, short: 665600000.0 },
liq_within_10pct: { long: 840000000.0, short: 910000000.0 },
crowding_index: 0.003
}
],
caveats: [ Les distances de liquidation sont des estimations sur marge isolée, non rapportées par les exchanges. ]
}
skew est net/gross ∈ [-1,1]; crowding_index = |skew|·conc_top3·min(lev/20,1). Seuls les venues réellement présentes apparaissent dans venues. Les positions sans effet de levier sont exclues des buckets de liquidation plutôt que d'être supposées. Les appelants anonymes reçoivent les 10 symboles les plus importants par volume brut (avec gated: true); les Trader+ reçoivent la liste complète.GET /v1/options/gex
Dealer exposition gamma (GEX) analytiques pour BTC & ETH, calculées en direct à partir de la chaîne d'options publique de Deribit (sans auth). Retourne le GEX net du dealer par strike (convention SpotGamma dealer-short), le niveau de flip gamma (strike où le GEX net cumulé traverse zéro), la structure de terme de l'IV (vol implicite ATM par jours jusqu'à l'expiration), et un skew d'IV front-expiry (proxy 25Δ de risk reversal). Le régime GEX est positive (dealers long gamma → suppression de la volatilité) ou negative (amplification de la volatilité). Totalement autonome — recalculé à chaque appel, aucune dépendance à une base de données stockée.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptionnel | string | BTC ou ETH seulement. Par défaut : BTC. |
Exemple de requête
Exemple de réponse
"symbol": "BTC", "available": true, "spot": 63203.0,
"net_gex": 18240000.0, "regime": "positive",
"gamma_flip": 64919.82, "gamma_flip_pct": 2.72,
"call_gex": 31200000.0, "put_gex": -12960000.0,
"by_strike": [
{ "strike": 60000, "net_gex": -2100000.0 },
{ "strike": 65000, "net_gex": 4800000.0 }
],
"term_structure": [
{ "expiry": "8JUL26", "dte": 0.76, "atm_iv": 62.1 },
{ "expiry": "27MAR26", "dte": 14.2, "atm_iv": 58.4 }
],
"skew": {
"expiry": "8JUL26", "dte": 0.76,
"put_iv": 69.69, "atm_iv": 62.1, "call_iv": 55.34,
"risk_reversal": 14.35, "bias": "downside_fear"
}
}
available: false avec des panneaux vides — jamais de GEX fabriqué. Le skew d'IV utilise un proxy de strike fixe à ±10% pour 25Δ (le vrai 25-delta nécessite de résoudre le delta par strike) ; adéquat pour l'affichage, documenté comme une approximation.GET /v1/liquidations/simulate
Interactif test de résistance en cascade de liquidation. Étant donné un mouvement de prix hypothétique, retourne les positions à effet de levier estimées qui seraient liquidées, le volume forcé par niveau de prix / côté / échange, et une lecture de la profondeur de cascade. Un mouvement à la baisse liquide les longs dont le prix de liquidation se situe à/au-dessus de la cible ; un mouvement à la hausse liquide les shorts dont le prix de liquidation se situe à/en dessous. Deux méthodes indépendantes sont combinées : les prix de liquidation exacts des baleines suivies sur Hyperliquid réels levier/entrée, plus des clusters statistiques de bandes d'OI par échange (levier de la foule déduit du funding). Tout est clairement étiqueté estimated: true — il ne peut pas connaître la marge par compte, cross vs isolée, marge ajoutée, ou ADL.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboleoptionnel | chaîne | Symbole de l'actif. Par défaut : BTC. |
| move_pctoptionnel | flottant | Mouvement de prix hypothétique en pourcentage (négatif = baisse, positif = hausse). Par défaut : -5. |
Exemple de requête
Exemple de réponse
"ok": true, "estimé": true, "symbole": "BTC",
"ref_price": 63000.0, "move_pct": -5.0, "target_price": 59850.0,
"triggered_notional_usd": 380000000.0,
"cascade_depth": 0.029, "cascade_bucket": "low",
"by_exchange": { "hyperliquid": 260000000.0, "binance": 80000000.0, "bybit": 40000000.0 },
"by_side": { "long": 380000000.0, "short": 0.0 },
"clusters": [
{ "price": 60100.0, "side": "long", "notional_usd": 42000000.0, "whale_usd": 18000000.0, "oi_usd": 24000000.0 }
],
"whale_positions_used": 272, "exchanges": 3,
"realized_context": { "available": true, "coverage_hours": 17.8, "by_side_24h": { "long": 6100000.0, "short": 2400000.0 } },
"methodologie": { "avertissement": "Estimé — ne peut pas connaître la marge par compte, cross vs isolée, marge ajoutée, ou ADL." }
}
ok: true, empty: true avec un message en anglais simple, pas de fausses barres. realized_context est un échantillon jeune et croissant du flux de liquidation forcée en direct, affiché uniquement comme contexte — il ne rend jamais la projection "réalisée".GET /v1/wallet/{addr}/profile
Un profil de portefeuille multi-plateformes construit entièrement à partir des instantanés de positions des baleines suivies en direct. Pour une baleine Hyperliquid suivie, retourne les positions ouvertes actuelles, une série temporelle de PnL non réalisé / exposition / nombre de positions série temporelle, une chronologie d'activité OPEN/CLOSE/FLIP (reconstruite en différenciant des instantanés consécutifs), le label décodé du classement HL, et un résumé du carnet d'ordres. Page live : wallet-profiler.html.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| addrrequis | chaîne | Adresse du portefeuille (segment de chemin), par ex. /v1/wallet/0x3bcae23e…/profile. |
| joursoptionnel | entier | Fenêtre de look-back pour la série et la chronologie. Par défaut : 30. |
Exemple de requête
Exemple de réponse
"ok": true, "wallet": "0x3bcae23e…", "tracked": true,
"first_seen_ts": 1782827733, "latest_snapshot_ts": 1783418468, "as_of": 1783418468,
"hyperliquid": {
"label": { "name": "Andre is back", "score": 74,
"window_pnl_usd": 1307000, taux_de_réussite_pct: 71, trades: 42 },
positions: [
{ plateforme: hyperliquid, symbole: ETH, direction: short,
taille: 1200.0, prix_entrée: 1800.0, pnl_non_réalisé: 34800.0,
levier: 20.0, valeur_usd: 2160000.0 }
],
série: [ { ts: 1783330000, pnl_non_réalisé: 42000.0, exposition_usd: 18400000.0, positions: 5 } ],
chronologie: [ { ts: 1783400000, événement: flip, symbole: ETH,
direction: short, depuis_direction: long, valeur_usd: 2160000.0 } ],
résumé: {
positions_ouvertes: 5, en_profit: 3, en_perte: 2, longs: 0, shorts: 5,
pnl_non_réalisé_total: -12000.0, exposition_usd_totale: 21000000.0, levier_moyen: 19.9,
fenêtre_jours: 30, instantanés_dans_fenêtre: 474,
pnl_réalisé: None, note_pnl_réalisé: Non dérivable — seuls les instantanés ouverts sont visibles, jamais les remplissages de clôture.
}
}
}
pnl est la propre valorisation marché à marché non réalisée de HL, value_usd est le notionnel ouvert. Le P&L réalisé par aller-retour est indisponible (nous ne voyons que les instantanés ouverts, jamais les remplissages de clôture) et est affiché comme null / —; les événements CLOSE de la chronologie ne portent aucune revendication de P&L. Une adresse valide mais non suivie renvoie tracked: false avec une note ; une adresse invalide renvoie ok: false, error: "invalid_address" (HTTP 400). Le label HL-leaderboard est la propre position de fenêtre de HL à la découverte, non calculée par nous.GET /flows
Renvoie des données de flux de capital inter-actifs montrant les modèles de rotation entre BTC, ETH et SOL sur plusieurs fenêtres temporelles. Utile pour identifier quel actif accumule du capital et lequel est distribué à un moment donné.
Exemple de réponse
ts: 1710940821,
flux: {
BTC: { 1h: 142000000, 4h: 380000000, 12h: -90000000, 24h: 220000000 },
ETH: { 1h: -38000000, 4h: -110000000, 12h: 55000000, 24h: -80000000 },
SOL: { 1h: 12000000, 4h: 29000000, 12h: 18000000, 24h: 44000000 }
},
rotations_détectées: [
Capital tournant de ETH vers BTC sur une fenêtre de 4h,
Accumulation de SOL cohérente sur toutes les fenêtres
]
}
GET /whale-events
Renvoie les changements significatifs de positions des baleines — ouvertures, fermetures et inversions de direction — détectés sur les portefeuilles suivis et les adresses on-chain dans la fenêtre de recherche spécifiée.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboleoptionnel | string | Filtrer par actif. Omettre pour tous les actifs surveillés. |
| importanceoptionnel | string | Filtrer par importance de l'événement : high, medium, ou all. Par défaut : all |
| heuresoptionnel | integer | Fenêtre de recherche en heures. Par défaut : 24 |
Exemple de réponse
symbole: BTC,
résumé: {
flips_vers_long: 3,
flips_vers_short: 1,
nouvelles_ouvertures: 7,
fermetures: 2
},
événements: [
{
"type": "flip_long",
"wallet": "0xWhale...a4f2",
"direction": "long",
"size_usd": 4200000,
"ts": 1710938400
}
]
}
summary objet uniquement. Plan Pro : Flux complet events avec identifiants de portefeuille, tailles et horodatages.GET /regimes/history
Retourne les données historiques de classification des régimes pour un actif donné. Utilisez ceci pour backtester la performance historique des types de régimes spécifiques, la durée typique de chaque régime et la façon dont les transitions se déroulent dans le temps.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptionnel | string | Symbole de l'actif. Par défaut : BTC |
| regimeoptionnel | string | Filtrer par un type de régime spécifique, par ex. late_cycle_divergence. Omettre pour tous les régimes. |
| daysoptionnel | integer | Fenêtre de look-back en jours. Par défaut : 30. Maximum : 365 |
Exemple de réponse
"symbol": "BTC",
"current_regime": "late_cycle_divergence",
"regime_summary": {
"late_cycle_divergence": { "occurrences": 4, "avg_duration_h": 38, "avg_return_pct": -2.1 },
"accumulation": { "occurrences": 6, "avg_duration_h": 72, "avg_return_pct": 5.4 },
"breakout": { "occurrences": 3, "avg_duration_h": 18, "avg_return_pct": 9.2 }
},
"transitions": [
{ "from": "accumulation", "to": "breakout", "ts": 1710850000 },
{ "from": "breakout", "to": "late_cycle_divergence", "ts": 1710915000 }
]
}
/analysis pour valider les hypothèses de stratégie par rapport aux données historiques de performance des régimes.GET /exchange-health
Retourne l'état de santé en temps réel de tous les échanges surveillés, y compris la latence par échange, les taux d'erreur et les indicateurs d'obsolescence des données. Aucune authentification requise — endpoint accessible publiquement.
Exemple de réponse
"overall_status": "ok",
"ts": 1710940821,
"exchanges": {
"bybit": { "status": "ok", "latency_ms": 42, "error_rate_1h": 0.0, "last_data_age_s": 18 },
"binance": { "status": "ok", "latency_ms": 38, "error_rate_1h": 0.0, "last_data_age_s": 22 },
"hyperliquid": { "status": "degradé", "latency_ms": 310, "error_rate_1h": 0.04, "last_data_age_s": 95 },
"okx": { "status": "ok", "latency_ms": 55, "error_rate_1h": 0.0, "last_data_age_s": 30 }
}
}
GET /sentiment
Retourne un indice Fear & Greed (0-100) en temps réel calculé à partir du sentiment des dérivés, de l'activité des baleines, de la volatilité et des signaux sociaux. Inclut une répartition des composants et un historique de 24 heures pour l'analyse des tendances.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptionnel | string | Symbole de l'actif. Par défaut : BTC |
Exemple de réponse
"symbol": "BTC",
"score": 72,
"label": "Greed",
"components": {
"volatility": 65,
"momentum": 78,
"derivatives": 70,
"whale_activity": 75,
"social": 68
},
"history_24h": [
{ "ts": 1710940800, "score": 68, "label": "Greed" },
{ "ts": 1710937200, "score": 65, "label": "Greed" }
],
"ts": 1710940821
}
Intégrations
GET /tradingview/setup
Retourne votre configuration d'intégration TradingView personnalisée : URL de webhook, secret pour validation, et indicateurs Pine Script prêts à l'emploi qui se connectent directement à l'API Smart Money. Copiez-collez le Pine Script dans TradingView pour superposer nos signaux sur n'importe quel graphique.
Exemple de réponse
"webhook_url": "https://api.smartmoneyapi.com/v1/tradingview/webhook",
"webhook_secret": "tvs_a1b2c3...",
"pine_scripts": {
"composite_indicator": "// Smart Money Composite v1 //@version=5 indicator(...)...",
"whale_activity": "// Whale Activity Overlay v1 ...",
"funding_dashboard": "// Funding Rate + LSR Dashboard v1 ..."
}
}
POST /tradingview/webhook
Reçoit une alerte TradingView, la traite via /confirm, et retourne la confirmation. TradingView ne peut pas envoyer d'en-têtes personnalisés, donc authentifiez-vous en incluant votre webhook secret dans le corps JSON (cet endpoint n'utilise pas X-API-Key). La réponse encapsule la confirmation et ajoute un niveau supérieur action de CONFIRMED (confiance du démon HIGH/MEDIUM) ou VETOED.
Corps de la requête
"secret": "your_webhook_secret",
"symbol": "BTC",
"direction": "long",
"timeframe": "1h",
"strategy": "EMA crossover",
"price": 67500.0
}
Requis : secret, symbol, direction (long|short). Optionnel : source, timeframe, strategy, price.
Personnalisation
GET /preferences
Retourne vos paramètres de personnalisation actuels, incluant les paramètres de trade par défaut, le profil de risque, la watchlist et les préférences de notification.
Mettez à jour les préférences en envoyant un corps JSON avec n'importe quel sous-ensemble des champs ci-dessous. Les champs omis conservent leurs valeurs actuelles.
Champs de préférence
| Champ | Type | Description |
|---|---|---|
| default_trade_size_usd | float | Taille de position par défaut en USD pour les calculs Kelly et smart-stop |
| risk_tolerance | string | conservative, moderate, ou aggressive |
| default_risk_pct | float | Risque par défaut par trade en % du compte. Utilisé par /smart-stop lorsque risk_pct est omis |
| watchlist | array | Liste ordonnée de symboles d'actifs, par ex. ["BTC","ETH","SOL"] |
| notification_email | string | Adresse email pour la livraison des alertes |
| timezone | string | Chaîne IANA de fuseau horaire, par ex. America/New_York |
"default_trade_size_usd": 5000,
"risk_tolerance": "moderate",
"default_risk_pct": 1.5,
"watchlist": ["BTC", "ETH", "SOL"]
}
GET /watchlist
Retourne un instantané de l'état de confirmation et des métriques de risque clés pour tous les symboles de votre watchlist configurée. Fournit une vue multi-actifs sans avoir à appeler /confirm séparément pour chaque symbole.
Exemple de réponse
"ts": 1710940821,
"watchlist": [
{
"symbol": "BTC",
"confidence": "HIGH",
"action": "CONFIRM",
"regime": "accumulation",
"cascade_risk": "LOW"
},
{
"symbol": "ETH",
"confidence": "MEDIUM",
"action": "REDUCE",
"regime": "late_cycle_divergence",
"cascade_risk": "HIGH"
},
{
"symbol": "SOL",
"confidence": "HIGH",
"action": "CONFIRM",
"regime": "breakout",
"cascade_risk": "MEDIUM"
}
]
}
Streaming en temps réel (échanges en direct)
Stream les échanges DEX ≥ $500 détectés en temps réel depuis nos propres nœuds BSC et Avalanche. Deux transports sont disponibles : un flux public Server-Sent Events (SSE) pour les clients gratuits/navigateurs, et un flux WebSocket à faible latence pour les abonnés payants. Les événements sont diffusés dans les secondes suivant leur inclusion dans un bloc.
Flux SSE Public (Gratuit)
Aucune authentification requise. Support natif EventSource dans tous les navigateurs modernes. Le serveur émet swap des événements et des battements de cœur périodiques pour maintenir la connexion active.
es.addEventListener("swap", e => {
const swap = JSON.parse(e.data);
console.log(swap.chain, swap.pair, swap.amount_usd);
});
Flux WebSocket (Payant)
Authentification (recommandée) : ne mettez jamais votre clé de longue durée dans l'URL — elle est enregistrée par les proxies et sauvegardée dans l'historique du navigateur. Au lieu de cela, POSTez votre clé à /v1/ws/ticket en utilisant l'en-tête X-API-Key sécurisé, puis ouvrez le socket avec le ticket à usage unique retourné ticket (valable ~60s, utilisé une fois). Les clients côté serveur qui peuvent définir des en-têtes peuvent plutôt passer X-API-Key directement lors de la poignée de main. Les clés de niveau gratuit reçoivent une 402 payment_required réponse. Une hello trame est envoyée lors de la connexion avec votre niveau et le seuil de diffusion.
const r = await fetch("https://api.smartmoneyapi.com/v1/ws/ticket", {
method: "POST", headers: { "X-API-Key": "sm_xxx" }
});
const { ticket } = await r.json();
// 2. Ouvrez le socket avec le ticket à usage unique
const ws = new WebSocket(`wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=${ticket}`);
ws.onmessage = e => {
const swap = JSON.parse(e.data);
if (swap.type === "swap") console.log(swap);
};
Authentification WebSocket (tickets)
Pourquoi : ne mettez jamais votre clé API dans une URL WebSocket — les chaînes de requêtes sont enregistrées par les proxies, les équilibreurs de charge, et sauvegardées dans l'historique du navigateur. Au lieu de cela, échangez votre clé contre un ticket à courte durée de vie et à usage unique ticket via une requête POST authentifiée normale, puis connectez-vous avec ce ticket.
Flux : POSTez à /v1/ws/ticket avec votre X-API-Key en-tête → recevez { "ticket": "…", "expires_in": 60 }. Puis ouvrez wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=<ticket>Le ticket est à usage unique et expire dans ~60 secondesLes clients côté serveur qui peuvent définir des en-têtes de requête peuvent plutôt passer X-API-Key directement sur la poignée de main WebSocket — aucun ticket nécessaire.
Crée un ticket à usage unique pour une poignée de main WebSocket authentifiée. Authentifiez-vous avec l' X-API-Key en-tête (votre clé ne quitte jamais les en-têtes de la requête). Le ticket retourné peut être utilisé une fois sur /v1/ws/live-swaps avant son expiration.
"https://api.smartmoneyapi.com/v1/ws/ticket"
Exemple de réponse
"ticket": "wst_9f3c1a8e4b2d…",
"expires_in": 60
}
Champs de réponse
| Champ | Type | Description |
|---|---|---|
| ticket | string | Jeton à usage unique à ajouter comme ?ticket= sur l'URL WebSocket. Utilisé une fois, puis invalidé. |
| expires_in | number | Secondes avant l'expiration du ticket (~60). Créez un nouveau ticket par tentative de connexion. |
Remarque : l'authentification par ?key= paramètre de requête héritée est plus acceptée sur les points de terminaison WebSocket pour des raisons de sécurité. Utilisez un ticket (clients navigateur) ou l' X-API-Key en-tête de poignée de main (clients côté serveur).
Snapshot REST
Retourne les N derniers swaps diffusés depuis le tampon en roulement. Utile pour le premier rendu sur les tableaux de bord avant l'ouverture de la connexion de flux. Également disponible : /v1/live-swaps/status pour les statistiques du diffuseur.
Schéma d'événement
| Champ | Type | Description |
|---|---|---|
| chain | string | bsc ou avalanche |
| dex | string | Nom du routeur (par exemple pancakeswap_v2, traderjoe) ou unknown_dex |
| swapper | string | Adresse 0x complète du portefeuille qui a exécuté le swap |
| swapper_short | string | Forme abrégée pour l'affichage (par exemple 0xb300…028d) |
| swapper_url | string | Lien direct vers le swapper sur l'explorateur de blocs de la chaîne |
| tx_hash | string | Hash de la transaction |
| explorer_url | string | Lien direct vers la transaction sur BscScan / Snowtrace |
| token_in | string | Symbole du token vendu (par exemple USDT) |
| token_out | string | Symbole du token acheté |
| amount_usd | number | Valeur en USD du swap (minimum : 500 $) |
| pair | string | Libellé de paire formaté (par exemple USDT → USDC) |
| block | number | Numéro de bloc où le swap a été miné |
| timestamp | number | Secondes de l'époque Unix |
| significance | string | low / medium / high / critical basé sur la taille en USD |
| seq | number | Numéro de séquence de diffusion monotone — utilisez pour la détection de lacunes |
POST /alerts/conditions
Créez des règles d'alerte personnalisées qui se déclenchent lorsqu'une métrique spécifiée dépasse un seuil. Les alertes sont livrées via webhook, e-mail ou le flux de notifications du tableau de bord selon vos préférences.
Retourne une liste de toutes vos conditions d'alerte configurées avec leurs ID, définitions et statut actuel.
Supprime définitivement une condition d'alerte par son ID.
Retourne les événements récents de déclenchement d'alerte avec des horodatages, les conditions correspondantes et la valeur de la métrique au moment du déclenchement.
Créer une alerte — Corps de la requête
| Champ | Type | Description |
|---|---|---|
| namerequired | string | Libellé lisible pour cette alerte (max 64 caractères) |
| metricrequired | string | La métrique à surveiller. Voir le tableau des métriques disponibles ci-dessous. |
| symboloptional | string | Contexte de l'actif. Requis pour les métriques liées au symbole telles que funding_rate. |
| operatorrequired | string | Opérateur de comparaison : gt, lt, eq, crosses_above, crosses_below |
| thresholdrequired | float | Valeur numérique à comparer avec la métrique |
| deliveryoptional | string | Canal de livraison, par exemple telegram (default) ou webhook |
| cooldown_minutesoptional | integer | Minutes minimales entre les re-déclenchements (par défaut 60) |
La liste en direct des métriques et opérateurs valides est retournée par GET /v1/alerts/conditions as available_metrics and available_operators.
Métriques Disponibles
| Métrique | Description |
|---|---|
| funding_rate | Taux de financement actuel pour le symbole (en décimal) |
| global_lsr | Ratio long/short global pour le symbole |
| long_pct | Pourcentage de comptes en position longue pour le symbole |
| top_trader_lsr | Ratio long/short des meilleurs traders pour le symbole |
| taker_ratio | Ratio acheteur/vendeur des takers pour le symbole |
| mvrv | Ratio de la valeur de marché à la valeur réalisée (BTC/ETH) |
| sopr | Ratio de profit des sorties dépensées (BTC/ETH) |
| exchange_net_flow | Signal de flux net on-chain des échanges |
| accumulation | Signal d'accumulation on-chain |
| whale_long_pct | Pourcentage de portefeuilles de baleines suivis en position longue pour le symbole |
| whale_n_wallets | Nombre de portefeuilles de baleines suivis avec une position dans le symbole |
| composite_long | Score composite pour le symbole interrogé en direction longue |
| composite_short | Score composite pour le symbole interrogé en direction courte |
| funding_spread | Écart de financement inter-plateforme pour le symbole |
"name": "Pic du taux de financement BTC",
"metric": "funding_rate",
"symbol": "BTC",
"operator": "gt",
"threshold": 0.05
}
GET /kelly
Retourne des recommandations de taille de position selon le critère de Kelly, calibrées sur la performance historique du signal pour le symbole, le niveau de confiance et la direction. Base la taille de la position sur les taux de réussite empiriques pour éviter le sur-effet de levier.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symbolrequired | string | Symbole de l'actif : BTC, ETH, ou SOL |
| confidenceoptional | string | Niveau de confiance du signal à modéliser : HIGH, MEDIUM, ou LOW. Par défaut : HIGH |
| directionoptional | string | Direction du trade : long ou short. Par défaut : long |
| account_sizeoptional | float | Taille du compte en USD pour le calcul suggested_size_usd. Par défaut : 10000 |
Exemple de Réponse
"symbol": "BTC",
"confidence": "HIGH",
"direction": "long",
"win_rate": 0.68,
"avg_reward_risk_ratio": 2.1,
"kelly_fraction": 0.36,
"half_kelly": 0.18,
"suggested_size_usd": 1800,
"samples": 142,
"note": "Half-Kelly recommandé pour le trading en direct pour tenir compte des erreurs d'estimation."
}
GET /performance
Retourne des statistiques historiques de précision des signaux émis par l'API, ventilées par niveau de confiance. Utile pour évaluer la fiabilité des signaux avant d'engager du capital.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| symboloptional | string | Filtrer par actif. Omettre pour des statistiques agrégées sur tous les symboles. |
| daysoptional | integer | Fenêtre de look-back en jours. Par défaut : 30 |
Exemple de réponse
"symbol": "BTC",
"period_days": 30,
"by_confidence": {
"HIGH": { "win_rate": 0.71, "samples": 58, "avg_return_pct": 3.4 },
"MEDIUM": { "win_rate": 0.54, "samples": 84, "avg_return_pct": 1.2 }
}
}
Statistiques & Signaux
GET /v1/stats
Statistiques de performance honnêtes à l'échelle du site, provenant de smart_money_confirm résultats d'appels distincts. Retourne les taux de réussite aux niveaux de confiance HIGH et MEDIUM, la précision globale, le facteur de profit et une ventilation par symbole. Tous les chiffres sont in-sample sur la fenêtre d'évaluation ; consultez calibration.html pour le contexte et la méthodologie forward-holdout.
Exemple de réponse
"high_winrate": 0.714,
"high_winrate_n": 14,
"medium_winrate": 0.530,
"medium_winrate_n": 34,
"overall_accuracy": 0.613,
"overall_accuracy_n": 48,
"profit_factor": 1.77,
"avg_win_pct": 4.2,
"winrate_horizon": "24h",
"winrate_basis": "appels de confirmation distincts, résultats résolus en 24h",
"winrate_by_symbol": {
"BTC": { "win_rate": 0.68, "n": 22 },
"ETH": { "win_rate": 0.55, "n": 18 },
"SOL": { "win_rate": 0.60, "n": 8 }
},
"forward_holdout": {
"win_rate": 0.59,
"high_win_rate": 0.70,
"high_n": 10,
"is_distinct_from_insample": false
}
}
forward_holdout objet est le seul nombre basé sur des données que le scoreur n'a jamais vues — observez sa progression dans le temps. Voir calibration.html pour la méthodologie complète et la frontière in-sample / forward-test.GET /v1/signals/performance
Suivi des résultats des signaux sur plusieurs horizons de résolution (4h, 12h, 24h, 72h). Retourne les taux de réussite par horizon, le nombre total de signaux et une ventilation par type de signal.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| daysoptional | integer | Fenêtre de look-back en jours. Par défaut : 30 |
| signal_typeoptional | string | Filtrer par type, par ex. smart_money_confirm ou regime_flip. Omettre pour tous les types. |
| symboloptional | string | Filtrer par symbole d'actif, par ex. BTC. Omettre pour une agrégation sur tous les symboles. |
Exemple de réponse
"signal_type": "smart_money_confirm",
"symbol": "BTC",
"days": 30,
"total_signals": 48,
horizons: {
4h: { taux_de_réussite: 0.65, résolu: 46 },
12h: { taux_de_réussite: 0.61, résolu: 44 },
24h: { taux_de_réussite: 0.58, résolu: 40 },
72h: { taux_de_réussite: 0.54, résolu: 32 }
},
répartition_par_type: {
confirmation_smart_money: { nombre: 35, taux_de_réussite_24h: 0.61 },
changement_de_régime: { nombre: 13, taux_de_réussite_24h: 0.47 }
}
}
GET /v1/signals/recent
Flux des signaux RÉCENTS publiés (niveau HIGH et MEDIUM) pour tous les symboles surveillés. Chaque entrée inclut le type de signal, le niveau de confiance, la direction et le statut de résolution si disponible.
Exemple de réponse
signals: [
{
id: 1042,
symbol: BTC,
direction: long,
signal_type: smart_money_confirm,
confidence: HIGH,
composite: 0.74,
ts: 1710940821,
resolved: true,
outcome_24h: gagnant
}
],
count: 50
}
GET /v1/signals/{id}/outcome
Résultat résolu pour un signal spécifique via son ID numérique. Retourne succès/échec à chaque horizon de résolution (4h, 12h, 24h, 72h) avec le prix au moment du signal et à la résolution.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| idrequis | entier | ID du signal (segment de chemin), ex. /v1/signals/1042/outcome |
Exemple de réponse
id: 1042,
symbol: BTC,
direction: long,
confidence: HIGH,
entry_price: 63200.0,
ts: 1710940821,
outcomes: {
4h: { result: gagnant, price: 64100.0, pct: 1.41 },
12h: { result: gagnant, price: 65200.0, pct: 3.16 },
24h: { result: gagnant, price: 65800.0, pct: 4.11 },
72h: { result: en_attente, price: null, pct: null }
}
}
GET /v1/confirm-winrate
Répartition du taux de réussite des signaux de confirmation pour la clé API de l'utilisateur authentifié. Retourne les taux de réussite par appel distinct à chaque niveau de confiance, le facteur de profit et les données par symbole. Nécessite un en-tête X-API-Key valide.
Exemple de requête
"https://api.smartmoneyapi.com/v1/confirm-winrate"
Exemple de réponse
high_winrate: 0.714,
high_n: 14,
medium_winrate: 0.530,
moyen_n: 34,
précision_globale: 0.613,
total_n: 48,
facteur_de_profit: 1.77,
taux_de_réussite_horizon: 24h,
par_symbole: {
BTC: { taux_de_réussite: 0.68, n: 22 },
ETH: { taux_de_réussite: 0.55, n: 18 }
}
}
Shadow Gate
Un registre de décisions personnel immuable et uniquement en ajout. Soumettez vos décisions de trading avant ou après leur exécution ; le système calcule un score de confirmation par rapport au moteur Smart Money et ajoute une ligne permanente. Utilisez-le pour constituer un historique horodaté honnête de la correspondance entre le signal de l'API et vos propres entrées — totalement indépendant du pool mondial de taux de réussite. Les réponses des niveaux Free et Trader ont des champs de preuve masqués ; Pro renvoie l'analyse complète. Un délai de niveau s'applique aux données du niveau Free.
Soumettre une décision. Idempotent sur le Idempotency-Key en-tête de requête — la soumission de la même clé renvoie la ligne existante sans créer de doublon. Le système appelle immédiatement le moteur de confirmation et ajoute le résultat sous forme de ligne de registre immuable.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
| symboleobligatoire | chaîne de caractères | Symbole de l'actif, par ex. BTC |
| sensobligatoire | chaîne de caractères | Direction du trade : long ou short |
| strategy_idoptionnel | chaîne de caractères | Libellé de stratégie défini par l'appelant (64 caractères max). Stocké tel quel pour regroupement et filtrage. |
Exemple de requête
-H "X-API-Key: sm_your_key" \
-H "Idempotency-Key: my-signal-20260701-001" \
-H "Content-Type: application/json" \
-d '{"symbol":"BTC","side":"long","strategy_id":"ema_crossover"}' \
"https://api.smartmoneyapi.com/v1/shadow-gate/decisions"
Exemple de réponse
"id": 318,
"symbol": "BTC",
"side": "long",
"strategy_id": "ema_crossover",
"decision": "CONFIRM",
"confidence": "HIGH",
"composite": 0.74,
"size_mult": 1.5,
ts: 1710940821,
résolu: False
}
factors / adjustments champs de preuve. Pro renvoie la répartition complète des confirmations. Un délai de niveau s'applique à Free — la ligne est écrite immédiatement mais le score de confirmation peut refléter des données en cache jusqu'à 60 secondes.Listez vos propres décisions shadow-gate, les plus récentes en premier. Limité au propriétaire — seules les décisions soumises par votre clé API sont retournées.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
| limitoptionnel | integer | Nombre maximum de lignes à retourner. Par défaut : 50, max : 200 |
| cursoroptionnel | string | Curseur de pagination opaque provenant d'un champ d'une réponse précédente. next_cursor Omettre pour la première page. |
Exemple de réponse
"decisions": [
{ "id": 318, "symbol": "BTC", "side": "long", "decision": "CONFIRM", "confidence": "HIGH", "composite": 0.74, "size_mult": 1.5, "ts": 1710940821, "resolved": false },
{ "id": 317, "symbol": "ETH", "side": court, décision: SKIP, confiance: LOW, composite: -0.12, size_mult: 0.0, ts: 1710937000, résolu: True }
],
nombre: 2,
next_cursor: None
}
Décision unique par ID, incluant les preuves complètes de confirmation pour le niveau Pro. Les réponses des niveaux Free et Trader ont factors et adjustments supprimées. Renvoie 403 si la décision appartient à une autre clé API.
Exemple de réponse (Pro)
"id": 318,
"symbol": "BTC",
"side": "long",
"strategy_id": "ema_crossover",
"decision": "CONFIRM",
"confidence": "HIGH",
"composite": 0.74,
"size_mult": 1.5,
"factors": {
"derivatives": { "score": 0.81, "weight": 0.40, "weighted": 0.324 },
"onchain": { "score": 0.68, "weight": 0.35, "weighted": 0.238 },
"whale": { "score": 0.73, "weight": 0.25, "weighted": 0.183 }
},
"ts": 1710940821,
"resolved": False,
"outcome": None
}
Résolution manuelle du résultat d'une décision. Appelez cette méthode après avoir clôturé le trade pour enregistrer le résultat final dans la ligne du registre. Une fois résolue, la ligne est immuable et ne peut plus être modifiée.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
| "outcome"requis | string | Résultat du trade : win ou loss |
| "exit_price"optionnel | float | Prix de sortie du trade. Stocké pour référence ; utilisé pour calculer le P&L % si fourni. |
| "pnl_pct"optionnel | float | P&L réalisé en pourcentage de la taille de la position, par ex. 3.5 ou -1.2 |
Exemple de réponse
"id": 318,
"resolved": True,
"outcome": "win",
"exit_price": 65800.0,
"pnl_pct": 4.1,
"resolved_at": 1711027200
}
Codes d'erreur
| Statut | Code | Description |
|---|---|---|
| 400 | "invalid_params" | Paramètres de requête manquants ou invalides |
| 401 | "unauthorized" | Clé API manquante ou invalide |
| 403 | "plan_restriction" | Endpoint non disponible avec votre abonnement actuel |
| 429 | "rate_limit_exceeded" | Limite quotidienne ou instantanée atteinte |
| 500 | "internal_error" | Erreur serveur — vérifiez /health pour le statut de la source |
| 503 | "data_stale" | Source de données indisponible ; renvoie les dernières données connues |
Exemples de code
Python
r = requests.get(
"https://api.smartmoneyapi.com/v1/confirm",
params={"symbol": "BTC", "direction": "long"},
headers={X-API-Key: sm_your_key}
)
data = r.json()
print(data[confidence]) # HIGH / MEDIUM
print(data[size_mult]) # 1.5 / 1.0
API_KEY = sm_your_key
BASE_URL = https://api.smartmoneyapi.com/v1
def confirm_trade(symbol, direction):
resp = requests.get(
f{BASE_URL}/confirm,
params={symbol: symbol, direction: direction},
headers={X-API-Key: API_KEY},
timeout=5
)
resp.raise_for_status()
return resp.json()
# Dans votre boucle de trading :
signal = confirm_trade(BTC, long)
if signal[confidence] not in [HIGH, MEDIUM]:
print(Ignorer — confiance insuffisante)
else:
size = base_size * signal[size_mult]
place_order(symbol, direction, size)
JavaScript / Node.js
async function confirmTrade(symbol, direction) {
const params = new URLSearchParams({ symbol, direction });
const res = await fetch(
`https://api.smartmoneyapi.com/v1/confirm?${params}`,
{ headers: { 'X-API-Key': API_KEY } }
);
if (!resok) throw new Error(`Erreur API : ${resstatus}`);
return res.json();
}
// Utilisation
confirmTrade('BTC', 'long').then(data => {
console.log(dataconfidence, datasize_mult);
});
cURL
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long
# Obtenir les données des baleines
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/whales?symbol=BTC
# Vérifier l'utilisation
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/usage
Intégration Freqtrade
Ajoutez la confirmation Smart Money à n'importe quelle stratégie Freqtrade en surchargeant la confirm_trade_entry méthode.
from freqtrade.strategy import IStrategy
class SmartMoneyStrategy(IStrategy):
SM_API_KEY = "sm_your_key"
SM_BASE = "https://api.smartmoneyapi.com/v1"
def confirm_trade_entry(self, pair, order_type,
amount, rate, time_in_force,
current_time, entry_tag, **kwargs):
symbol = pair.split("/")[0]
if symbol not in ["BTC", "ETH", "SOL"]:
return True # Ignorer la vérification pour les symboles non pris en charge
try:
r = requests.get(
f"{self.SM_BASE}/confirm",
params={"symbol": symbol, "direction": "long"},
headers={"X-API-Key": self.SM_API_KEY},
timeout=3
).json()
return r.get("confidence") in ["HIGH", "MEDIUM"]
except:
return True # Échec ouvert en cas d'erreur API
CCXT + Smart Money
exchange = ccxt.bybit({
"apiKey": "YOUR_BYBIT_KEY",
"secret": "YOUR_BYBIT_SECRET"
})
SM_KEY = "sm_your_key"
def smart_trade(symbol, side, amount):
# Vérifier d'abord la confirmation
conf = requests.get(
"https://api.smartmoneyapi.com/v1/confirm",
params={"symbol": symbol, "direction": side},
headers={"X-API-Key": SM_KEY}
).json()
if conf["confidence"] not in ["HIGH", "MEDIUM"]:
print(f"Ignorer {symbol} {side} — confiance insuffisante.")
return None
adj_amount = amount * conf["size_mult"]
order = exchange.create_market_order(
f"{symbol}/USDT", side, adj_amount
)
print(f"Ordre passé : {adj_amount} {symbol} {side}")
return order
Consultez la page de statut de l'API pour des informations en temps réel sur son état, ou utilisez notre formulaire de contact.