Smart Money API
Una API de inteligencia de grado profesional que agrega datos de derivados, métricas on-chain y actividad de billeteras de ballenas en una única puntuación de confianza para tu bot de trading.
https://api.smartmoneyapi.com/v1Principios de diseño
Cuatro ideas dan forma a cada endpoint y a cada puntuación que devuelve esta API. También son los límites honestos de lo que promete — y no promete.
Primero la estrategia, no primero la señal. Esto no es un feed de señales de compra/venta. Tú traes la estrategia y la entrada; la API te dice si la estructura del mercado circundante — posicionamiento de derivados, financiación, interés abierto, liquidaciones, flujo on-chain y consenso de ballenas — está de acuerdo con la operación que ya quieres realizar.
Puntuación de confianza, no predicción binaria. Cada respuesta lleva una calificación confidence (ALTA / MEDIA / BAJA) y una composite de -1.0 a +1.0. No hay garantías ni llamadas de oráculo — obtienes una lectura calibrada de acuerdo, con las razones detrás de ella, para que puedas dimensionar proporcionalmente a tu convicción.
Apoyo a la decisión, no consejo de ejecución. La API devuelve una recomendación CONFIRMAR / REDUCIR / OMITIR y un multiplicador de tamaño para tu lógica para actuar. Nunca coloca órdenes, y nada aquí es consejo financiero. Tú sigues siendo responsable del riesgo, el tamaño y la ejecución.
Métricas vivas, no garantías fijas. Las tasas de acierto, estadísticas de régimen y cifras de precisión se calculan a partir de una muestra móvil y cambian a medida que los mercados se mueven. Las publicamos honestamente, incluso cuando son mediocres. Trata cada métrica como una observación actual, no como una promesa sobre el futuro.
Para quién es esta API
Esta API está diseñada para desarrolladores de bots, algoritmos y agentes de IA en cripto que ya tienen una señal de compra/venta — desde una estrategia de TA, un modelo de ML, un pipeline de Freqtrade, una alerta de TradingView o un agente LLM — y desean una decisión rápida previa a la operación CONFIRMAR / REDUCIR / OMITIR antes de comprometer capital.
Un ciclo típico: tu estrategia emite "compra BTC" → llamas GET /v1/confirm?symbol=BTC&direction=long → confirmas, reduces u omites la entrada y ajustas el tamaño por size_mult. Una llamada, una única respuesta JSON de baja latencia, sin infraestructura adicional.
Es no un generador de señales independiente, un producto de gráficos o un lugar de ejecución. Si no tienes tu propia señal para filtrar, comienza con la página de rendimiento para ver cómo se ha comportado la puntuación antes de integrarla en un bot en vivo.
Obtener acceso
1 — Regístrate. Crea una cuenta gratuita en signup (correo electrónico/contraseña o Google). No se requiere tarjeta de crédito para el nivel gratuito.
2 — Abre tu panel de control. Tu panel de control muestra tu clave API, plan actual y uso en vivo frente a tu cuota diaria.
3 — Copia tu clave API. Las claves tienen el prefijo sm_. Pásala como el X-API-Key encabezado en cada solicitud (ver Autenticación). Actualiza en cualquier momento en el página de precios para aumentar los límites y desbloquear más símbolos y endpoints.
Especificación, SDK y Libro de recetas
Todo lo que necesitas para integrarte rápidamente, ya sea que escribas el código tú mismo o lo delegues a un agente de programación.
| Recurso | Qué es |
|---|---|
| Libro de recetas | Recetas copiar-pegar para las integraciones más comunes: confirmar antes de entrar, filtrar una señal de Freqtrade, dimensionar por multiplicador, manejar 402/429 y conectarlo a un agente de programación. |
| Especificación OpenAPI | Definición OpenAPI legible por máquina de cada endpoint. Importa en Postman/Insomnia, genera clientes o alimenta a un LLM. En github.com/tashiardit/smartmoneyapi-docs. |
| Cliente Python | Biblioteca oficial de cliente Python en github.com/tashiardit/smartmoneyapi-python. |
| /llms.txt | Un resumen en texto plano del API compatible con LLMs. Dirígelo a Claude, Codex o Cursor (ver Agentes de Programación). |
Inicio rápido en 2 minutos
Paso 1 — URL base. Cada endpoint está bajo:
Paso 2 — Obtén tu clave API. Regístrate gratis (no se requiere tarjeta de crédito) y copia tu clave desde el panel de control. Pásala como el X-API-Key encabezado en cada solicitud.
Paso 3 — Tu primera llamada. Pega esto en tu terminal y reemplaza sm_your_key con la clave de tu panel de control:
Respuesta 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": ["Tasa de financiación positiva en todas las plataformas", "Ballenas: 67% de consenso en largo"]
}
Cuando confidence es HIGH o MEDIUM y action es CONFIRM, escala el tamaño de tu posición por size_mult. Ese es todo el ciclo de integración. Consulta Campos de respuesta para la referencia completa de campos.
Autenticación
Todas las solicitudes requieren una clave API proporcionada en la X-API-Key cabecera HTTP.
Tu clave API está disponible en el panel de control después de registrarte. Mantén tu clave en secreto — no la expongas en código del lado del cliente o repositorios públicos.
/v1/ws/ticket con la X-API-Key cabecera, luego conéctate con el ticket devuelto. Consulta Autenticación WebSocket (tickets).Inicio de sesión con Google (Firebase Auth)
Los usuarios pueden autenticarse usando su cuenta de Google mediante Firebase Authentication. Después de un inicio de sesión exitoso con Google en el cliente, intercambia el token de ID de Firebase por una sesión API vinculada. El sistema sincroniza automáticamente tu identidad de Google con el sistema de claves API.
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| id_tokenrequerido | string | Token de ID de Firebase obtenido después del inicio de sesión con Google en el cliente |
Ejemplo de respuesta
"api_key": "sm_your_linked_key",
"uid": "firebase_uid_abc123",
"email": "[email protected]",
"plan": "trader",
"synced": true
}
Límites de tasa
| Plan | Llamadas/Día | Límite de ráfaga | Retraso de datos |
|---|---|---|---|
| Free | 50 | 2/min | 60 segundos |
| Trader | 1,000 | 20/min | Tiempo real |
| Pro | 5,000 | 60/min | Tiempo real |
| Empresa | 100,000 | 400/min | Tiempo real |
Los encabezados de límite de tasa están incluidos en cada respuesta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
URL base
Todos los endpoints a continuación son relativos a esta URL base. Todas las respuestas son JSON con Content-Type: application/json.
Errores
Los errores utilizan códigos de estado HTTP estándar y un cuerpo JSON consistente. Siempre bifurque según el código de estado, no según el texto de la respuesta. Los tres que encontrará con más frecuencia:
| Estado | Código | Significado y qué hacer |
|---|---|---|
| 401 | no autorizado | Falta o es inválida la clave API. Verifique que el X-API-Key encabezado esté presente y sea correcto. |
| 402 | pago_requerido | El endpoint o símbolo requiere un plan superior al que tiene su clave (por ejemplo, una clave gratuita llamando al WebSocket firehose). Actualice o recurra a un endpoint público. |
| 429 | límite_de_tasa_excedido | Se alcanzó el límite diario o de ráfaga. Retroceda y reintente después de X-RateLimit-Reset; no insista. |
Cada error devuelve la misma forma:
"error": "rate_limit_exceeded",
"message": "Se alcanzó el límite diario de 100 llamadas. Se reinicia a las 00:00 UTC.",
"status": 429
}
Para la lista completa de códigos de estado (400 / 403 / 500 / 503 y más), consulte Códigos de error. Una integración robusta trata los 5xx y 429 como transitorios (reintentar con retroceso) y 401/402/403 como terminales (corregir la clave o el plan).
Mejores prácticas de seguridad
Envíe la clave en el encabezado, nunca en la URL. Siempre pase X-API-Key como un encabezado HTTP. Las claves en las cadenas de consulta (?key=) se registran por proxies, balanceadores de carga y el historial del navegador — la autenticación ?key= legacy ya no se acepta en los endpoints WebSocket por esta misma razón.
Mantenga las claves del lado del servidor. Nunca incruste una clave API en JavaScript del lado del cliente, un paquete de aplicación móvil o un repositorio público. Cárguela desde una variable de entorno o un administrador de secretos. Si una clave se filtra, rótela.
Rote las claves periódicamente. Regenere su clave desde el panel de control según un horario e inmediatamente si sospecha exposición. La clave antigua deja de funcionar en el momento en que se emite una nueva.
Use boletos para sockets de navegador. Para transmisiones en tiempo real desde el navegador, intercambie su clave por un boleto de un solo uso en lugar de conectarse con la clave cruda — consulte Autenticación WebSocket (boletos).
Uso con agentes de codificación / LLMs
¿Está construyendo con Claude Code, Codex, Cursor o cualquier agente de codificación LLM? Puede entregarle al agente todo lo que necesita para conectar esta API correctamente de una vez. Se publican dos referencias legibles por máquina:
| Recurso | URL |
|---|---|
| Resumen LLM | https://smartmoneyapi.com/llms.txt |
| Especificación OpenAPI | github.com/tashiardit/smartmoneyapi-docs |
Dirija su agente al /llms.txt archivo (la convención llms.txt) para obtener una descripción general concisa, luego a la especificación OpenAPI para obtener las formas exactas de solicitud/respuesta. Un mensaje de una línea que funciona bien:
Lea https://smartmoneyapi.com/llms.txt y la especificación OpenAPI en
github.com/tashiardit/smartmoneyapi-docs, luego agregue una verificación
previa al comercio a mi bot que llame a GET /v1/confirm y omita entradas
a menos que la acción sea CONFIRM.
Consulte el Libro de recetas para obtener una receta trabajada de agente de codificación.
Endpoints
GET /confirm
El endpoint principal. Devuelve una puntuación de confianza compuesta y una recomendación de acción para una dirección de comercio dada. Llame a esto antes de ingresar a cualquier posición.
Cobertura, en términos simples. /confirm actualmente puntúa BTC, ETH y SOL — los símbolos con suficiente historial resuelto para confirmar honestamente. El filtro de derivados por separado monitorea ~519 mercados de derivados para datos de financiamiento, OI y liquidación, y el seguimiento de ballenas cubre más de 600 billeteras. Pro desbloquea el filtro completo, exportaciones y una cobertura de mercado más amplia; /confirm el soporte de símbolos se expande a medida que cada mercado acumula un historial confiable.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| símbolorequerido | cadena | Símbolo del activo. Uno de: BTC, ETH, SOL (Trader+) |
| direcciónrequerido | cadena | Dirección del comercio: long o short |
| fuenteopcional | cadena | Etiqueta para su fuente de señal (registrada para análisis). Máx. 32 caracteres. |
Ejemplo de solicitud
"https://api.smartmoneyapi.com/v1/confirm?symbol=BTC&direction=long"
Ejemplo de respuesta
"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,
factores: {
derivados: { puntuación: 0.81, peso: 0.40, ponderado: 0.324 },
onchain: { puntuación: 0.68, peso: 0.35, ponderado: 0.238, fuente: coinmetrics, disponible: True },
ballena: { puntuación: 0.73, peso: 0.25, factor_de_obsolescencia: 1.0, ponderado: 0.183 }
},
ajustes: { acuerdo: 0.0, tendencia: 0.0, noticias_macro: 0.0 },
pesos: { derivados: 0.40, onchain: 0.35, whale_intel: 0.25 },
cobertura: { derivados: True, ballena: True, onchain: True },
razones: [
Tasa de financiamiento positiva en todas las plataformas,
LSR favorece las posiciones largas: 1.42,
Ballenas: 67% de consenso largo,
MVRV por encima de 1.0 — alcista en cadena
]
}
Transparente por diseño. Cada respuesta incluye un factors objeto que muestra el puntuación × peso = contribución ponderada, un adjustments objeto para ajustes posteriores al filtro, el weights utilizado, y un coverage mapa. La parte onchain utiliza datos gratuitos en tiempo real de Coin Metrics (MVRV / flujo de intercambio / direcciones activas) cuando no se establece una clave de Glassnode. Este es un puntaje de confluencia multifactorial — soporte para decisiones, no una tasa de ganancia garantizada.
Los símbolos no rastreados son honestos. Un símbolo fuera del universo rastreado de derivados/ballenas devuelve una "confidence":"NO_DATA" / "action":"NO_DATA_SKIP" explícita "unsupported":true — nunca una LOW.
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| ts | integer | Marca de tiempo Unix del cálculo |
| symbol | string | Símbolo del activo (BTC/ETH/SOL) |
| direction | string | Dirección solicitada (long/short) |
| composite | float | Puntuación compuesta de confluencia de -1.0 (contra extremo) a +1.0 (confirmación fuerte). No es una tasa de aciertos. |
| base_composite | float | Compuesto antes de aplicar ajustes de postfiltro |
| 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 de tamaño de posición sugerido (ej. 0.0 – 1.5) |
| unsupported | bool | true cuando el símbolo está fuera de cobertura (emparejado con NO_DATA) |
| deriv_score | float | Subpuntuación de derivados (-1 a 1) |
| onchain_score | float | Subpuntuación on-chain (-1 a 1) |
| whale_score | float | Subpuntuación de consenso de ballenas (-1 a 1) |
| x_score | float | Subpuntuación de sentimiento en X/redes (-1 a 1); 0 cuando no se usa |
| factors | object | Desglose por componente: score × weight = weighted para derivados / onchain / whale / x_sentiment (onchain incluye source) |
| adjustments | object | Ajustes firmados de postfiltro (acuerdo, tendencia, rsi_1h, news_macro, momentum, time_of_day, streak_decay) |
| weights | object | Conjunto de pesos realmente utilizado para esta evaluación |
| coverage | object | {derivatives, whale, onchain} — qué componentes tenían datos reales |
| reasons | array | Explicaciones legibles por humanos para la puntuación |
GET /snapshot
Devuelve una instantánea completa del mercado, incluyendo todas las subpuntuaciones, métricas brutas y valores de indicadores para un símbolo dado. Útil para paneles de control y registro.
GET /onchain
Devuelve métricas en cadena sin procesar: MVRV, SOPR, flujo neto en exchanges, ratio de capitalización realizada y clasificación de posición en el ciclo.
GET /v1/derivatives/*
Monitor de derivados multiplataforma con más de 500 símbolos: mapa de calor de tasas de financiación, rankings de interés abierto y detección de señales de ratio largo/corto. Las primeras 10 filas son públicas; el monitor completo requiere Trader o Pro. Endpoints: /v1/derivatives/screener, /v1/derivatives/funding, /v1/derivatives/oi, /v1/derivatives/signals.
GET /v1/options/*
Análisis de opciones de BTC y ETH de Deribit (público, sin autenticación): ratio put/call, máximo dolor e interés abierto por strike. Endpoints: /v1/options/summary, /v1/options/pcr, /v1/options/oi.
GET /v1/etf/*
Flujos netos diarios de ETFs de BTC y ETH al contado y desglose por fondo (público). Endpoints: /v1/etf/flows, /v1/etf/funds.
GET /v1/historical/*
Datos históricos de financiación, interés abierto, ratio largo/corto (Binance) y OHLCV (CoinGecko) para backtesting. Endpoints: /v1/historical/funding, /v1/historical/oi, /v1/historical/lsr, /v1/historical/ohlcv.
GET /v1/dex/*
Pares en tendencia, búsqueda de tokens y detalles de pares con DexScreener (público, sin autenticación). Endpoints: /v1/dex/trending, /v1/dex/search, /v1/dex/token, /v1/dex/pair.
GET /v1/news/*
Inteligencia de noticias: noticias de políticas/geopolíticas/cripto clasificadas por impacto, más el índice Miedo y Codicia (público, sin autenticación). Endpoints: /v1/news/trump, /v1/news/general, /v1/news/impact, /v1/news/fear-greed.
GET /whales
Devuelve datos de consenso de carteras de ballenas: división largo/corto, exposición nocional total, top 10 posiciones (solo Pro) y recuento de carteras.
GET /signals
Devuelve un flujo de las señales HIGH/MEDIUM más recientes en todos los activos monitorizados. Útil para escaneo de oportunidades.
GET /v1/strategies/*
Registro transparente y de solo lectura para las estrategias de trading automatizado que operan sobre señales Smart Money — incluyendo la deriv40 estrategia SmartMoney Copytrade (account=9). Todos los endpoints aceptan un ?account=<id> parámetro de consulta y devuelven JSON. No requiere autenticación (registro público).
Endpoints
GET /v1/strategies/stats?account=9— métricas 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— curva de equidad para gráficos:{ initial_equity, curve: [{ time, equity }] }.GET /v1/strategies/trades?account=9&limit=500— libro de operaciones cerradas: array (o{trades:[…]}) desymbol,direction,entry_price,exit_price,pnl_usdt,pnl_percent,pnl_percent_net.GET /v1/strategies/active?account=9— posiciones abiertas actualmente: array (o{positions:[…]}) desymbol,side/direction,entry_price,unrealized_pnl.GET /v1/strategies/signals— desglose por tipo de señal que alimenta las estrategias (recuento / ganancias / tasa_ganancias / pnl_medio por tipo de señal).
El rendimiento pasado no es indicativo de resultados futuros. Las cifras se reconstruyen durante un único régimen de ~3 meses más operaciones en vivo y se muestran sin comisiones donde se indica.
GET /export
Descarga datos históricos de señales en CSV para backtesting. Parámetros: symbol, from (unix ts), to (unix ts).
GET /health
Verificación del estado del sistema. Devuelve la actualización de datos de cada fuente y el estado general de la API. No requiere autenticación.
"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
Devuelve tus estadísticas actuales de uso de la API: llamadas hoy, totales mensuales, límites de cuota y tiempos de reinicio.
POST /webhooks
Registra una URL HTTPS para recibir notificaciones firmadas en tiempo real cuando se active una señal en tus activos monitorizados. Las entregas incluyen un X-SmartMoney-Event encabezado y una firma HMAC-SHA256 en X-SmartMoney-Signature, y se reintentan hasta 3× con retroceso.
Request Body
| Campo | Tipo | Descripción |
|---|---|---|
| urlrequired | string | Endpoint HTTPS al que enviar eventos POST (debe comenzar con https://) |
| eventsrequired | array | Nombres de eventos, ej. ["HIGH","MEDIUM","VETO"] o ["*"] |
| symbolsrequired | array | Símbolos para filtrar, ej. ["BTC","ETH"] o ["*"] |
| secretrequired | string | Tu secreto de firma, ≥ 16 caracteres (almacenado como hash) |
Verificación de la firma
La clave HMAC es el digesto hexadecimal SHA-256 de tu secreto registrado. Calcula el HMAC-SHA256 del cuerpo de la solicitud en bruto con esa clave y compara (tiempo constante) con X-SmartMoney-Signature. Ver el Guía de implementación de Webhooks.
Inteligencia
GET /analysis
Devuelve una clasificación de regímenes de mercado impulsada por IA con detección de conflictos de señales. Analiza la concordancia entre señales, identifica divergencias entre datos de derivados, on-chain y de ballenas, y produce un resumen en lenguaje natural con factores de riesgo prospectivos y una recomendación con horizonte temporal.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolrequerido | string | Símbolo del activo: BTC, ETH, o SOL |
Ejemplo de respuesta
"ts": 1710940821,
"symbol": "BTC",
"regime": "late_cycle_divergence",
"regime_label": "Ciclo tardío — Divergencia de señales",
"summary": "BTC está en una fase tardía del ciclo alcista con fortaleza on-chain en conflicto con la sobre extensión de derivados. Las ballenas están reduciendo su exposición mientras el LSR minorista aumenta.",
"signal_conflicts": [
"Puntuación de ballenas bajista mientras la puntuación on-chain es alcista",
"Tasa de funding en máximos de 3 meses — riesgo potencial de squeeze"
],
"risk_factors": ["Funding elevado", "Divergencia de OI", "Reducción de ballenas"],
"recommendation": "Reduce la exposición larga, ajusta los stops. Evita nuevas posiciones largas por encima del precio actual.",
"time_horizon": "4h–12h"
}
GET /liquidations
Devuelve dos vistas complementarias: (1) proyección de apalancamiento levels — una estimación de dónde se ubican los clusters de liquidación; y (2) un realized_heatmap — la REAL ejecutada intensidad de liquidaciones forzadas (precio × tiempo), agregada en tiempo real desde los feeds WebSocket de exchanges públicos: Binance, OKX, Bybit, Bitget, BitMEX. El heatmap está presente cuando el stream tiene datos para el símbolo (ausente en un mercado muy tranquilo o justo después del inicio).
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolopcional | string | Símbolo del activo (por defecto BTC). El heatmap real cubre símbolos de perp activamente negociados. |
Ejemplo de respuesta
"symbol": "BTC",
"cascade_risk": "ALTO",
"nearest_long_liq_pct": -3.2,
"nearest_short_liq_pct": 4.1,
// Liquidaciones REALES ejecutadas — en vivo desde 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, distancias más cercanas y totales realizados/por lado. Plan Pro: proyección completa levels más el realized_heatmap completo (matrices, clusters por precio, conteos por exchange). La estimación proyectada responde "dónde están los stops"; el heatmap realizado muestra "lo que realmente se liquidó."GET /liquidations/heatmap
Public heatmap de liquidaciones por nivel de precio. Devuelve una matriz estilo Coinglass de precio × tiempo de REAL ejecutadas liquidaciones forzadas, agrupadas por el precio en el que se ejecutó cada liquidación — agregadas en vivo desde los feeds WebSocket de exchanges públicos: Binance, OKX, Bybit, Bitget, BitMEX. El clusters array es la salida práctica: buckets de precio clasificados por notional liquidado, cada uno etiquetado con su lado dominante. Los datos dependen del stream en vivo — un símbolo muy tranquilo o una puerta de enlace recién reiniciada devuelve la estructura vacía bien formada más un note. Los niveles mostrados son siempre liquidaciones reales, nunca estimados.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolopcional | string | Símbolo del activo (por defecto BTC). |
| window_minutesopcional | int | Ventana de retroceso en minutos (por defecto 240, limitado a 5–1440). |
| price_bucketsopcional | int | Número de intervalos de precio (por defecto 50, limitado a 5–100). |
Ejemplo de respuesta
"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á vacío, y un note campo explica por qué. Es un registro de liquidaciones ejecutadas — no es una predicción. Para la estimación proyectada de "dónde están los stops", utiliza el endpoint autenticado /liquidations endpoint.GET /liquidations/onchain
Ejecutadas liquidaciones en cadena de préstamos DeFi capturadas directamente desde nuestros propios nodos completos de BSC + Avalanche — independientes de cualquier bot de trading. Cubre Venus/Cream y Moolah en BSC, y AAVE V3/V2, Benqi, BankerJoe, Granary y Vinium en Avalanche. El nivel Pro además devuelve at_risk posiciones (dependiente de bots, puede estar ausente).
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| chainopcional | string | bsc o avax. Omite para todas las cadenas. |
| limitopcional | integer | Máximo de filas (por defecto 100, máximo 500). Más recientes primero. |
Ejemplo de respuesta
"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 } },
nodos: { bsc: { alcanzable: True, head_block: 89173010, events_total: 61 } }
}
}
GET /smart-stop
Calcula niveles inteligentes de stop-loss basados en el mapa de calor de liquidación actual, bandas de volatilidad y estructura del mercado. Devuelve recomendaciones de stop escalonadas y sugerencias de toma de ganancias calibradas según tu precio de entrada y tolerancia al riesgo.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolrequired | string | Símbolo del activo: BTC, ETH, o SOL |
| directionrequired | string | Dirección de la posición: long o short |
| entry_priceoptional | float | Tu precio de entrada. Por defecto, se usa el precio de mercado actual si se omite. |
| risk_pctoptional | float | Riesgo máximo aceptable como % de la cuenta. Por defecto: 2.0 |
Ejemplo de respuesta
symbol: BTC,
direction: long,
entry_price: 96420,
stops: {
tight: { price: 95100, note: Debajo de la estructura de 1h. Ideal para scalping. },
recommended: { price: 93800, note: Debajo del grupo principal de liquidación en $94K. Stop estándar para swing. },
wide: { price: 91200, note: Debajo de la zona de demanda de 4h. Stop para posición de trading. }
},
avoid_zones: [
{ low: 94200, high: 94800, reason: Grupo denso de liquidación — alto riesgo de deslizamiento }
],
take_profit_suggestions: [
{ tp1: 98500, tp2: 101000, tp3: 104200 }
]
}
recommended stop. Plan Pro: Los tres niveles de stop, avoid_zones, y sugerencias completas de toma de ganancias.GET /funding-arb
Identifica oportunidades de arbitraje de tasas de financiación entre intercambios en tiempo real. Devuelve oportunidades clasificadas con rendimiento anualizado estimado, par de intercambios óptimo y la acción de cobertura requerida para capturar el spread.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| min_spreadoptional | float | Spread mínimo de tasa de financiación para incluir (como decimal). Por defecto: 0.01 |
| symboloptional | string | Filtrar por un activo específico. Omite para escanear todos los activos admitidos. |
Ejemplo de respuesta
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 Sin autenticación
Un endpoint público sin clave devuelve las 10 mejores oportunidades con un screener en vivo entre intercambios, ideal para incrustar o comprobaciones rápidas. Omite el historial de spread por símbolo y campos pesados y se sirve desde una caché de 120 segundos. Cuando no existen spreads de financiación entre intercambios en la ventana de frescura, devuelve un opportunities array vacío con un note — nunca datos 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 bajo — asegúrate de que las comisiones no consuman el margen de arbitraje.
}
],
"scanned_symbols": 222,
"ts": 1783268753,
"public": true,
"limited": true
}
GET /smart-money/flow
Un índice direccional ponderado por calidad de ballenas por símbolo, puntuado -100 (dinero de ballenas inclinado a corto) a +100 (inclinado a largo). Construido a partir de miles de carteras de ballenas rastreadas en Hyperliquid — cada una ponderada por su propia tasa de aciertos históricos y PnL, y atenuada por antigüedad. Este es un índice de posicionamiento, no una señal de compra/venta o predicción de precio. Los símbolos con pocas carteras contribuyentes se etiquetan thin y se puntúan honestamente. Página en vivo: smart-money-flow.html.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolopcional | string | Símbolo único (ej. BTC). Omite para obtener todos los símbolos rastreados clasificados por |score|. |
| window_hoursopcional | int | Ventana de puntuación, limitada a 1..168. Por defecto 24. |
Ejemplo de Respuesta
"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 posicionamiento direccional de ballenas ponderado por calidad (-100..+100). No es una predicción de precio o señal de compra/venta."
}
top_contributors. Los pesos de las carteras están limitados a [0.25,1.0]; PnL es un proxy no realizado de las últimas instantáneas de posición.GET /v1/whales/crowding
Contexto combinado de posicionamiento y aglomeración de ballenas por símbolo, fusionado entre Hyperliquid + GMX v2 + Jupiter Perps. Devuelve notional bruto/neto, sesgo direccional, conteo de carteras y venues, concentración de posición (participación top-3 + HHI), un apalancamiento promedio ponderado, y niveles de proximidad a liquidación ($ notional dentro del 5% y 10% de su precio de liquidación estimado, dividido en largo/corto). Esto es contexto, no una señal direccional. Los campos que no son derivables son null y se muestran como — — ej. lev_wavg/crowding_index cuando ninguna posición tiene apalancamiento. Las distancias de liquidación son una estimación de margen aislado (pct_to_liq ≈ 1/lev + upnl/notional − mmr, mmr = 0.01), no precios de liquidación reportados por el exchange.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| min_notionalopcional | float | Notional bruto combinado mínimo (USD) para incluir un símbolo. Por defecto: 1000000. |
Ejemplo de Solicitud
Ejemplo de Respuesta
"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: [ Las distancias de liquidación son estimaciones de margen aislado, no reportadas por el exchange. ]
}
skew es net/gross ∈ [-1,1]; crowding_index = |skew|·conc_top3·min(lev/20,1). Solo aparecen los venues realmente presentes en venues. Las posiciones sin apalancamiento se excluyen de los buckets de liquidación en lugar de asumirse. Los llamadores anónimos reciben los 10 símbolos principales por volumen bruto (con gated: true); Trader+ reciben la lista completa.GET /v1/options/gex
Dealer exposición gamma (GEX) análisis para BTC & ETH, calculado en vivo a partir de la cadena de opciones públicas de Deribit (sin autenticación). Devuelve el GEX neto del dealer por strike (convención SpotGamma dealer-short), el nivel de flip gamma (strike donde el GEX neto acumulado cruza cero), la estructura temporal de la IV (volatilidad implícita ATM por días hasta el vencimiento), y un sesgo de IV de vencimiento cercano (proxy de reversión de riesgo de 25Δ). El régimen de GEX es positive (dealers largos en gamma → supresión de volatilidad) o negative (amplificación de volatilidad). Totalmente autónomo — recalculado en cada llamada, sin dependencia de base de datos almacenada.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| símboloopcional | cadena | BTC o ETH solo. Por defecto: BTC. |
Ejemplo de solicitud
Ejemplo de respuesta
"símbolo": "BTC", "disponible": true, "spot": 63203.0,
"net_gex": 18240000.0, "régimen": "positivo",
"flip_gamma": 64919.82, "flip_gamma_pct": 2.72,
"call_gex": 31200000.0, "put_gex": -12960000.0,
"por_strike": [
{ "strike": 60000, "net_gex": -2100000.0 },
{ "strike": 65000, "net_gex": 4800000.0 }
],
"estructura_temporal": [
{ "vencimiento": "8JUL26", "dte": 0.76, "atm_iv": 62.1 },
{ "vencimiento": "27MAR26", "dte": 14.2, "atm_iv": 58.4 }
],
"sesgo": {
"vencimiento": "8JUL26", "dte": 0.76,
"put_iv": 69.69, "atm_iv": 62.1, "call_iv": 55.34,
"reversión_de_riesgo": 14.35, "sesgo": "miedo_a_la_baja"
}
}
available: false con paneles vacíos — nunca GEX fabricado. El sesgo de IV utiliza un proxy de strike fijo de ±10% para 25Δ (el verdadero 25-delta requiere resolver el delta por strike); adecuado para visualización, documentado como una aproximación.GET /v1/liquidations/simulate
Interactivo prueba de estrés por cascada de liquidacionesDado un movimiento hipotético del precio, devuelve las posiciones apalancadas estimadas que se liquidarían, el volumen forzado por nivel de precio/lado/bolsa y un informe de profundidad de la cascada. Un movimiento a la baja liquida largos cuyo precio de liquidación está en/por encima del objetivo; un movimiento al alza liquida cortos cuyo precio de liquidación está en/por debajo. Se fusionan dos métodos independientes: precios exactos de liquidación de ballenas rastreadas en Hyperliquid con apalancamiento/entrada real , más clusters estadísticos de bandas de OI por bolsa (apalancamiento de la multitud inferido por funding). Todo está claramente etiquetado estimated: true — no puede conocer el margen por cuenta, cruzado vs aislado, margen adicional o ADL.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| símboloopcional | cadena | Símbolo del activo. Por defecto: BTC. |
| move_pctopcional | flotante | Movimiento hipotético del precio en porcentaje (negativo = bajista, positivo = alcista). Por defecto: -5. |
Ejemplo de solicitud
Ejemplo de respuesta
"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 — no se puede conocer el margen por cuenta, cruzado vs aislado, margen adicional o ADL." }
}
ok: true, empty: true un mensaje en lenguaje claro, no barras falsas. realized_context es una muestra joven y en crecimiento del flujo de liquidación forzada en vivo, mostrada solo como contexto — nunca hace que la proyección se "realice".GET /v1/wallet/{addr}/profile
Un perfil de billetera multiplataforma construido completamente a partir de instantáneas de posiciones de ballenas rastreadas en vivo. Para una ballena de Hyperliquid rastreada, devuelve las posiciones abiertas actuales, una serie temporal de PnL no realizado / exposición / recuento de posiciones serie temporal, una línea de tiempo de actividad OPEN/CLOSE/FLIP (reconstruida al comparar instantáneas consecutivas), la etiqueta descifrada del cuadro de líderes de HL y un resumen de libro abierto. Página en vivo: wallet-profiler.html.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| addrrequerido | string | Dirección de la billetera (segmento de ruta), ej. /v1/wallet/0x3bcae23e…/profile. |
| daysopcional | integer | Ventana de retrospectiva para la serie y la línea de tiempo. Por defecto: 30. |
Ejemplo de solicitud
Ejemplo de respuesta
"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, tasa_de_éxito_pct: 71, operaciones: 42 },
posiciones: [
{ plataforma: hyperliquid, símbolo: ETH, dirección: corto,
tamaño: 1200.0, precio_de_entrada: 1800.0, ganancia_pérdida_no_realizada: 34800.0,
apalancamiento: 20.0, valor_usd: 2160000.0 }
],
serie: [ { ts: 1783330000, ganancia_pérdida_no_realizada: 42000.0, exposición_usd: 18400000.0, posiciones: 5 } ],
línea_de_tiempo: [ { ts: 1783400000, evento: cambio, símbolo: ETH,
dirección: corto, desde_dirección: largo, valor_usd: 2160000.0 } ],
resumen: {
posiciones_abiertas: 5, en_ganancia: 3, en_pérdida: 2, largos: 0, cortos: 5,
ganancia_pérdida_no_realizada_total: -12000.0, exposición_total_usd: 21000000.0, apalancamiento_mezclado: 19.9,
ventana_de_días: 30, instantáneas_en_ventana: 474,
ganancia_pérdida_realizada: None, nota_de_ganancia_pérdida_realizada: No derivable — solo se ven instantáneas abiertas, nunca cierres.
}
}
}
pnl es la propia marca de mercado no realizada de HL, value_usd es el nocional abierto. La ganancia/pérdida realizada por operación completa no está disponible (solo vemos instantáneas abiertas, nunca cierres) y se muestra como null / —; los eventos de CIERRE en la línea de tiempo no llevan reclamo de ganancia/pérdida. Una dirección válida pero no rastreada devuelve tracked: false con una nota; una dirección inválida devuelve ok: false, error: "invalid_address" (HTTP 400). La etiqueta HL-leaderboard es la propia posición de HL en la ventana de descubrimiento, no calculada por nosotros.GET /flows
Devuelve datos de flujo de capital entre activos que muestran patrones de rotación entre BTC, ETH y SOL en múltiples ventanas de tiempo. Útil para identificar qué activo está acumulando capital y cuál se está distribuyendo en un momento dado.
Ejemplo de respuesta
"ts": 1710940821,
"flows": {
"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_detected": [
"Capital rotando de ETH a BTC en ventana de 4h",
"Acumulación de SOL consistente en todas las ventanas"
]
}
GET /whale-events
Devuelve cambios significativos en las posiciones de ballenas — aperturas, cierres y cambios de dirección — detectados en las billeteras y direcciones en cadena rastreadas dentro del período de tiempo especificado.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| símboloopcional | string | Filtrar por activo. Omitir para todos los activos monitoreados. |
| significanciaopcional | string | Filtrar por importancia del evento: high, medium, o all. Predeterminado: all |
| horasopcional | integer | Período de tiempo retrospectivo en horas. Predeterminado: 24 |
Respuesta de ejemplo
"símbolo": "BTC",
"resumen": {
"cambios_a_largo": 3,
"cambios_a_corto": 1,
"nuevas_aperturas": 7,
"cierres": 2
},
"eventos": [
{
tipo: cambiar_a_largo,
cartera: 0xWhale...a4f2,
dirección: largo,
tamaño_usd: 4200000,
ts: 1710938400
}
]
}
summary objeto solamente. Plan Pro: Feed events completo con identificadores de cartera, tamaños y marcas de tiempo.GET /regimes/history
Devuelve datos históricos de clasificación de regímenes para un activo específico. Úsalo para hacer backtesting de cómo han funcionado históricamente tipos de regímenes específicos, cuánto suele durar cada tipo de régimen y cómo se desarrollan las transiciones entre regímenes a lo largo del tiempo.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| símboloopcional | string | Símbolo del activo. Por defecto: BTC |
| régimenopcional | string | Filtrar por un tipo de régimen específico, ej. late_cycle_divergence. Omite para todos los regímenes. |
| díasopcional | integer | Ventana de retrospectiva en días. Por defecto: 30. Máximo: 365 |
Ejemplo de respuesta
símbolo: BTC,
régimen_actual: divergencia_tardía_ciclo,
resumen_régimen: {
divergencia_tardía_ciclo: { apariciones: 4, duración_promedio_h: 38, retorno_promedio_pct: -2.1 },
acumulación: { apariciones: 6, duración_promedio_h: 72, retorno_promedio_pct: 5.4 },
ruptura: { apariciones: 3, duración_promedio_h: 18, retorno_promedio_pct: 9.2 }
},
transiciones: [
{ desde: acumulación, a: ruptura, ts: 1710850000 },
{ desde: ruptura, a: divergencia_en_fase_tardía, ts: 1710915000 }
]
}
/analysis para validar supuestos de estrategia con datos históricos de rendimiento de regímenes.GET /exchange-health
Devuelve el estado de salud en tiempo real de todos los exchanges monitoreados, incluyendo latencia por exchange, tasas de error e indicadores de obsolescencia de datos. No requiere autenticación — endpoint de acceso público.
Ejemplo de respuesta
"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": "degraded", "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
Devuelve un índice de Miedo y Codicia (0-100) en tiempo real, calculado a partir del sentimiento en derivados, actividad de ballenas, volatilidad y señales sociales. Incluye desglose por componentes e historial de 24 horas para análisis de tendencias.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symbolopcional | string | Símbolo del activo. Por defecto: BTC |
Ejemplo de respuesta
"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
}
Integraciones
GET /tradingview/setup
Devuelve tu configuración personalizada de integración con TradingView: URL del webhook, secreto para validación y scripts Pine listos para usar que se conectan directamente a la Smart Money API. Copia y pega el script Pine en TradingView para superponer nuestras señales en cualquier gráfico.
Ejemplo de respuesta
"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
Recibe una alerta de TradingView, la procesa a través de /confirm, y devuelve la confirmación. TradingView no puede enviar cabeceras personalizadas, así que autentícate incluyendo tu webhook secret en el cuerpo JSON (este endpoint no usa X-API-Key). La respuesta envuelve la confirmación y añade un nivel superior action de CONFIRMED (confianza del daemon HIGH/MEDIUM) o VETOED.
Cuerpo de la solicitud
"secret": "your_webhook_secret",
"symbol": "BTC",
"direction": "long",
"timeframe": "1h",
"strategy": "EMA crossover",
"price": 67500.0
}
Requerido: secret, symbol, direction (long|short). Opcional: source, timeframe, strategy, price.
Personalización
GET /preferences
Devuelve tus configuraciones de personalización actuales, incluyendo parámetros de operación por defecto, perfil de riesgo, lista de seguimiento y preferencias de notificación.
Actualiza las preferencias enviando un cuerpo JSON con cualquier subconjunto de los campos a continuación. Los campos omitidos mantienen sus valores actuales.
Campos de preferencia
| Campo | Tipo | Descripción |
|---|---|---|
| default_trade_size_usd | float | Tamaño de posición por defecto en USD para cálculos de Kelly y smart-stop |
| risk_tolerance | string | conservative, moderate, o aggressive |
| default_risk_pct | float | Riesgo por operación por defecto como % de la cuenta. Usado por /smart-stop cuando risk_pct se omite |
| watchlist | array | Lista ordenada de símbolos de activos, ej. ["BTC","ETH","SOL"] |
| notification_email | string | Dirección de correo electrónico para entrega de alertas |
| timezone | string | Cadena de zona horaria IANA, ej. America/New_York |
"default_trade_size_usd": 5000,
"risk_tolerance": "moderate",
"default_risk_pct": 1.5,
"watchlist": ["BTC", "ETH", "SOL"]
}
GET /watchlist
Devuelve una instantánea del estado de confirmación y métricas clave de riesgo para todos los símbolos en tu lista de seguimiento configurada. Proporciona una visión general multi-activos sin necesidad de llamar /confirm por separado para cada símbolo.
Ejemplo de Respuesta
"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"
}
]
}
Transmisión en Tiempo Real (Swaps en Vivo)
Transmite swaps DEX ≥ $500 detectados en tiempo real desde nuestros propios nodos de BSC y Avalanche. Dos transportes están disponibles: un flujo público de Server-Sent Events (SSE) para clientes gratuitos/navegadores, y un flujo de baja latencia WebSocket para niveles de pago. Los eventos se transmiten en segundos después de su inclusión en un bloque.
Flujo Público SSE (Gratuito)
No se requiere autenticación. Soporte nativo EventSource en todos los navegadores modernos. El servidor emite swap eventos y latidos periódicos para mantener la conexión activa.
es.addEventListener("swap", e => {
const swap = JSON.parse(e.data);
console.log(swap.chain, swap.pair, swap.amount_usd);
});
WebSocket Firehose (Pago)
Autenticación (recomendado): nunca pongas tu clave de larga duración en la URL — se registra en proxies y se guarda en el historial del navegador. En su lugar, envía tu clave mediante POST a /v1/ws/ticket usando el encabezado seguro X-API-Key , luego abre el socket con el ticket de un solo uso devuelto ticket (válido ~60s, canjeable una vez). Los clientes del lado del servidor que pueden establecer encabezados pueden pasar X-API-Key directamente en el handshake. Las claves de nivel gratuito reciben una 402 payment_required respuesta. Un hello frame se envía al conectar con tu nivel y el umbral de transmisión.
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. Abre el socket con el ticket de un solo uso
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);
};
Autenticación WebSocket (tickets)
Por qué: nunca pongas tu clave API en una URL de WebSocket — las cadenas de consulta se registran en proxies, balanceadores de carga y se guardan en el historial del navegador. En su lugar, intercambia tu clave por un ticket de corta duración y de un solo uso ticket mediante un POST autenticado normal, luego conéctate con ese ticket.
Flujo: POST a /v1/ws/ticket con tu X-API-Key encabezado → recibe { "ticket": "…", "expires_in": 60 }. Luego abre wss://api.smartmoneyapi.com/v1/ws/live-swaps?ticket=<ticket>El ticket es de un solo uso y caduca en ~60 segundosLos clientes del lado del servidor que pueden configurar encabezados de solicitud pueden pasar X-API-Key directamente en el handshake de WebSocket — no se necesita ticket.
Genera un ticket de un solo uso para un handshake de WebSocket autenticado. Autentícate con el X-API-Key encabezado (tu clave nunca sale de los encabezados de la solicitud). El ticket devuelto se puede canjear una vez en /v1/ws/live-swaps antes de que caduque.
"https://api.smartmoneyapi.com/v1/ws/ticket"
Ejemplo de Respuesta
"ticket": "wst_9f3c1a8e4b2d…",
"expires_in": 60
}
Campos de Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| ticket | string | Token de un solo uso para agregar como ?ticket= en la URL de WebSocket. Canjeado una vez, luego invalidado. |
| expires_in | number | Segundos hasta que el ticket caduque (~60). Genera un ticket nuevo por cada intento de conexión. |
Nota: la autenticación por ?key= parámetro de consulta heredado ya no se acepta en los endpoints de WebSocket por razones de seguridad. Usa un ticket (clientes de navegador) o el X-API-Key encabezado de handshake (clientes del lado del servidor).
Instantánea REST
Devuelve los últimos N swaps transmitidos desde el búfer en curso. Útil para la primera pintura en paneles antes de que se abra la conexión de transmisión. También disponible: /v1/live-swaps/status para estadísticas de transmisión.
Esquema de Evento
| Campo | Tipo | Descripción |
|---|---|---|
| chain | string | bsc o avalanche |
| dex | string | Nombre del router (ej. pancakeswap_v2, traderjoe) o unknown_dex |
| swapper | string | Dirección completa 0x de la billetera que ejecutó el swap |
| swapper_short | string | Forma abreviada para mostrar (ej. 0xb300…028d) |
| swapper_url | string | Enlace directo al swapper en el explorador de bloques de la cadena |
| tx_hash | string | Hash de la transacción |
| explorer_url | string | Enlace directo a la transacción en BscScan / Snowtrace |
| token_in | string | Símbolo del token vendido (ej. USDT) |
| token_out | string | Símbolo del token comprado |
| amount_usd | number | Valor en USD del swap (mínimo: $500) |
| pair | string | Etiqueta de par formateada (ej. USDT → USDC) |
| block | number | Número de bloque donde se minó el swap |
| timestamp | number | Segundos de época Unix |
| significance | string | low / medium / high / critical basado en el tamaño en USD |
| seq | number | Número de secuencia de transmisión monótona — úsalo para la detección de huecos |
POST /alerts/conditions
Crea reglas de alerta personalizadas que se activan cuando una métrica especificada cruza un umbral. Las alertas se entregan mediante webhook, correo electrónico o el feed de notificaciones del panel según tus preferencias.
Devuelve una lista de todas tus condiciones de alerta configuradas con sus IDs, definiciones y estado actual.
Elimina permanentemente una condición de alerta por su ID.
Devuelve eventos recientes de activación de alertas con marcas de tiempo, condiciones coincidentes y el valor de la métrica en el momento de la activación.
Crear Alerta — Cuerpo de la Solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| namerequired | string | Etiqueta legible para esta alerta (máx. 64 caracteres) |
| metricrequired | string | La métrica a monitorear. Consulta la tabla de métricas disponibles más abajo. |
| symboloptional | string | Contexto del activo. Requerido para métricas específicas de símbolo como funding_rate. |
| operatorrequired | string | Operador de comparación: gt, lt, eq, crosses_above, crosses_below |
| thresholdrequired | float | Valor numérico contra el que comparar la métrica |
| deliveryoptional | string | Canal de entrega, ej. telegram (default) o webhook |
| cooldown_minutesoptional | integer | Mínimo de minutos entre re-activaciones (por defecto 60) |
La lista actualizada de métricas y operadores válidos es devuelta por GET /v1/alerts/conditions as available_metrics and available_operators.
Available Metrics
| Metric | Descripción |
|---|---|
| funding_rate | Tasa de financiación actual para el símbolo (como decimal) |
| global_lsr | Ratio largo/corto global para el símbolo |
| long_pct | Porcentaje de cuentas en posición larga para el símbolo |
| top_trader_lsr | Ratio largo/corto de los mejores traders para el símbolo |
| taker_ratio | Ratio compra/venta de los taker para el símbolo |
| mvrv | Ratio de Valor de Mercado a Valor Realizado (BTC/ETH) |
| sopr | Ratio de Beneficio de Salida Gastada (BTC/ETH) |
| exchange_net_flow | Señal de flujo neto en cadena de exchanges |
| accumulation | Señal de acumulación en cadena |
| whale_long_pct | Porcentaje de carteras de ballenas rastreadas en posición larga para el símbolo |
| whale_n_wallets | Número de carteras de ballenas rastreadas con posición en el símbolo |
| composite_long | Puntuación compuesta para el símbolo consultado en dirección larga |
| composite_short | Puntuación compuesta para el símbolo consultado en dirección corta |
| funding_spread | Diferencial de financiación entre plataformas para el símbolo |
"name": "BTC funding rate spike",
"metric": "funding_rate",
"symbol": "BTC",
"operator": "gt",
"threshold": 0.05
}
GET /kelly
Devuelve recomendaciones de tamaño de posición según el Criterio de Kelly, calibradas según el rendimiento histórico de la señal para el símbolo, nivel de confianza y dirección. Basa el tamaño de la posición en tasas de éxito empíricas para evitar sobre-apalancamiento.
Parameters
| Parameter | Type | Descripción |
|---|---|---|
| symbolrequired | string | Símbolo del activo: BTC, ETH, o SOL |
| confidenceoptional | string | Nivel de confianza de la señal a modelar: HIGH, MEDIUM, o LOW. Por defecto: HIGH |
| directionoptional | string | Dirección de la operación: long o short. Por defecto: long |
| account_sizeoptional | float | Tamaño de la cuenta en USD para calcular suggested_size_usd. Por defecto: 10000 |
Example Response
"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": "Se recomienda Half-Kelly para trading en vivo debido a errores de estimación."
}
GET /performance
Devuelve estadísticas de precisión histórica de señales emitidas por la API, desglosadas por nivel de confianza. Útil para comprender la fiabilidad de las señales antes de comprometer capital.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| symboloptional | string | Filtrar por activo. Omitir para estadísticas agregadas de todos los símbolos. |
| daysoptional | integer | Ventana de retrospectiva en días. Por defecto: 30 |
Ejemplo de respuesta
"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 }
}
}
Estadísticas y Señales
GET /v1/stats
Estadísticas de rendimiento honestas de todo el sitio, obtenidas de smart_money_confirm resultados de llamadas distintas. Devuelve tasas de acierto en los niveles de confianza HIGH y MEDIUM, precisión general, factor de beneficio y un desglose por símbolo. Todas las cifras son dentro de la muestra durante la ventana de puntuación; consulta calibration.html para obtener contexto y metodología de forward-holdout.
Ejemplo de respuesta
"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": "distinct confirm calls, 24h resolved outcomes",
"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 es el único número acumulado en datos que el puntuador nunca ha visto — observa cómo crece con el tiempo. Consulta calibration.html para obtener la metodología completa y el límite entre muestra interna y prueba forward.GET /v1/signals/performance
Seguimiento de resultados de señales en múltiples horizontes de resolución (4h, 12h, 24h, 72h). Devuelve tasas de acierto por horizonte, conteos totales de señales y un desglose por tipo de señal.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| daysoptional | integer | Ventana de retrospectiva en días. Por defecto: 30 |
| signal_typeoptional | string | Filtrar por tipo, ej. smart_money_confirm or regime_flip. Omitir para todos los tipos. |
| symboloptional | string | Filtrar por símbolo de activo, ej. BTC. Omitir para agregar todos los símbolos. |
Ejemplo de respuesta
"signal_type": "smart_money_confirm",
"symbol": "BTC",
"days": 30,
"total_signals": 48,
horizontes: {
4h: { tasa de aciertos: 0.65, resuelto: 46 },
12h: { tasa de aciertos: 0.61, resuelto: 44 },
24h: { tasa de aciertos: 0.58, resuelto: 40 },
72h: { tasa de aciertos: 0.54, resuelto: 32 }
},
desglose por tipo: {
confirmación de Smart Money: { recuento: 35, tasa de aciertos_24h: 0.61 },
cambio de régimen: { recuento: 13, tasa de aciertos_24h: 0.47 }
}
}
GET /v1/signals/recent
Feed de señales HIGH y MEDIUM publicadas recientemente en todos los símbolos monitoreados. Cada entrada incluye el tipo de señal, nivel de confianza, dirección y estado de resolución, si está disponible.
Ejemplo de respuesta
señales: [
{
id: 1042,
símbolo: BTC,
dirección: long,
tipo de señal: confirmación de Smart Money,
confianza: HIGH,
compuesto: 0.74,
ts: 1710940821,
resuelto: True,
resultado_24h: ganar
}
],
recuento: 50
}
GET /v1/signals/{id}/outcome
Resultado resuelto para una señal individual por su ID numérico. Devuelve acierto/fallo en cada horizonte de resolución (4h, 12h, 24h, 72h) junto con el precio en el momento de la señal y en la resolución.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| idrequerido | entero | ID de la señal (segmento de ruta), p. ej. /v1/signals/1042/outcome |
Ejemplo de respuesta
id: 1042,
símbolo: BTC,
dirección: long,
confianza: HIGH,
precio de entrada: 63200.0,
ts: 1710940821,
resultados: {
4h: { resultado: ganar, precio: 64100.0, pct: 1.41 },
12h: { resultado: ganar, precio: 65200.0, pct: 3.16 },
24h: { resultado: ganar, precio: 65800.0, pct: 4.11 },
72h: { resultado: pendiente, precio: None, pct: None }
}
}
GET /v1/confirm-winrate
Desglose de la tasa de aciertos de señales de confirmación para la clave API del usuario autenticado. Devuelve tasas de aciertos por llamada distinta en cada nivel de confianza, factor de beneficio y cifras por símbolo. Requiere un encabezado válido. X-API-Key encabezado.
Ejemplo de solicitud
"https://api.smartmoneyapi.com/v1/confirm-winrate"
Ejemplo de respuesta
alta_tasa_de_aciertos: 0.714,
alta_n: 14,
media_tasa_de_aciertos: 0.530,
medio_n: 34,
precisión_general: 0.613,
total_n: 48,
factor_de_beneficio: 1.77,
horizonte_de_tasa_de_éxito: 24h,
por_símbolo: {
BTC: { tasa_de_éxito: 0.68, n: 22 },
ETH: { tasa_de_éxito: 0.55, n: 18 }
}
}
Shadow Gate
Un registro de decisiones personal inmutable y solo de adición. Envía tus decisiones de trading antes o después de ejecutarlas; el sistema calcula una puntuación de confirmación contra el motor Smart Money y añade una fila permanente. Úsalo para construir un historial honesto y con marca de tiempo de qué tan bien coincidió la señal de la API con tus propias entradas, completamente independiente del grupo global de tasas de éxito. Las respuestas de los niveles Gratis y Trader tienen campos de evidencia eliminados; Pro devuelve el desglose completo. Un retraso por nivel aplica a los datos del nivel Gratis.
Envía una decisión. Idempotente en el Idempotency-Key encabezado de la solicitud — reenviar la misma clave devuelve la fila existente sin crear un duplicado. El sistema llama inmediatamente al motor de confirmación y añade el resultado como una fila inmutable en el registro.
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| símbolorequerido | cadena | Símbolo del activo, ej. BTC |
| ladorequerido | cadena | Dirección de la operación: long o short |
| id_estrategiaopcional | cadena | Etiqueta de estrategia definida por el llamador (máx. 64 caracteres). Se almacena tal cual para agrupación y filtrado. |
Ejemplo de solicitud
-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"
Ejemplo de respuesta
"id": 318,
"símbolo": "BTC",
"lado": "long",
"id_estrategia": "ema_crossover",
"decisión": "CONFIRMAR",
"confianza": "ALTA",
"compuesto": 0.74,
"mult_tamaño": 1.5,
"ts": 1710940821,
"resuelto": false
}
factors / adjustments campos de evidencia. Pro devuelve el desglose completo de confirmación. Un retraso por nivel aplica a Gratis — la fila se escribe inmediatamente, pero la puntuación de confirmación puede reflejar datos en caché de hasta 60 segundos de antigüedad.Lista tus propias decisiones de shadow-gate, las más recientes primero. Limitado al propietario — solo se devuelven las decisiones enviadas por tu clave de API.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| límiteopcional | entero | Máximo de filas a devolver. Predeterminado: 50, máx: 200 |
| cursoropcional | cadena | Cursor de paginación opaco del campo next_cursor de una respuesta anterior. Omite para la primera página. |
Ejemplo de respuesta
"decisiones": [
{ "id": 318, "símbolo": "BTC", "lado": "long", "decisión": "CONFIRMAR", "confianza": "ALTA", "compuesto": 0.74, "mult_tamaño": 1.5, "ts": 1710940821, "resuelto": false },
{ "id": 317, "símbolo": "ETH", "lado": short, decisión: SKIP, confianza: LOW, compuesto: -0.12, size_mult: 0.0, ts: 1710937000, resuelto: True }
],
contar: 2,
next_cursor: None
}
Decisión individual por ID, incluyendo la evidencia completa de confirmación para el nivel Pro. Las respuestas de los niveles Free y Trader tienen factors y adjustments eliminados. Devuelve 403 si la decisión pertenece a una clave API diferente.
Ejemplo de respuesta (Pro)
id: 318,
símbolo: BTC,
lado: long,
strategy_id: ema_crossover,
decisión: CONFIRM,
confianza: HIGH,
compuesto: 0.74,
size_mult: 1.5,
factores: {
derivados: { puntuación: 0.81, peso: 0.40, ponderado: 0.324 },
onchain: { puntuación: 0.68, peso: 0.35, ponderado: 0.238 },
ballena: { puntuación: 0.73, peso: 0.25, ponderado: 0.183 }
},
ts: 1710940821,
resuelto: False,
resultado: None
}
Resuelve manualmente el resultado de una decisión. Llama a esto después de cerrar la operación para registrar el resultado final en el registro. Una vez resuelto, el registro es inmutable y no se puede cambiar nuevamente.
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
| resultadorequerido | string | Resultado de la operación: win o loss |
| exit_priceopcional | float | Precio de salida de la operación. Almacenado como referencia; utilizado para calcular el P&L % si se proporciona. |
| pnl_pctopcional | float | P&L realizado como porcentaje del tamaño de la posición, ej. 3.5 o -1.2 |
Ejemplo de respuesta
id: 318,
resuelto: True,
resultado: win,
exit_price: 65800.0,
pnl_pct: 4.1,
resolved_at: 1711027200
}
Códigos de error
| Estado | Código | Descripción |
|---|---|---|
| 400 | invalid_params | Parámetros de consulta faltantes o inválidos |
| 401 | unauthorized | Clave API faltante o inválida |
| 403 | plan_restriction | Endpoint no disponible en tu plan actual |
| 429 | rate_limit_exceeded | Límite diario o de ráfaga alcanzado |
| 500 | internal_error | Error del servidor — consulta /health para el estado de la fuente |
| 503 | data_stale | Fuente de datos no disponible; devuelve los últimos datos conocidos |
Ejemplos 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["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()
# En tu bucle de trading:
signal = confirm_trade("BTC", "long")
if signal["confidence"] not in ["HIGH", "MEDIUM"]:
print("Omitiendo — confianza 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(`API error: ${resstatus}`);
return res.json();
}
// Uso
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"
# Obtener datos de ballenas
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
Integración de Freqtrade
Agrega confirmación de Smart Money a cualquier estrategia de Freqtrade sobrescribiendo el confirm_trade_entry método.
desde freqtrade.strategy importar IStrategy
clase SmartMoneyStrategy(IStrategy):
SM_API_KEY = "sm_your_key"
SM_BASE = "https://api.smartmoneyapi.com/v1"
def confirm_trade_entry(self, par, tipo_orden,
cantidad, tasa, tiempo_en_efecto,
tiempo_actual, etiqueta_entrada, **kwargs):
símbolo = par.dividir("/")[0]
si símbolo no está en ["BTC", "ETH", "SOL"]:
devolver True # Saltar verificación para no admitidos
intentar:
r = requests.obtener(
f"{self.SM_BASE}/confirm",
parámetros={"símbolo": símbolo, "dirección": "long"},
encabezados={"X-API-Key": self.SM_API_KEY},
tiempo_espera=3
).json()
devolver r.obtener("confianza") en ["ALTA", "MEDIA"]
excepto:
devolver True # Fallar abierto en error de API
CCXT + Smart Money
exchange = ccxt.bybit({
"apiKey": "YOUR_BYBIT_KEY",
"secret": "YOUR_BYBIT_SECRET"
})
SM_KEY = "sm_your_key"
def smart_trade(símbolo, lado, cantidad):
# Verificar confirmación primero
conf = requests.obtener(
"https://api.smartmoneyapi.com/v1/confirm",
parámetros={"símbolo": símbolo, "dirección": lado},
encabezados={"X-API-Key": SM_KEY}
).json()
si conf["confianza"] no está en ["ALTA", "MEDIA"]:
imprimir(f"Saltando {símbolo} {lado} — confianza insuficiente.")
devolver None
cantidad_ajustada = cantidad * conf["size_mult"]
orden = exchange.crear_orden_de_mercado(
f"{símbolo}/USDT", lado, cantidad_ajustada
)
imprimir(f"Orden colocada: {cantidad_ajustada} {símbolo} {lado}")
devolver orden
Revisa la página de estado de la API para información de salud en tiempo real, o usa nuestro formulario de contacto.