CRUZTRD // API
BETA PÚBLICA · GRATIS

CruzTRD API

Datos de derivados crypto en español: índice de acuerdo determinista, índices propios y brief en una sola llamada, sin armar nada. No es un predictor de preciolo auditamos y acierta el 49%.

BASE URLhttps://terminal.cruztrd.com

01Quick start

Los endpoints /public/* son abiertos durante la beta — no necesitas API key para empezar. La key solo se requiere para webhooks y tiers superiores.

1. Tu primera llamada (sin registro)

# Índice de acuerdo de ETH ahora mismo
curl "https://terminal.cruztrd.com/public/score/preview/ETHUSDT"

2. Registra tu API key (opcional, gratis)

Para recibir un webhook cuando el índice de acuerdo supere 72, y para subir de límites. Cruzar 72 no significa que el precio vaya a moverse: solo que muchos indicadores coinciden.

Obtener API key gratuita →

02Autenticación y límites

ConceptoValor
Auth en /public/*No requerida durante la beta
Rate limit30 solicitudes / minuto (por IP)
Pares disponiblesETH · SOL · XRP · BNB · BTC (USDT)
FormatoJSON · HTTPS · CORS abierto
Actualización de datosCada 5 minutos · cada respuesta incluye age_seconds
Costo en betaGratuito
El score es determinista y reproducible: mismos datos = mismo score, siempre. No lo decide un LLM — la IA solo escribe el brief en español. El score_breakdown te muestra qué señal votó a qué lado y con qué peso.

03Endpoints

Reemplaza <PAR> por uno de: ETHUSDT, SOLUSDT, XRPUSDT, BNBUSDT, BTCUSDT.

EndpointDevuelve
GET/public/score/preview/<PAR>Índice de acuerdo 0–100, lado dominante y desglose
GET/public/brief/<PAR>Brief de IA en español del par
GET/public/indicators/<PAR>Índices propios: CASCADE, IMI, ICC, IFO, IDS, FV, lecturas de decisión
GET/public/technicals/<PAR>RSI, MACD, EMA (cálculo propio)
GET/public/signals/feedHistorial de cruces ≥72 con el movimiento posterior a 4h — para que lo audites tú mismo
GET/public/session/latamSesión de mercado activa con contexto LATAM
GET/public/healthEstado del sistema y frescura de datos
GET /public/score/preview/<PAR>

El endpoint estrella. Una llamada calcula LONG y SHORT a la vez desde las mismas señales.

{
  "symbol": "ETHUSDT",
  "score": 47,            // score del lado ganador (0–100)
  "direction": "short",  // gana por >15 pts, si no: neutral
  "long_score": 5,
  "short_score": 47,
  "score_breakdown": [
    {"signal":"flujo_ordenes","raw":-25,"norm":-1.0,"weight":0.22,"side":"short"},
    {"signal":"presion_libro","raw":8,"norm":0.53,"weight":0.18,"side":"long"}
  ],
  "dominant_signals": [ ... ],
  "age_seconds": 230,
  "stale": false
}
Cómo leerlo: el número mide cuántos indicadores coinciden ahora mismo, no adónde irá el precio. Auditamos el tramo ≥ 72 sobre 2.784 observaciones: acertó la dirección el 53,3% (n=199, p=0,395) — indistinguible del azar. Trátalo como un resumen del estado actual, nunca como una señal de entrada. Ver la auditoría completa →
GET /public/brief/<PAR>

Análisis en español del estado actual del mercado. Describe, no pronostica.

{
  "available": true,
  "symbol": "ETHUSDT",
  "brief": "El flujo de órdenes muestra presión vendedora y el sesgo
            agregado de los indicadores es bajista. Es una descripción
            del estado actual, no una recomendación de entrada.",
  "age_seconds": 15,
  "stale": false
}
GET /public/indicators/<PAR>

Los índices propios + las 3 lecturas de decisión sintetizadas (flujo, posición, valor).

{
  "cascade": {"cascade_index":50,"level":"alto"},
  "indices_institucionales": {
    "ids":-18,"ips":2.9,"imi":44,"icc":0.7,"icc_pcr":1.2,"fv":1.7e-5
  },
  "lecturas_decision": {
    "flujo":{"dir":"vendedor"},
    "posicion":{"estado":"longs_cargados"},
    "valor":{"estado":"barato"}
  },
  "data_freshness": { ... }
}

04Glosario de índices

Rangos de referencia para interpretar los índices propios de CruzTRD.

ÍndiceRango e interpretación
CASCADE0–100 · <25 bajo · 25–44 moderado · 45–69 alto · ≥70 crítico
IMI-100 a +100 · >20 institucional comprador · <-20 institucional vendedor
ICC (Mayer)0.3–4.0 · <0.8 suelo histórico · >2.0 zona techo
IFO ratio0.5–2.0 · >1.15 compradora · <0.87 vendedora
IDS-100 a +100 · >15 sesgo comprador · <-15 sesgo vendedor
PCR0.3–2.0 · <0.7 más calls que puts · >1.2 más puts que calls

05Webhooks

Registra una URL al pedir tu API key y recibe un POST automático cuando cualquier par supere score 72.

// Payload que recibes
{
  "event": "signal",
  "symbol": "SOLUSDT",
  "score": 82,
  "direction": "long",
  "brief": "...",
  "ts": 1781912703,
  "source": "CruzTRD Terminal"
}

Headers: X-CruzTRD-Event: signal · X-CruzTRD-Score: 82

06Ejemplos de integración

Python

import requests

r = requests.get(
  "https://terminal.cruztrd.com"
  "/public/score/preview/ETHUSDT")
d = r.json()

if d["score"] >= 72 and d["direction"] == "long":
    print("Acuerdo alto del lado long — no es senal de entrada")
elif d["score"] >= 72 and d["direction"] == "short":
    print("Acuerdo alto del lado short — no es senal de entrada")
else:
    print("Los indicadores estan divididos")

JavaScript

const r = await fetch(
  "https://terminal.cruztrd.com" +
  "/public/indicators/ETHUSDT");
const d = await r.json();

const imi = d.indices_institucionales.imi;
console.log(`IMI: ${imi}`);

07Manejo de errores

CódigoSignificado
400Símbolo no disponible — usa uno de los 5 pares soportados
429Rate limit excedido — baja a ≤30 req/min
503Datos aún no disponibles este ciclo — reintenta en unos segundos
Las respuestas incluyen stale y age_seconds: si stale: true, el dato existe pero es viejo — úsalo con criterio o reintenta.