Documentación para desarrolladores

API pública de señales CQS

Esta guía explica cómo obtener señales de trading en vivo de Crypto Quality Signals en tu bot, hoja de cálculo o integración personalizada. Si ya usas Cornix, 3Commas o plataformas similares, puedes omitir la mayor parte — esas plataformas se conectan con tu ID de suscripción desde su propia configuración.

URL base de producción: https://api.cryptoqualitysignals.com

Inicio rápido

La API pública hace una cosa principal: devolver señales de trading abiertas publicadas por CQS dentro de una ventana de tiempo que tú eliges. Envías tu api_key, lees el JSON y procesas el array signals.

  1. Elige tu clave: FREE para señales públicas, o el ID de tu suscripción premium desde el panel de CQS.
  2. Haz GET o POST en https://api.cryptoqualitysignals.com/getSignal/ con esa clave.
  3. Analiza el array signals. Cada elemento incluye zona de entrada, objetivos, stop loss, exchange y dirección.

Solicitud mínima (plan gratuito, últimos 5 minutos):

curl -s "https://api.cryptoqualitysignals.com/getSignal/?api_key=FREE&interval=5"

Autenticación

Toda solicitud necesita api_key. No hay token Bearer aparte — pasa la clave como parámetro de query (GET) o campo de formulario (POST).

Acceso gratuito

Usa la cadena literal FREE. Recibes señales de los canales free y freemium. El volumen y los tipos son más limitados que en premium.

Acceso premium

Tras suscribirte, tu cuenta recibe un ID de suscripción único — una cadena alfanumérica larga. Ese valor es tu api_key. Cópialo exactamente desde el panel premium.

Las claves premium desbloquean señales VIP. Claves incorrectas, expiradas o inactivas devuelven código de error 5.

Mantén tu clave en privado. Cualquiera con tu ID de suscripción puede obtener señales VIP. Contacta con soporte si sospechas una filtración para que podamos rotarla.

El endpoint getSignal

URLhttps://api.cryptoqualitysignals.com/getSignal/
MétodosGET, POST
Respuestaapplication/json, UTF-8

GET y POST se comportan igual. GET es útil para pruebas rápidas; POST funciona si prefieres cuerpo de formulario.

Ruta alternativa (mismo handler): https://api.cryptoqualitysignals.com/api/v1/getSignal

Parámetros de la solicitud

Parámetro Obligatorio Predeterminado Descripción
api_key FREE o el ID de tu suscripción premium.
interval No 5 Ventana de look-back en minutos (1–20). Solo se devuelven señales abiertas dentro de esa ventana.
exchange No Filtrar por exchange, p. ej. binance, BINANCE_FUTURES, kucoin.
currency No Filtro de moneda de cotización, p. ej. USDT, BTC.
type No Filtro de horizonte de la señal. Debe coincidir con uno de los tipos válidos abajo. Vacío = todos los tipos permitidos para tu plan.

POST usa los mismos nombres de campo: api_key, interval, exchange, currency, type.

Formato de la respuesta

Toda respuesta usa el mismo sobre:

{
  "error": 0,
  "message": "Success",
  "count": 2,
  "signals": [ ... ]
}
  • error — Estado numérico (0 = OK). Consulta los códigos de error.
  • message — Estado legible para logs.
  • count — Longitud del array signals.
  • signals — Lista de objetos de señal; vacía cuando no hay coincidencias.

Ejemplo (una señal, los campos pueden variar):

{
  "error": 0,
  "message": "Success",
  "count": 1,
  "signals": [
    {
      "id": "1847291",
      "timestamp": "2026-05-24 14:32:05",
      "exchange": "binance",
      "currency": "USDT",
      "coin": "BTC",
      "direction": "LONG",
      "buy_start": "94250.5",
      "buy_end": "94400",
      "target1": "95500",
      "target2": "96200",
      "target3": "97000",
      "stop_loss": "93100",
      "type": "SHORT TERM",
      "ask": "94325",
      "risk_level": "3"
    }
  ]
}

