Smart Money API
Uma API de inteligência profissional que agrega dados de derivativos, métricas on-chain e atividade de carteiras de baleias em uma única pontuação de confiança para seu bot de trading.
https://api.smartmoneyapi.com/v1Princípios de design
Quatro ideias moldam cada endpoint e cada pontuação que esta API retorna. Elas também são os limites honestos do que ela promete — e do que não promete.
Estratégia primeiro, não sinal primeiro. Este não é um feed de sinais de compra/venda. Você traz a estratégia e a entrada; a API diz se a estrutura de mercado ao redor — posicionamento de derivativos, funding, open interest, liquidações, fluxo on-chain e consenso das baleias — concorda com a trade que você já quer fazer.
Pontuação de confiança, não previsão binária. Cada resposta carrega uma classificação confidence (ALTO / MÉDIO / BAIXO) e uma composite de -1.0 a +1.0. Não há garantias nem chamadas de oráculo — você obtém uma leitura calibrada de concordância, com as razões por trás, para poder dimensionar proporcionalmente à convicção.
Suporte à decisão, não conselho de execução. A API retorna uma recomendação CONFIRMAR / REDUZIR / IGNORAR e um multiplicador de tamanho para sua lógica agir. Ela nunca coloca ordens, e nada aqui é aconselhamento financeiro. Você permanece responsável pelo risco, dimensionamento e execução.
Métricas vivas, não garantias fixas. Taxas de acerto, estatísticas de regime e números de precisão são calculados a partir de uma amostra móvel e mudam conforme os mercados. Nós os publicamos honestamente, inclusive quando são medíocres. Trate cada métrica como uma observação atual, não como uma promessa sobre o futuro.
Para quem esta API é
Esta API é construída para desenvolvedores de bots, algoritmos e agentes de IA em cripto que já têm um sinal de compra/venda — de uma estratégia de TA, um modelo de ML, um pipeline do Freqtrade, um alerta do TradingView ou um agente LLM — e querem uma decisão rápida CONFIRMAR / REDUZIR / IGNORAR antes de alocar capital.
Um loop típico: sua estratégia dispara "comprar BTC" → você chama GET /v1/confirm?symbol=BTC&direction=long → você confirma, reduz ou ignora a entrada e escala o tamanho por size_mult. Uma chamada, resposta JSON única de baixa latência, sem infraestrutura extra.
Ela não é um gerador de sinais independente, um produto de charting ou uma plataforma de execução. Se você não tem um sinal próprio para filtrar, comece com a página de performance para ver como a pontuação se comportou antes de integrá-la a um bot ativo.
Obter acesso
1 — Cadastre-se. Crie uma conta gratuita em signup (e-mail/senha ou Google). Nenhum cartão de crédito é necessário para o plano gratuito.
2 — Acesse seu painel. Seu painel mostra sua chave de API, plano atual e uso em tempo real contra sua cota diária.
3 — Copie sua chave de API. As chaves são prefixadas sm_. Passe-a no X-API-Key cabeçalho em cada requisição (veja Autenticação). Atualize a qualquer momento no página de preços para aumentar limites e desbloquear mais símbolos e endpoints.
Especificação, SDK e Livro de Receitas
Tudo o que você precisa para integrar rapidamente, seja escrevendo o código você mesmo ou delegando a um agente de codificação.
| Recurso | O que é |
|---|---|
| Livro de Receitas | Receitas prontas para copiar e colar para as integrações mais comuns — confirme antes da entrada, proteja um sinal do Freqtrade, dimensione por multiplicador, lide com 402/429 e conecte a um agente de codificação. |
| Especificação OpenAPI | Definição OpenAPI legível por máquina de cada endpoint. Importe para Postman/Insomnia, gere clientes ou alimente um LLM. Em github.com/tashiardit/smartmoneyapi-docs. |
| Cliente Python | Biblioteca oficial de cliente Python em github.com/tashiardit/smartmoneyapi-python. |
| /llms.txt | Um resumo em texto simples da API amigável para LLMs. Aponte Claude, Codex ou Cursor para ele (veja Agentes de Codificação). |
Início rápido em 2 minutos
Passo 1 — URL base. Cada endpoint está disponível em:
Passo 2 — Obtenha sua chave de API. Cadastre-se gratuitamente (sem necessidade de cartão de crédito) e copie sua chave do painel. Passe-a como o X-API-Key cabeçalho em cada requisição.
Passo 3 — Sua primeira chamada. Cole isto no seu terminal e substitua sm_your_key pela chave do seu painel:
Resposta esperada:
"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": ["Taxa de funding positiva em todas as plataformas", "Baleias: 67% de consenso em long"]
}
Quando confidence é HIGH ou MEDIUM e action é CONFIRM, dimensione o tamanho da sua posição por size_mult. Esse é todo o ciclo de integração. Veja Campos de Resposta para a referência completa de campos.
Autenticação
Todas as requisições exigem uma chave de API passada como o X-API-Key cabeçalho HTTP.
Sua chave de API está disponível no painel após o cadastro. Mantenha sua chave secreta — não a exponha em código do lado do cliente ou repositórios públicos.
/v1/ws/ticket com o X-API-Key cabeçalho, então conecte-se com o ticket retornado. Veja Autenticação WebSocket (tickets).Login com Google (Firebase Auth)
Os usuários podem autenticar usando sua conta do Google via Firebase Authentication. Após um login bem-sucedido com Google no cliente, troque o token de ID do Firebase por uma sessão de API vinculada. O sistema sincroniza automaticamente sua identidade do Google com o sistema de chave de API.
Corpo da Requisição
| Campo | Tipo | Descrição |
|---|---|---|
| id_tokenobrigatório | string | Token de ID do Firebase obtido após login com Google no cliente |
Exemplo de Resposta
"api_key": "sm_your_linked_key",
"uid": "firebase_uid_abc123",
"email": "[email protected]",
"plan": "trader",
"synced": true
}
Limites de Taxa
| Plano | Chamadas/Dia | Limite de Rajada | Atraso de Dados |
|---|---|---|---|
| Grátis | 50 | 2/min | 60 segundos |
| Trader | 1,000 | 20/min | Tempo real |
| Pro | 5,000 | 60/min | Tempo real |
| Empresa | 100,000 | 400/min | Tempo real |
Os cabeçalhos de limite de taxa estão incluídos em cada resposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
URL base
Todos os endpoints abaixo são relativos a esta URL base. Todas as respostas são JSON com Content-Type: application/json.
Erros
Os erros usam códigos de status HTTP padrão e um corpo JSON consistente. Sempre ramifique no código de status, não no texto da resposta. Os três que você encontrará com mais frequência:
| Status | Código | Significado e o que fazer |
|---|---|---|
| 401 | não autorizado | Chave da API ausente ou inválida. Verifique se o X-API-Key cabeçalho está presente e correto. |
| 402 | pagamento_necessário | O endpoint ou símbolo requer um plano superior ao que sua chave possui (por exemplo, uma chave gratuita chamando o firehose WebSocket). Atualize ou volte para um endpoint público. |
| 429 | limite_de_taxa_excedido | Limite diário ou de rajada atingido. Recue e tente novamente após X-RateLimit-Reset; não insista. |
Cada erro retorna o mesmo formato:
"error": "rate_limit_exceeded",
"message": "Limite diário de 50 chamadas atingido. Reinicia às 00:00 UTC.",
"status": 429
}
Para a lista completa de códigos de status (400 / 403 / 500 / 503 e mais), consulte Códigos de Erro. Uma integração robusta trata 5xx e 429 como transitórios (tente novamente com recuo) e 401/402/403 como terminais (corrija a chave ou o plano).
Melhores práticas de segurança
Envie a chave no cabeçalho, nunca na URL. Sempre passe X-API-Key como um cabeçalho HTTP. Chaves em strings de consulta (?key=) são registradas por proxies, balanceadores de carga e histórico do navegador — a autenticação ?key= legada não é mais aceita em endpoints WebSocket por exatamente esse motivo.
Mantenha as chaves no lado do servidor. Nunca incorpore uma chave de API em JavaScript do lado do cliente, um pacote de aplicativo móvel ou um repositório público. Carregue-a de uma variável de ambiente ou gerenciador de segredos. Se uma chave vazar, substitua-a.
Gire as chaves periodicamente. Regenere sua chave do painel em um cronograma e imediatamente se suspeitar de exposição. A chave antiga para de funcionar no momento em que uma nova é emitida.
Use tickets para sockets do navegador. Para transmissões em tempo real do navegador, troque sua chave por um ticket de uso único em vez de conectar com a chave bruta — veja Autenticação WebSocket (tickets).
Usando com agentes de codificação / LLMs
Construindo com Claude Code, Codex, Cursor ou qualquer agente de codificação LLM? Você pode fornecer ao agente tudo o que ele precisa para configurar esta API corretamente de uma só vez. Duas referências legíveis por máquina são publicadas:
| Recurso | URL |
|---|---|
| Resumo LLM | https://smartmoneyapi.com/llms.txt |
| Especificação OpenAPI | github.com/tashiardit/smartmoneyapi-docs |
Aponte seu agente para o /llms.txt arquivo (a convenção llms.txt) para uma visão geral concisa, depois para a especificação OpenAPI para formas exatas de solicitação/resposta. Um prompt de uma linha que funciona bem:
Leia https://smartmoneyapi.com/llms.txt e a especificação OpenAPI em
github.com/tashiardit/smartmoneyapi-docs, então adicione uma verificação
pré-negociação ao meu bot que chama GET /v1/confirm e ignora entradas
a menos que a ação seja CONFIRM.
Veja o Livro de Receitas para uma receita trabalhada de agente de codificação.
Endpoints
GET /confirm
O endpoint principal. Retorna uma pontuação de confiança composta e uma recomendação de ação para uma determinada direção de negociação. Chame isso antes de entrar em qualquer posição.
Cobertura, em termos simples. /confirm atualmente pontua BTC, ETH e SOL — os símbolos com histórico resolvido suficiente para confirmar honestamente. O screener de derivativos separadamente monitora ~519 mercados de derivativos para dados de financiamento, OI e liquidação, e o rastreamento de baleias cobre mais de 600 carteiras. Pro desbloqueia o screener completo, exportações e cobertura de mercado mais ampla; /confirm o suporte a símbolos é expandido à medida que cada mercado acumula um histórico confiável.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| símboloobrigatório | string | Símbolo do ativo. Um de: BTC, ETH, SOL (Trader+) |
| direçãoobrigatório | string | Direção da negociação: long ou short |
| fonteopcional | string | Rótulo para sua fonte de sinal (registrado para análise). Máximo de 32 caracteres. |
Exemplo de Solicitação
"https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long"
Exemplo de Resposta
"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,
fatores: {
derivativos: { pontuação: 0.81, peso: 0.40, ponderado: 0.324 },
onchain: { pontuação: 0.68, peso: 0.35, ponderado: 0.238, fonte: coinmetrics, disponível: True },
baleia: { pontuação: 0.73, peso: 0.25, fator_de_obsolescência: 1.0, ponderado: 0.183 }
},
ajustes: { concordância: 0.0, tendência: 0.0, notícias_macro: 0.0 },
pesos: { derivativos: 0.40, onchain: 0.35, whale_intel: 0.25 },
cobertura: { derivativos: True, baleia: True, onchain: True },
razões: [
Taxa de funding positiva em todas as plataformas,
LSR favorece longs: 1.42,
Baleias: 67% de consenso em long,
MVRV acima de 1.0 — bullish on-chain
]
}
Transparente por design. Cada resposta contém um factors objeto mostrando cada perna do pontuação × peso = ponderada contribuição, um adjustments objeto para ajustes pós-filtro, o weights usado, e um coverage mapa. A perna on-chain usa dados reais e gratuitos da Coin Metrics (MVRV / fluxo de exchange / endereços ativos) quando nenhuma chave Glassnode está definida. Este é um confluência pontuação — suporte à decisão, não uma taxa de vitória garantida.
Símbolos não rastreados são honestos. Um símbolo fora do universo de derivativos/baleias rastreados retorna um "confidence":"NO_DATA" / "action":"NO_DATA_SKIP" com "unsupported":true — nunca um LOW.
Campos de Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| ts | integer | Timestamp Unix do cálculo |
| symbol | string | Símbolo do ativo (BTC/ETH/SOL) |
| direction | string | Direção solicitada (long/short) |
| composite | float | Pontuação composta de confluência de -1.0 (contra extremo) a +1.0 (confirmação forte). Não é uma taxa de acerto. |
| base_composite | float | Compósito antes da aplicação dos ajustes pós-filtro |
| confidence | string | HIGH / MEDIUM / LOW / VETO / NO_DATA |
| action | string | CONFIRM_FULL / CONFIRM_REDUCED / CONFIRM_MINIMAL / VETO_SKIP / NO_DATA_SKIP |
| size_mult | float | Multiplicador sugerido para o tamanho da posição (ex.: 0.0 – 1.5) |
| unsupported | bool | true quando o símbolo está fora da cobertura (emparelhado com NO_DATA) |
| deriv_score | float | Sub-pontuação de derivativos (-1 a 1) |
| onchain_score | float | Sub-pontuação on-chain (-1 a 1) |
| whale_score | float | Sub-pontuação de consenso de baleias (-1 a 1) |
| x_score | float | Sub-pontuação de sentimento X/social (-1 a 1); 0 quando não utilizado |
| factors | object | Detalhamento por perna: score × weight = weighted para derivativos / onchain / whale / x_sentiment (onchain inclui source) |
| adjustments | object | Ajustes pós-filtro assinados (concordância, tendência, rsi_1h, news_macro, momentum, time_of_day, streak_decay) |
| weights | object | Conjunto de pesos realmente utilizado para esta avaliação |
| coverage | object | {derivatives, whale, onchain} — quais pernas tinham dados reais |
| reasons | array | Explicações legíveis por humanos para a pontuação |
GET /snapshot
Retorna um snapshot completo do mercado, incluindo todas as sub-pontuações, métricas brutas e valores de indicadores para um determinado símbolo. Útil para painéis e registros.
GET /onchain
Retorna métricas brutas on-chain: MVRV, SOPR, fluxo líquido de exchanges, razão de capitalização realizada e classificação de posição no ciclo.
GET /v1/derivatives/*
Screener de derivativos entre exchanges com mais de 500 símbolos: mapa de calor de funding rate, rankings de open interest e detecção de sinais de long/short ratio. As 10 primeiras linhas são públicas; o screener completo requer Trader ou Pro. Endpoints: /v1/derivatives/screener, /v1/derivatives/funding, /v1/derivatives/oi, /v1/derivatives/signals.
GET /v1/options/*
Análises de opções de BTC & ETH da Deribit (público, sem autenticação): razão put/call, max pain e open interest por strike. Endpoints: /v1/options/summary, /v1/options/pcr, /v1/options/oi.
GET /v1/etf/*
Fluxos líquidos diários de ETFs de BTC & ETH e detalhamento por fundo (público). Endpoints: /v1/etf/flows, /v1/etf/funds.
GET /v1/historical/*
Dados históricos de funding, open interest, long/short ratio (Binance) e OHLCV (CoinGecko) para backtesting. Endpoints: /v1/historical/funding, /v1/historical/oi, /v1/historical/lsr, /v1/historical/ohlcv.
GET /v1/dex/*
Pares em alta, busca de tokens e detalhes de pares via DexScreener (público, sem autenticação). Endpoints: /v1/dex/trending, /v1/dex/search, /v1/dex/token, /v1/dex/pair.
GET /v1/news/*
Inteligência de notícias: políticas/geopolíticas/cripto classificadas por impacto, mais Fear & Greed (público, sem autenticação). Endpoints: /v1/news/trump, /v1/news/general, /v1/news/impact, /v1/news/fear-greed.
GET /whales
Retorna dados de consenso de carteiras de baleias: divisão long/short, exposição notional total, top 10 posições (apenas Pro) e contagem de carteiras.
GET /signals
Retorna um fluxo dos sinais HIGH/MEDIUM mais recentes em todos os ativos monitorados. Útil para busca de oportunidades.
GET /v1/strategies/*
Registro transparente e somente leitura das estratégias de trading automatizadas que executam sobre os sinais Smart Money — incluindo a deriv40 Estratégia SmartMoney Copytrade (account=9). Todos os endpoints aceitam um ?account=<id> parâmetro de consulta e retornam JSON. Sem autenticação necessária (registro público).
Endpoints
GET /v1/strategies/stats?account=9— métricas principais: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— curva de equity para gráficos:{ initial_equity, curve: [{ time, equity }] }.GET /v1/strategies/trades?account=9&limit=500— registro de trades fechados: array (ou{trades:[…]}) desymbol,direction,entry_price,exit_price,pnl_usdt,pnl_percent,pnl_percent_net.GET /v1/strategies/active?account=9— posições abertas atualmente: array (ou{positions:[…]}) desymbol,side/direction,entry_price,unrealized_pnl.GET /v1/strategies/signals— detalhamento por tipo de sinal alimentando as estratégias (contagem / vitórias / taxa de acerto / pnl médio por tipo de sinal).
Performance passada não é indicativa de resultados futuros. Dados são backfillados em um único regime de ~3 meses mais trades ao vivo e são mostrados pré-taxa onde indicado.
GET /export
Baixe dados históricos de sinais como CSV para backtesting. Parâmetros: symbol, from (unix ts), to (unix ts).
GET /health
Verificação de saúde do sistema. Retorna atualização dos dados de cada fonte e status geral da API. Sem autenticação necessária.
"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
Retorna suas estatísticas de uso da API: chamadas hoje, totais mensais, limites de cota e horários de reset.
POST /webhooks
Registre uma URL HTTPS para receber pushes de eventos assinados em tempo real quando um sinal for disparado em seus ativos monitorados. Entregas incluem um X-SmartMoney-Event cabeçalho e uma assinatura HMAC-SHA256 em X-SmartMoney-Signature, com até 3 tentativas de retry com backoff.
Corpo da Requisição
| Campo | Tipo | Descrição |
|---|---|---|
| urlobrigatório | string | Endpoint HTTPS para POST de eventos (deve começar com https://) |
| eventsobrigatório | array | Nomes de eventos, ex. ["HIGH","MEDIUM","VETO"] ou ["*"] |
| symbolsobrigatório | array | Símbolos para filtrar, ex. ["BTC","ETH"] ou ["*"] |
| secretobrigatório | string | Seu segredo de assinatura, ≥ 16 caracteres (armazenado como hash) |
Verificando a assinatura
A chave HMAC é o digest SHA-256 em hex do seu segredo registrado. Calcule o HMAC-SHA256 do corpo da requisição bruta com essa chave e compare (tempo constante) contra X-SmartMoney-Signature. Veja o Guia de Implementação de Webhook.
Inteligência
GET /analysis
Retorna a classificação do regime de mercado com detecção de conflito de sinais, alimentada por IA. Analisa a concordância entre sinais, identifica divergências entre derivativos, dados on-chain e de baleias, e produz um resumo em linguagem natural com fatores de risco prospectivos e uma recomendação com horizonte temporal.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolobrigatório | string | Símbolo do ativo: BTC, ETH, ou SOL |
Exemplo de Resposta
"ts": 1710940821,
"symbol": "BTC",
"regime": "late_cycle_divergence",
"regime_label": "Fase Tardia — Divergência de Sinal",
"summary": "BTC está em uma fase tardia de ciclo de alta, com força on-chain em conflito com a sobrecarga de derivativos. Baleias estão reduzindo exposição enquanto o LSR de varejo aumenta.",
"signal_conflicts": [
"Pontuação de baleias em baixa enquanto pontuação on-chain em alta",
"Taxa de funding no maior nível em 3 meses — risco potencial de squeeze"
],
"risk_factors": ["Funding elevado", "Divergência de OI", "Redução de baleias"],
"recommendation": "Reduza exposição longa, aperte stops. Evite novas posições longas acima do preço atual.",
"time_horizon": "4h–12h"
}
GET /liquidations
Retorna duas visões complementares: (1) projeção de alavancagem levels — uma estimativa de onde os clusters de liquidação estão; e (2) um realized_heatmap — a intensidade REAL executada de liquidação forçada (preço × tempo), agregada em tempo real a partir de feeds WebSocket de exchanges públicas: Binance, OKX, Bybit, Bitget, BitMEX. O heatmap está presente quando o stream tem dados para o símbolo (ausente em um mercado muito calmo ou logo após a inicialização).
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| símboloopcional | string | Símbolo do ativo (padrão BTC). O mapa de calor real abrange símbolos de perp negociados ativamente. |
Exemplo de Resposta
"symbol": "BTC",
"cascade_risk": "HIGH",
"nearest_long_liq_pct": -3.2,
"nearest_short_liq_pct": 4.1,
// Liquidações REAL executadas — ao vivo de 5 exchanges
"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, distâncias mais próximas e totais/por lado realizados. Plano Pro: projeção completa levels mais o completo realized_heatmap (matrizes, clusters por preço, contagens por exchange). A estimativa projetada responde "onde estão as stops"; o mapa de calor realizado mostra "o que realmente foi liquidado."GET /liquidations/heatmap
Público mapa de calor de liquidação por nível de preço. Retorna uma matriz estilo Coinglass de preço × tempo de REAL executado liquidações forçadas, agrupadas pelo preço em que cada liquidação foi registrada — agregado ao vivo de feeds WebSocket públicos de exchanges: Binance, OKX, Bybit, Bitget, BitMEX. O clusters array é a saída prática: intervalos de preço classificados por valor nocional liquidado, cada um marcado com seu lado dominante. Os dados dependem do fluxo ao vivo — um símbolo muito tranquilo ou um gateway recém-reiniciado retorna a estrutura vazia bem formada mais um note. Os níveis mostrados são apenas liquidações reais, nunca estimadas.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolopcional | string | Símbolo do ativo (padrão BTC). |
| window_minutesopcional | int | Janela de retrospectiva em minutos (padrão 240, limitada a 5–1440). |
| price_bucketsopcional | int | Número de intervalos de preço (padrão 50, limitado a 5–100). |
Exemplo de Resposta
"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 é 0, clusters está vazio, e um note campo explica o porquê. É um registro de liquidações executadas — não uma previsão. Para a estimativa projetada de "onde estão as stops", use o endpoint autenticado /liquidations endpoint.GET /liquidations/onchain
Executadas liquidações on-chain de empréstimos DeFi capturadas diretamente dos nossos próprios nós completos de BSC + Avalanche — independente de qualquer bot de trading. Cobre Venus/Cream e Moolah na BSC, e AAVE V3/V2, Benqi, BankerJoe, Granary e Vinium na Avalanche. O nível Pro adicionalmente retorna at_risk posições (dependente de bot, pode estar ausente).
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| chainopcional | string | bsc ou avax. Omita para todas as chains. |
| limitopcional | integer | Máximo de linhas (padrão 100, máximo 500). Ordenado do mais recente. |
Exemplo de Resposta
"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, repay_usd_known: 148230.55 } },
nós: { bsc: { alcançável: True, bloco principal: 89173010, eventos_total: 61 } }
}
}
GET /smart-stop
Calcula níveis inteligentes de stop-loss com base no mapa de calor de liquidação atual, bandas de volatilidade e estrutura de mercado. Retorna recomendações de stop em camadas e sugestões de take-profit calibradas para o seu preço de entrada e tolerância ao risco.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolobrigatório | string | Símbolo do ativo: BTC, ETH, ou SOL |
| directionobrigatório | string | Direção da posição: long ou short |
| entry_priceopcional | float | Seu preço de entrada. Padrão: preço de mercado atual se omitido. |
| risk_pctopcional | float | Risco máximo aceitável como % da conta. Padrão: 2.0 |
Exemplo de Resposta
symbol: BTC,
direction: long,
entry_price: 96420,
stops: {
tight: { price: 95100, note: Abaixo da estrutura de 1h. Melhor para scalping. },
recommended: { price: 93800, note: Abaixo do principal cluster de liquidação em $94K. Stop padrão para swings. },
wide: { price: 91200, note: Abaixo da zona de demanda de 4h. Stop para trades posicionais. }
},
avoid_zones: [
{ low: 94200, high: 94800, reason: Cluster denso de liquidação — alto risco de slippage }
],
take_profit_suggestions: [
{ tp1: 98500, tp2: 101000, tp3: 104200 }
]
}
recommended stop. Plano Pro: Todas as três camadas de stop, avoid_zones, e sugestões completas de take-profit.GET /funding-arb
Identifica oportunidades de arbitragem de taxas de funding entre exchanges em tempo real. Retorna oportunidades classificadas com rendimento anualizado estimado, par de exchanges ideal e ação de hedge necessária para capturar o spread.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| min_spreadopcional | float | Spread mínimo da taxa de funding para incluir (como decimal). Padrão: 0.01 |
| symbolopcional | string | Filtrar por um ativo específico. Omita para escanear todos os ativos suportados. |
Exemplo de Resposta
ts: 1710940821,
opportunities: [
{
symbol: 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 pública gratuita Sem autenticação
Um endpoint público sem chave retorna as 10 melhores oportunidades com um screener cross-exchange ao vivo, ideal para incorporação ou verificações rápidas. Remove histórico de spread por símbolo e campos pesados, sendo servido de um cache de 120 segundos. Quando não há spreads de funding cross-exchange na janela de atualização, retorna um opportunities array vazio com um note — nunca dados fabricados.
opportunities: [
{
symbol: OGN,
spread_pct: 0.297667,
annualized_apr: 325.95,
long_exchange: bybit,
short_exchange: hyperliquid,
estimated_profit_per_10k: 29.77,
risk_notes: Spread baixo — garanta que as taxas não consumam a margem de arbitragem.
}
],
scanned_symbols: 222,
ts: 1783268753,
public: True,
limited: True
}
GET /smart-money/flow
Um índice direcional ponderado por qualidade de baleias por símbolo, pontuado -100 (dinheiro de baleias inclinado para venda) até +100 (inclinado para compra). Construído a partir de milhares de carteiras de baleias rastreadas na Hyperliquid — cada uma ponderada por seu próprio histórico de taxa de acerto e PnL, e decaída pela recência. Este é um índice de posicionamento, não um sinal de compra/venda ou previsão de preço. Símbolos com poucas carteiras contribuintes são marcados thin e pontuados honestamente. Página ao vivo: smart-money-flow.html.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolopcional | string | Um único símbolo (ex. BTC). Omita para obter todos os símbolos rastreados classificados por |score|. |
| window_hoursopcional | int | Janela de pontuação, limitada a 1..168. Padrão 24. |
Exemplo de Resposta
symbols: [
{
symbol: SPX,
score: -90.93,
direction: strong_short,
n_wallets: 26,
long_usd: 184200.0, short_usd: 2410000.0,
quality_weighted: True,
sample_quality: rich,
top_contributors: [ { wallet: 0x31ca…974b, direction: short, value_usd: 5338.25, weight: 0.4948 } ]
}
],
window_hours: 24,
quality_weighted: True,
ts: 1783270000,
note: Índice de posicionamento direcional de baleias ponderado por qualidade (-100..+100). Não é uma previsão de preço ou sinal de compra/venda.
}
top_contributorspor símbolo. Os pesos das carteiras são limitados a [0.25,1.0]; PnL é um proxy não realizado a partir dos snapshots de posição mais recentes.GET /v1/whales/crowding
Contexto combinado de posicionamento de baleias e aglomeração por símbolo, mesclado entre Hyperliquid + GMX v2 + Jupiter Perps. Retorna notional bruto/líquido, viés direcional, contagem de carteiras e plataformas, concentração de posição (participação dos top-3 + HHI), uma alavancagem média ponderada e intervalos de proximidade de liquidação ($ notional dentro de 5% e 10% do preço de liquidação estimado, dividido em compra/venda). Isto é contexto, não um sinal direcional. Campos que não são deriváveis são null e renderizados como — — ex. lev_wavg/crowding_index quando nenhuma posição possui alavancagem. As distâncias de liquidação são uma estimativa de margem isolada (pct_to_liq ≈ 1/lev + upnl/notional − mmr, mmr = 0.01), não preços de liquidação reportados pela exchange.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| min_notionalopcional | float | Notional bruto combinado mínimo (USD) para um símbolo ser incluído. Padrão: 1000000. |
Exemplo de Requisição
Exemplo de Resposta
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: [ As distâncias de liquidação são estimativas de margem isolada, não relatadas pela exchange. ]
}
skew é net/gross ∈ [-1,1]; crowding_index = |skew|·conc_top3·min(lev/20,1). Apenas as venues realmente presentes aparecem em venues. Posições sem alavancagem são excluídas dos buckets de liquidação em vez de serem assumidas. Chamadores anônimos recebem os 10 principais símbolos por gross (com gated: true); Trader+ recebe a lista completa.GET /v1/options/gex
Dealer exposição gama (GEX) análises para BTC & ETH, calculadas ao vivo a partir da cadeia de opções públicas da Deribit (sem autenticação). Retorna o GEX líquido do dealer por strike (convenção SpotGamma dealer-short), o nível de flip gama (strike onde o GEX líquido acumulado cruza zero), a estrutura temporal da IV (volatilidade implícita ATM por dias até o vencimento), e uma inclinação da IV (reversão de risco proxy de 25Δ). O regime GEX é positive (dealers long gamma → supressão de volatilidade) ou negative (amplificação de volatilidade). Totalmente autossuficiente — recalculado a cada chamada, sem dependência de banco de dados armazenado.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolopcional | string | BTC ou ETH apenas. Padrão: BTC. |
Exemplo de Solicitação
Exemplo de Resposta
"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 com painéis vazios — nunca GEX fabricado. A inclinação da IV usa um proxy de strike fixo de ±10% para 25Δ (o verdadeiro 25-delta requer resolver o delta por strike); adequado para exibição, documentado como uma aproximação.GET /v1/liquidations/simulate
Interativo teste de estresse de cascata de liquidação. Dada uma movimentação hipotética de preço, retorna as posições alavancadas estimadas que seriam liquidadas, volume forçado por nível de preço/lado/exchange e uma leitura de profundidade da cascata. Uma movimentação para baixo liquida longs cujo preço de liq. está no/acima do alvo; uma movimentação para cima liquida shorts cujo preço de liq. está no/abaixo dele. Dois métodos independentes são combinados: preços exatos de liquidação de baleias do Hyperliquid rastreadas com alavancagem/entrada real , mais clusters estatísticos de faixas de OI por exchange (alavancagem da multidão inferida do funding). Tudo é claramente rotulado estimated: true — não pode saber a margem por conta, cruzada vs isolada, margem adicional ou ADL.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolopcional | string | Símbolo do ativo. Padrão: BTC. |
| move_pctopcional | float | Movimentação hipotética de preço em percentual (negativo = queda, positivo = alta). Padrão: -5. |
Exemplo de Requisição
Exemplo de Resposta
"ok": true, "estimated": true, "symbol": "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 } },
"methodology": { "disclaimer": "Estimado — não pode saber a margem por conta, cruzada vs isolada, margem adicional ou ADL." }
}
ok: true, empty: true com uma mensagem em linguagem simples, não barras falsas. realized_context é uma amostra jovem e crescente do fluxo de liquidação forçada ao vivo, mostrada apenas como contexto — nunca torna a projeção "realizada".GET /v1/wallet/{addr}/profile
Um perfil de carteira multi-plataforma construído inteiramente a partir dos snapshots de posição de baleias rastreadas ao vivo. Para uma baleia Hyperliquid rastreada, retorna as posições abertas atuais, uma série temporal de PnL não realizado/exposição/contagem de posições série temporal, uma linha do tempo de atividade OPEN/CLOSE/FLIP (reconstruída pela diferença entre snapshots consecutivos), o rótulo decodificado do leaderboard da HL e um resumo do livro de ofertas. Página ao vivo: wallet-profiler.html.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| addrobrigatório | string | Endereço da carteira (segmento do caminho), ex. /v1/wallet/0x3bcae23e…/profile. |
| daysopcional | integer | Janela de retrospectiva para a série e linha do tempo. Padrão: 30. |
Exemplo de Requisição
Exemplo de Resposta
"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, taxa_de_acerto_pct: 71, negociações: 42 },
posições: [
{ corretora: hyperliquid, símbolo: ETH, direção: short,
tamanho: 1200.0, preço_de_entrada: 1800.0, pnl_não_realizado: 34800.0,
alavancagem: 20.0, valor_usd: 2160000.0 }
],
série: [ { ts: 1783330000, pnl_não_realizado: 42000.0, exposição_usd: 18400000.0, posições: 5 } ],
linha_do_tempo: [ { ts: 1783400000, evento: inversão, símbolo: ETH,
direção: short, da_direção: long, valor_usd: 2160000.0 } ],
resumo: {
posições_abertas: 5, com_lucro: 3, com_prejuízo: 2, longs: 0, shorts: 5,
pnl_não_realizado_total: -12000.0, exposição_total_usd: 21000000.0, alavancagem_mista: 19.9,
janela_dias: 30, instantâneos_na_janela: 474,
pnl_realizado: None, nota_pnl_realizado: Não derivável — apenas instantâneos abertos são vistos, nunca preenchimentos de fechamento.
}
}
}
pnl é a marcação a mercado não realizada do próprio HL, value_usd é o nocional aberto. P&L realizado por operação completa não está disponível (apenas vemos instantâneos abertos, nunca preenchimentos de fechamento) e é mostrado como null / —; eventos CLOSE na linha do tempo não carregam alegação de P&L. Um endereço válido, mas não rastreado, retorna tracked: false com uma nota; um endereço inválido retorna ok: false, error: "invalid_address" (HTTP 400). O rótulo HL-leaderboard é a posição própria do HL na descoberta, não calculado por nós.GET /flows
Retorna dados de fluxo de capital entre ativos, mostrando padrões de rotação entre BTC, ETH e SOL em múltiplas janelas de tempo. Útil para identificar qual ativo está acumulando capital e qual está sendo distribuído em um dado momento.
Exemplo de Resposta
ts: 1710940821,
fluxos: {
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 }
},
rotações_detectadas: [
Capital rotacionando de ETH para BTC na janela de 4h,
Acumulação de SOL consistente em todas as janelas
]
}
GET /whale-events
Retorna mudanças significativas em posições de baleias — aberturas, fechamentos e inversões de direção — detectadas em carteiras rastreadas e endereços on-chain na janela de retrospectiva especificada.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| símboloopcional | string | Filtrar por ativo. Omita para todos os ativos monitorados. |
| significânciaopcional | string | Filtrar por significância do evento: high, medium, ou all. Padrão: all |
| horasopcional | inteiro | Janela de retrospectiva em horas. Padrão: 24 |
Exemplo de Resposta
símbolo: BTC,
resumo: {
inversões_para_long: 3,
inversões_para_short: 1,
novas_aberturas: 7,
fechamentos: 2
},
eventos: [
{
tipo: virar_long,
carteira: 0xWhale...a4f2,
direção: long,
tamanho_usd: 4200000,
ts: 1710938400
}
]
}
summary objeto apenas. Plano Pro: Feed events completo com identificadores de carteira, tamanhos e timestamps.GET /regimes/history
Retorna dados históricos de classificação de regime para um ativo específico. Use isso para backtestar o desempenho histórico de tipos de regime específicos, quanto tempo cada tipo de regime normalmente dura e como as transições de regime ocorrem ao longo do tempo.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| símboloopcional | string | Símbolo do ativo. Padrão: BTC |
| regimeopcional | string | Filtrar por um tipo de regime específico, ex. late_cycle_divergence. Omita para todos os regimes. |
| diasopcional | inteiro | Janela de retrospectiva em dias. Padrão: 30. Máximo: 365 |
Exemplo de Resposta
símbolo: BTC,
regime_atual: divergência_tardia_ciclo,
resumo_regime: {
divergência_tardia_ciclo: { ocorrências: 4, duração_média_h: 38, retorno_médio_pct: -2.1 },
acumulação: { ocorrências: 6, duração_média_h: 72, retorno_médio_pct: 5.4 },
rompimento: { ocorrências: 3, duração_média_h: 18, retorno_médio_pct: 9.2 }
},
transições: [
{ de: acumulação, para: rompimento, ts: 1710850000 },
{ de: rompimento, para: divergência_tardia_ciclo, ts: 1710915000 }
]
}
/analysis para validar suposições de estratégia com dados históricos de desempenho de regime.GET /exchange-health
Retorna o status de saúde em tempo real para todas as exchanges monitoradas, incluindo latência por exchange, taxas de erro e indicadores de dados desatualizados. Nenhuma autenticação necessária — endpoint publicamente acessível.
Exemplo de Resposta
status_geral: ok,
ts: 1710940821,
exchanges: {
bybit: { status: ok, latência_ms: 42, taxa_erro_1h: 0.0, idade_últimos_dados_s: 18 },
binance: { status: ok, latência_ms: 38, taxa_erro_1h: 0.0, idade_últimos_dados_s: 22 },
hyperliquid: { status: degradado, latência_ms: 310, taxa_erro_1h: 0.04, idade_últimos_dados_s: 95 },
okx: { status: ok, latência_ms: 55, taxa_erro_1h: 0.0, idade_últimos_dados_s: 30 }
}
}
GET /sentiment
Retorna um índice de Medo & Ganância (0-100) em tempo real, calculado a partir do sentimento de derivativos, atividade de baleias, volatilidade e sinais sociais. Inclui detalhamento por componente e histórico de 24 horas para análise de tendência.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| símboloopcional | string | Símbolo do ativo. Padrão: BTC |
Exemplo de Resposta
"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
}
Integrações
GET /tradingview/setup
Retorna sua configuração personalizada de integração com o TradingView: URL do webhook, segredo para validação e indicadores Pine Script prontos para uso que se conectam diretamente à Smart Money API. Copie e cole o Pine Script no TradingView para sobrepor nossos sinais em qualquer gráfico.
Exemplo de Resposta
"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
Recebe um alerta do TradingView, processa-o através /confirm, e retorna a confirmação. O TradingView não pode enviar cabeçalhos personalizados, então autentique incluindo seu webhook secret no corpo JSON (este endpoint não usa X-API-Key). A resposta encapsula a confirmação e adiciona um nível superior action de CONFIRMED (confiança do daemon HIGH/MEDIUM) ou VETOED.
Corpo da Requisição
"secret": "your_webhook_secret",
"symbol": "BTC",
"direction": "long",
"timeframe": "1h",
"strategy": "EMA crossover",
"price": 67500.0
}
Obrigatório: secret, symbol, direction (long|short). Opcional: source, timeframe, strategy, price.
Personalização
GET /preferences
Retorna suas configurações de personalização atuais, incluindo parâmetros padrão de negociação, perfil de risco, lista de observação e preferências de notificação.
Atualize as preferências enviando um corpo JSON com qualquer subconjunto dos campos abaixo. Campos omitidos mantêm seus valores atuais.
Campos de Preferência
| Campo | Tipo | Descrição |
|---|---|---|
| default_trade_size_usd | float | Tamanho padrão da posição em USD para cálculos de Kelly e smart-stop |
| risk_tolerance | string | conservative, moderate, ou aggressive |
| default_risk_pct | float | Risco padrão por negociação como % da conta. Usado por /smart-stop quando risk_pct é omitido |
| watchlist | array | Lista ordenada de símbolos de ativos, ex. ["BTC","ETH","SOL"] |
| notification_email | string | Endereço de e-mail para entrega de alertas |
| timezone | string | String de fuso horário IANA, ex. America/New_York |
"default_trade_size_usd": 5000,
"risk_tolerance": "moderate",
"default_risk_pct": 1.5,
"watchlist": ["BTC", "ETH", "SOL"]
}
GET /watchlist
Retorna um snapshot do status de confirmação e métricas de risco principais para todos os símbolos na sua watchlist configurada. Fornece uma visão geral de múltiplos ativos sem a necessidade de chamadas /confirm separadas para cada símbolo.
Exemplo de Resposta
"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 em Tempo Real (Swaps ao Vivo)
Stream de swaps DEX ≥ $500 detectados em tempo real a partir dos nossos próprios nós BSC e Avalanche. Dois transportes estão disponíveis: um stream público de Server-Sent Events (SSE) para clientes gratuitos/navegadores, e um firehose WebSocket de baixa latência para planos pagos. Os eventos são transmitidos em segundos após a inclusão em um bloco.
Stream Público SSE (Gratuito)
Nenhuma autenticação necessária. Suporte nativo EventSource em todos os navegadores modernos. O servidor emite swap eventos e batimentos periódicos para manter a conexão ativa.
es.addEventListener("swap", e => {
const swap = JSON.parse(e.data);
console.log(swap.chain, swap.pair, swap.amount_usd);
});
WebSocket Firehose (Pago)
Autenticação (recomendado): nunca coloque sua chave de longa duração na URL — ela é registrada por proxies e salva no histórico do navegador. Em vez disso, POST sua chave para /v1/ws/ticket usando o cabeçalho seguro X-API-Key , então abra o socket com o ticket de uso único retornado ticket (válido por ~60s, resgatado uma vez). Clientes do lado do servidor que podem definir cabeçalhos podem passar X-API-Key diretamente no handshake. Chaves de nível gratuito recebem uma 402 payment_required resposta. Um hello frame é enviado na conexão com seu nível e o limite de transmissão.
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. Abra o socket com o ticket de uso único
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);
};
Autenticação WebSocket (tickets)
Por que: nunca coloque sua chave de API em uma URL WebSocket — strings de consulta são registradas por proxies, balanceadores de carga e salvas no histórico do navegador. Em vez disso, troque sua chave por um ticket de curta duração e uso único ticket por meio de um POST autenticado normal, então conecte-se com esse ticket.
Fluxo: POST para /v1/ws/ticket com seu X-API-Key cabeçalho → receba { "ticket": "…", "expires_in": 60 }. Então abra wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=<ticket>O ticket é de uso único e expira em ~60 segundosClientes do lado do servidor que podem definir cabeçalhos de solicitação podem passar X-API-Key diretamente no handshake do WebSocket — nenhum ticket necessário.
Gera um ticket único para um handshake WebSocket autenticado. Autentique com o X-API-Key cabeçalho (sua chave nunca sai dos cabeçalhos da solicitação). O ticket retornado pode ser resgatado uma vez em /v1/ws/live-swaps antes de expirar.
"https://api.smartmoneyapi.com/v1/ws/ticket"
Exemplo de Resposta
"ticket": "wst_9f3c1a8e4b2d…",
"expires_in": 60
}
Campos de Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| ticket | string | Token de uso único para anexar como ?ticket= na URL do WebSocket. Resgatado uma vez, depois invalidado. |
| expires_in | number | Segundos até o ticket expirar (~60). Gere um novo ticket por tentativa de conexão. |
Nota: a autenticação legada por ?key= parâmetro de consulta é não mais aceita nos endpoints WebSocket por razões de segurança. Use um ticket (clientes de navegador) ou o X-API-Key cabeçalho de handshake (clientes do lado do servidor).
Snapshot REST
Retorna os últimos N swaps transmitidos do buffer rolante. Útil para primeira renderização em painéis antes da abertura da conexão de stream. Também disponível: /v1/live-swaps/status para estatísticas de transmissão.
Esquema de Evento
| Campo | Tipo | Descrição |
|---|---|---|
| chain | string | bsc ou avalanche |
| dex | string | Nome do roteador (por exemplo, pancakeswap_v2, traderjoe) ou unknown_dex |
| swapper | string | Endereço 0x completo da carteira que executou a swap |
| swapper_short | string | Forma abreviada para exibição (ex. 0xb300…028d) |
| swapper_url | string | Link direto para o swapper no explorador de blocos da cadeia |
| tx_hash | string | Hash da transação |
| explorer_url | string | Link direto para a transação no BscScan / Snowtrace |
| token_in | string | Símbolo do token vendido (ex. USDT) |
| token_out | string | Símbolo do token comprado |
| amount_usd | number | Valor em USD da swap (mínimo: $500) |
| pair | string | Rótulo formatado do par (ex. USDT → USDC) |
| block | number | Número do bloco onde a swap foi minerada |
| timestamp | number | Segundos de época Unix |
| significance | string | low / medium / high / critical com base no tamanho em USD |
| seq | number | Número de sequência de transmissão monotônico — use para detecção de lacunas |
POST /alerts/conditions
Crie regras de alerta personalizadas que são acionadas quando uma métrica especificada ultrapassa um limite. Os alertas são entregues via webhook, e-mail ou feed de notificações do painel, dependendo de suas preferências.
Retorna uma lista de todas as suas condições de alerta configuradas com seus IDs, definições e status atual.
Remove permanentemente uma condição de alerta pelo seu ID.
Retorna eventos recentes de acionamento de alerta com carimbos de data/hora, condições correspondentes e o valor da métrica no momento do acionamento.
Criar Alerta — Corpo da Solicitação
| Campo | Tipo | Descrição |
|---|---|---|
| nomeobrigatório | string | Rótulo legível para este alerta (máx. 64 caracteres) |
| métricaobrigatório | string | A métrica a ser monitorada. Consulte a tabela de métricas disponíveis abaixo. |
| símboloopcional | string | Contexto do ativo. Necessário para métricas escopo de símbolo, como funding_rate. |
| operadorobrigatório | string | Operador de comparação: gt, lt, eq, crosses_above, crosses_below |
| limiarobrigatório | float | Valor numérico para comparar com a métrica |
| entregaopcional | string | Canal de entrega, por exemplo telegram (padrão) ou webhook |
| cooldown_minutesopcional | integer | Mínimo de minutos entre re-disparos (padrão 60) |
A lista ao vivo de métricas e operadores válidos é retornada por GET /v1/alerts/conditions como available_metrics e available_operators.
Métricas Disponíveis
| Métrica | Descrição |
|---|---|
| funding_rate | Taxa de funding atual para o símbolo (como decimal) |
| global_lsr | Razão global long/short para o símbolo |
| long_pct | Porcentagem de contas net long para o símbolo |
| top_trader_lsr | Razão long/short dos top traders para o símbolo |
| taker_ratio | Razão de compra/venda dos takers para o símbolo |
| mvrv | Razão Valor de Mercado para Valor Realizado (BTC/ETH) |
| sopr | Razão de Lucro de Saída Gasta (BTC/ETH) |
| exchange_net_flow | Sinal de fluxo líquido on-chain de exchanges |
| accumulation | Sinal de acumulação on-chain |
| whale_long_pct | Porcentagem de carteiras de baleias rastreadas com posições longas para o símbolo |
| whale_n_wallets | Número de carteiras de baleias rastreadas com uma posição no símbolo |
| composite_long | Pontuação composta para o símbolo consultado na direção long |
| composite_short | Pontuação composta para o símbolo consultado na direção short |
| funding_spread | Spread de funding entre plataformas para o símbolo |
"name": "BTC funding rate spike",
"metric": "funding_rate",
"symbol": "BTC",
"operator": "gt",
"threshold": 0.05
}
GET /kelly
Retorna recomendações de dimensionamento de posição pelo Critério de Kelly calibradas para o desempenho histórico do sinal para o símbolo, nível de confiança e direção. Baseia o tamanho da posição em taxas de vitória empíricas para evitar alavancagem excessiva.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolobrigatório | string | Símbolo do ativo: BTC, ETH, ou SOL |
| confidenceopcional | string | Nível de confiança do sinal para modelar: HIGH, MEDIUM, ou LOW. Padrão: HIGH |
| directionopcional | string | Direção da operação: long ou short. Padrão: long |
| account_sizeopcional | float | Tamanho da conta em USD para calcular suggested_size_usd. Padrão: 10000 |
Exemplo de Resposta
"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 recomendado para negociação ao vivo para considerar erros de estimativa."
}
GET /performance
Retorna estatísticas históricas de precisão para sinais emitidos pela API, divididas por nível de confiança. Útil para entender a confiabilidade dos sinais antes de alocar capital.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| symbolopcional | string | Filtrar por ativo. Omita para estatísticas agregadas de todos os símbolos. |
| daysopcional | integer | Janela de retrospectiva em dias. Padrão: 30 |
Exemplo de Resposta
"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 }
}
}
Estatísticas & Sinais
GET /v1/stats
Estatísticas de desempenho honestas em todo o site, provenientes de smart_money_confirm resultados de chamadas distintas. Retorna taxas de acerto nos níveis de confiança HIGH e MEDIUM, precisão geral, fator de lucro e um detalhamento por símbolo. Todos os números são in-sample durante a janela de pontuação; consulte calibration.html para contexto e metodologia de forward-holdout.
Exemplo de Resposta
"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": "chamadas de confirmação distintas, resultados resolvidos em 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 objeto é o único número acumulado em dados que o avaliador nunca viu — observe-o crescer ao longo do tempo. Veja calibration.html para a metodologia completa e o limite entre in-sample e forward-test.GET /v1/signals/performance
Acompanhamento de resultados de sinais em múltiplos horizontes de resolução (4h, 12h, 24h, 72h). Retorna taxas de acerto por horizonte, contagem total de sinais e um detalhamento por tipo de sinal.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| daysopcional | integer | Janela de retrospectiva em dias. Padrão: 30 |
| signal_typeopcional | string | Filtrar por tipo, por exemplo smart_money_confirm ou regime_flip. Omita para todos os tipos. |
| symbolopcional | string | Filtrar por símbolo do ativo, por exemplo BTC. Omita para agregar todos os símbolos. |
Exemplo de Resposta
"signal_type": "smart_money_confirm",
"symbol": "BTC",
"days": 30,
"total_signals": 48,
horizontes: {
4h: { taxa_de_acerto: 0.65, resolvido: 46 },
12h: { taxa_de_acerto: 0.61, resolvido: 44 },
24h: { taxa_de_acerto: 0.58, resolvido: 40 },
72h: { taxa_de_acerto: 0.54, resolvido: 32 }
},
detalhamento_por_tipo: {
confirmação_smart_money: { contagem: 35, taxa_de_acerto_24h: 0.61 },
mudança_de_regime: { contagem: 13, taxa_de_acerto_24h: 0.47 }
}
}
GET /v1/signals/recent
Feed de sinais HIGH e MEDIUM recentemente publicados em todos os símbolos monitorados. Cada entrada inclui o tipo de sinal, nível de confiança, direção e status de resolução, quando disponível.
Exemplo de Resposta
sinais: [
{
id: 1042,
símbolo: BTC,
direção: long,
tipo_de_sinal: confirmação_smart_money,
confiança: HIGH,
composto: 0.74,
ts: 1710940821,
resolvido: true,
resultado_24h: vitória
}
],
contagem: 50
}
GET /v1/signals/{id}/outcome
Resultado resolvido para um único sinal pelo seu ID numérico. Retorna acerto/erro em cada horizonte de resolução (4h, 12h, 24h, 72h) junto com o preço no momento do sinal e na resolução.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| idobrigatório | inteiro | ID do Sinal (segmento do caminho), por exemplo /v1/signals/1042/outcome |
Exemplo de Resposta
id: 1042,
símbolo: BTC,
direção: long,
confiança: HIGH,
preço_de_entrada: 63200.0,
ts: 1710940821,
resultados: {
4h: { resultado: vitória, preço: 64100.0, pct: 1.41 },
12h: { resultado: vitória, preço: 65200.0, pct: 3.16 },
24h: { resultado: vitória, preço: 65800.0, pct: 4.11 },
72h: { resultado: pendente, preço: null, pct: null }
}
}
GET /v1/confirm-winrate
Detalhamento da taxa de vitória de sinais de confirmação para a chave de API autenticada do próprio usuário. Retorna taxas de vitória de chamadas distintas em cada nível de confiança, fator de lucro e números por símbolo. Requer um cabeçalho válido. X-API-Key cabeçalho.
Exemplo de Solicitação
"https://api.smartmoneyapi.com/v1/confirm-winrate"
Exemplo de Resposta
alta_taxa_de_vitória: 0.714,
alta_n: 14,
taxa_de_vitória_média: 0.530,
médio_n: 34,
precisão_geral: 0.613,
geral_n: 48,
fator_de_lucro: 1.77,
horizonte_de_taxa_de_acerto: 24h,
por_símbolo: {
BTC: { taxa_de_acerto: 0.68, n: 22 },
ETH: { taxa_de_acerto: 0.55, n: 18 }
}
}
Shadow Gate
Um livro-razão pessoal imutável e somente de acréscimo. Envie suas decisões de negociação antes ou depois de executá-las; o sistema calcula uma pontuação de confirmação contra o mecanismo Smart Money e acrescenta uma linha permanente. Use-o para construir um registro honesto e carimbado no tempo de como o sinal da API se alinhou com suas próprias entradas — totalmente independente do pool global de taxa de acerto. As respostas das camadas Grátis e Trader têm os campos de evidência removidos; a camada Pro retorna a análise completa. Um atraso de camada se aplica aos dados da camada Grátis.
Envie uma decisão. Idempotente no Idempotency-Key cabeçalho da solicitação — reenviar a mesma chave retorna a linha existente sem criar uma duplicata. O sistema chama imediatamente o mecanismo de confirmação e acrescenta o resultado como uma linha imutável no livro-razão.
Corpo da Solicitação
| Campo | Tipo | Descrição |
|---|---|---|
| símboloobrigatório | string | Símbolo do ativo, por exemplo BTC |
| ladoobrigatório | string | Direção da negociação: long ou short |
| id_estratégiaopcional | string | Rótulo de estratégia definido pelo chamador (máximo de 64 caracteres). Armazenado como está para agrupamento e filtragem. |
Exemplo de Solicitação
-H "X-API-Key: sm_your_key" \
-H "Idempotency-Key: my-signal-20260701-001" \
-H "Content-Type: application/json" \
-d '{"símbolo":"BTC","lado":"long","id_estratégia":"ema_crossover"}' \
"https://api.smartmoneyapi.com/v1/shadow-gate/decisions"
Exemplo de Resposta
"id": 318,
"símbolo": "BTC",
"lado": "long",
"id_estratégia": "ema_crossover",
"decisão": "CONFIRM",
"confiança": "HIGH",
"composto": 0.74,
"size_mult": 1.5,
"ts": 1710940821,
"resolvido": false
}
factors / adjustments campos de evidência. A camada Pro retorna a análise completa de confirmação. Um atraso de camada se aplica à camada Grátis — a linha é escrita imediatamente, mas a pontuação de confirmação pode refletir dados em cache com até 60 segundos de idade.Liste suas próprias decisões do shadow-gate, as mais recentes primeiro. Escopo do proprietário — apenas as decisões enviadas pela sua chave de API são retornadas.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| limiteopcional | inteiro | Número máximo de linhas a retornar. Padrão: 50, máximo: 200 |
| cursoropcional | string | Cursor de paginação opaco de uma resposta anterior do next_cursor campo. Omita para a primeira página. |
Exemplo de Resposta
"decisões": [
{ "id": 318, "símbolo": "BTC", "lado": "long", "decisão": "CONFIRM", "confiança": "HIGH", "composto": 0.74, "size_mult": 1.5, "ts": 1710940821, "resolvido": false },
{ "id": 317, "símbolo": "ETH", "lado": short, decisão: SKIP, confiança: LOW, composto: -0.12, size_mult: 0.0, ts: 1710937000, resolvido: True }
],
contagem: 2,
next_cursor: None
}
Decisão única por ID, incluindo todas as evidências de confirmação para o nível Pro. As respostas dos níveis Free e Trader têm factors e adjustments removidos. Retorna 403 se a decisão pertence a uma chave de API diferente.
Exemplo de Resposta (Pro)
id: 318,
símbolo: BTC,
lado: long,
strategy_id: ema_crossover,
decisão: CONFIRM,
confiança: HIGH,
composto: 0.74,
size_mult: 1.5,
fatores: {
derivativos: { pontuação: 0.81, peso: 0.40, ponderado: 0.324 },
onchain: { pontuação: 0.68, peso: 0.35, ponderado: 0.238 },
whale: { pontuação: 0.73, peso: 0.25, ponderado: 0.183 }
},
ts: 1710940821,
resolvido: False,
resultado: None
}
Resolva manualmente o resultado de uma decisão. Chame isso após fechar a negociação para registrar o resultado final na linha do ledger. Uma vez resolvida, a linha é imutável e não pode ser alterada novamente.
Corpo da Requisição
| Campo | Tipo | Descrição |
|---|---|---|
| resultadoobrigatório | string | Resultado da negociação: win ou loss |
| exit_priceopcional | float | Preço de saída da negociação. Armazenado para referência; usado para calcular o P&L % se fornecido. |
| pnl_pctopcional | float | P&L realizado como uma porcentagem do tamanho da posição, por exemplo 3.5 ou -1.2 |
Exemplo de Resposta
id: 318,
resolvido: True,
resultado: win,
exit_price: 65800.0,
pnl_pct: 4.1,
resolved_at: 1711027200
}
Códigos de Erro
| Status | Código | Descrição |
|---|---|---|
| 400 | invalid_params | Parâmetros de consulta ausentes ou inválidos |
| 401 | unauthorized | Chave de API ausente ou inválida |
| 403 | plan_restriction | Endpoint não disponível no seu plano atual |
| 429 | rate_limit_exceeded | Limite diário ou de rajada atingido |
| 500 | internal_error | Erro do servidor — verifique /health para o status da fonte |
| 503 | data_stale | Fonte de dados indisponível; retornado com os últimos dados conhecidos |
Exemplos de Código
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[confiança]) # 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()
# No seu loop de trading:
signal = confirm_trade(BTC, long)
if signal[confiança] not in [HIGH, MEDIUM]:
print(Ignorando — confiança insuficiente)
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(`Erro na API: ${resstatus}`);
return res.json();
}
// Uso
confirmTrade('BTC', 'long').then(data => {
console.log(dataconfiança, datasize_mult);
});
cURL
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long
# Obter dados de baleias
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/whales?symbol=BTC
# Verificar uso
curl -X GET \
-H X-API-Key: sm_your_key \
https://api.smartmoneyapi.com/v1/usage
Integração Freqtrade
Adicione a confirmação do Smart Money a qualquer estratégia do Freqtrade substituindo o confirm_trade_entry método.
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 # Pular verificação para não suportados
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 # Falha aberta em erro de 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):
# Verifique a confirmação primeiro
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"Ignorando {symbol} {side} — confiança insuficiente.")
return None
adj_amount = amount * conf["size_mult"]
order = exchange.create_market_order(
f"{symbol}/USDT", side, adj_amount
)
print(f"Ordem colocada: {adj_amount} {symbol} {side}")
return order
Verifique a página de status da API para informações de saúde em tempo real, ou use nosso formulário de contato.