Cuando no hay nada disponible: error 0, message "No new signals available", count 0, signals [].

Campos de la señal explicados

Los precios se devuelven como cadenas para evitar sorpresas de punto flotante. Análalos como decimales en tu lenguaje.

id

ID único de la señal. Regístralo localmente para no procesar la misma señal abierta dos veces en la siguiente consulta.

timestamp

Hora de publicación en nuestros servidores (YYYY-MM-DD HH:MM:SS).

exchange, currency, coin

Dónde operar. Par = coin/currency (ejemplo: BTC/USDT).

direction

LONG = compra esperando subida. SHORT = venta o short (habitual en futuros).

buy_start, buy_end

Zona de entrada sugerida. Muchos traders escalan la entrada entre estos precios en lugar de comprar a mercado en el ask.

ask

Precio de referencia al publicar. Los bots suelen mapearlo al campo de precio de la señal.

target1, target2, target3

Niveles de take-profit. No todas las señales usan tres — los objetivos no usados pueden quedar vacíos. Las salidas parciales en cada nivel son habituales.

stop_loss

Precio de invalidación. Para LONG, sal si el precio alcanza o cruza por debajo de este nivel.

type

Franja de horizonte (consulta tipos de señal).

risk_level

Puntuación interna de riesgo, normalmente 1–5. Valor más alto = setup más agresivo.

leverage (solo futuros)

Apalancamiento sugerido en exchanges de futuros. Omitido en pares spot.

Tipos de señal

Pasa una de estas cadenas exactas en el parámetro type (espacios y barras incluidos):

  • SHORT TERM
  • SHORT/MID TERM
  • SCALPING
  • MID TERM
  • LONG TERM

Tipo desconocido → error 1 con mensaje descriptivo.

Acceso gratuito vs premium

FREE ID de suscripción premium
Pool de señalesServicios FREE + FREEMIUMServicio VIP
VolumenSubconjunto de señales públicasFeed VIP completo
Tabla de scalpingSí (type=SCALPING)Tabla principal de señales

Scalping (plan gratuito)

Las señales de scalping gratuitas usan una tabla separada. Solicítalas con api_key=FREE y type=SCALPING.

  • Solo target1 está definido (take-profit único).
  • buy_start / buy_end están a ±0,1% del ask.
  • risk_level es siempre 3.
  • Los scalps de BitMEX quedan excluidos del feed gratuito.
curl -s "https://api.cryptoqualitysignals.com/getSignal/?api_key=FREE&type=SCALPING&interval=10"

Exchanges de futuros y apalancamiento

Las señales de futuros usan los códigos de exchange listados abajo. Use el valor exacto del campo exchange al filtrar con el parámetro exchange.

Códigos de exchange de futuros soportados

La mayoría de las filas usan minúsculas (p. ej. binance_futures). El filtro debe coincidir exactamente con el valor almacenado.

  • binance_futures Binance Futures
  • bitget_futures Bitget Futures
  • bitmex BitMEX
  • bybit Bybit
  • deribit Deribit
  • htx_futures HTX Futures
  • kucoin_futures Kucoin Futures
  • okx_futures OKX Futures

Campo leverage

Al filtrar por cualquier código de futuros listado arriba, la respuesta incluye leverage — normalmente el punto medio de nuestro rango min/max. Sin filtro de exchange, leverage se omite incluso en señales de futuros.

Confirma el tipo de contrato y el apalancamiento máximo en tu exchange antes de operar automáticamente.

Códigos de error

Código Mensaje típico Qué hacer
0 Éxito / Sin señales nuevas Normal. Revisa count.
1 Clave ausente / Tipo inválido / Parámetro incorrecto Corrige la solicitud.
4 No se pudo validar la API Key Base de datos de billing inaccesible — reintenta más tarde.
5 API Key inválida / Sistema no disponible Clave incorrecta, suscripción inactiva o base de datos de señales caída.
6 Límite de tasa superado Reduce la frecuencia de consultas (el límite puede volver en el futuro).

Con qué frecuencia consultar

No hay webhook para entrega pública — consultas según un intervalo.

  • Cada 30–60 segundos para scalping; 2–5 minutos suele bastar para señales swing.
  • Define interval un poco más amplio que tu periodo de consulta para no perder señales entre solicitudes.
  • Deduplica por id. La API devuelve todas las señales abiertas coincidentes en la ventana, no solo las más recientes.
  • En error 4 o 5 con "unavailable", espera antes de reintentar.

Bots y plataformas de trading

El premium de CQS funciona de forma nativa con 3Commas, Cornix, Zignaly, AnnyDeCrypto, Le-Trader, Nefertiti, 3C.exchange y otros. Esas herramientas piden tu ID de suscripción en su interfaz — no hace falta parsear JSON salvo que quieras una configuración personalizada.

¿Montas tu propio bot? Mapea coin + currency al símbolo del exchange, respeta direction, entra entre buy_start y buy_end, pon el stop en stop_loss y escala salidas en target1–target3. Prueba primero en paper trading.

Ejemplos de código

GET — premium, Binance USDT, corto plazo

curl -G "https://api.cryptoqualitysignals.com/getSignal/" \
  --data-urlencode "api_key=YOUR_SUBSCRIPTION_ID" \
  --data-urlencode "interval=15" \
  --data-urlencode "exchange=binance" \
  --data-urlencode "currency=USDT" \
  --data-urlencode "type=SHORT TERM"

POST — cuerpo de formulario

curl -s -X POST "https://api.cryptoqualitysignals.com/getSignal/" \
  -d "api_key=FREE" \
  -d "interval=5" \
  -d "type=SCALPING"

Python

import requests

API_KEY = "YOUR_SUBSCRIPTION_ID"  # or "FREE"
url = "https://api.cryptoqualitysignals.com/getSignal/"
params = {"api_key": API_KEY, "interval": 10, "exchange": "binance", "currency": "USDT"}

resp = requests.get(url, params=params, timeout=30)
data = resp.json()
if data["error"] != 0:
    raise RuntimeError(f"API error {data['error']}: {data['message']}")

seen = set()
for sig in data["signals"]:
    if sig["id"] in seen:
        continue
    seen.add(sig["id"])
    print(sig["coin"], sig["direction"], sig["ask"])

JavaScript (Node 18+)

const params = new URLSearchParams({ api_key: "FREE", interval: "5" });
const res = await fetch(`https://api.cryptoqualitysignals.com/getSignal/?${params}`);
const data = await res.json();
if (data.error !== 0) throw new Error(`${data.error}: ${data.message}`);
for (const s of data.signals) console.log(s.id, s.coin);

PHP

$q = http_build_query(['api_key' => 'FREE', 'interval' => 5]);
$json = file_get_contents('https://api.cryptoqualitysignals.com/getSignal/?' . $q);
$data = json_decode($json, true);
if ($data['error'] !== 0) throw new Exception($data['message']);
foreach ($data['signals'] as $s) echo $s['id'], ' ', $s['coin'], PHP_EOL;

Preguntas frecuentes

¿Dónde encuentro mi ID de suscripción?
Inicia sesión en el panel premium de CQS tras la compra. Copia el ID de suscripción exactamente en api_key.
¿Por qué veo la misma señal dos veces?
Las señales abiertas permanecen en el feed hasta que las cerramos. Registra los valores de id que ya procesaste.
¿Se devuelven señales cerradas o con objetivo alcanzado?
No. Solo se incluyen señales abiertas dentro de la ventana de tiempo.
¿Es obligatorio HTTPS?
Sí. Usa siempre https://. Nunca envíes una clave premium por HTTP sin cifrar.
¿Necesitas ayuda?
Miembros premium: usa el canal de soporte incluido en tu plan. En caso de caída, prueba una solicitud FREE antes de abrir un ticket.

Última actualización: mayo de 2026 · Aplica a https://api.cryptoqualitysignals.com/getSignal/