Documentação para desenvolvedores

API pública de sinais CQS

Este guia explica como obter sinais de trading ao vivo da Crypto Quality Signals no seu bot, planilha ou integração personalizada. Se você já usa Cornix, 3Commas ou plataformas similares, pode pular a maior parte disso — elas se conectam com o ID da sua assinatura nas próprias configurações.

URL base de produção: https://api.cryptoqualitysignals.com

Início rápido

A API pública faz uma coisa principal: retornar sinais de trading abertos publicados pela CQS dentro de uma janela de tempo que você escolhe. Você envia sua api_key, lê o JSON e processa o array signals.

  1. Escolha sua chave: FREE para sinais públicos, ou o ID da sua assinatura premium no painel CQS.
  2. Faça GET ou POST em https://api.cryptoqualitysignals.com/getSignal/ com essa chave.
  3. Analise o array signals. Cada item inclui zona de entrada, alvos, stop loss, exchange e direção.

Requisição mínima (plano gratuito, últimos 5 minutos):

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

Autenticação

Toda requisição precisa de api_key. Não há token Bearer separado — passe a chave como parâmetro de query (GET) ou campo de formulário (POST).

Acesso gratuito

Use a string literal FREE. Você recebe sinais dos canais free e freemium. Volume e tipos são mais limitados que no premium.

Acesso premium

Após assinar, sua conta recebe um ID de assinatura único — uma string alfanumérica longa. Esse valor é sua api_key. Copie exatamente do painel premium.

Chaves premium liberam sinais VIP. Chaves erradas, expiradas ou inativas retornam código de erro 5.

Mantenha sua chave em sigilo. Qualquer pessoa com seu ID de assinatura pode obter sinais VIP. Entre em contato com o suporte se suspeitar de vazamento para podermos rotacioná-la.

O endpoint getSignal

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

GET e POST se comportam da mesma forma. GET é prático para testes rápidos; POST funciona se você preferir corpo de formulário.

Caminho alternativo (mesmo handler): https://api.cryptoqualitysignals.com/api/v1/getSignal

Parâmetros da requisição

Parâmetro Obrigatório Padrão Descrição
api_key Sim FREE ou o ID da sua assinatura premium.
interval Não 5 Janela de look-back em minutos (1–20). Apenas sinais abertos nessa janela são retornados.
exchange Não Filtrar por exchange, ex.: binance, BINANCE_FUTURES, kucoin.
currency Não Filtro de moeda de cotação, ex.: USDT, BTC.
type Não Filtro de horizonte do sinal. Deve corresponder a um dos tipos válidos abaixo. Vazio = todos os tipos permitidos para seu plano.

POST usa os mesmos nomes de campo: api_key, interval, exchange, currency, type.

Formato da resposta

Toda resposta usa o mesmo envelope:

{
  "error": 0,
  "message": "Success",
  "count": 2,
  "signals": [ ... ]
}
  • error — Status numérico (0 = OK). Veja códigos de erro.
  • message — Status legível para logs.
  • count — Tamanho do array signals.
  • signals — Lista de objetos de sinal; vazia quando nada corresponde.

Exemplo (um sinal, campos podem 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"
    }
  ]
}

Quando nada está disponível: error 0, message "No new signals available", count 0, signals [].

Campos do sinal explicados

Preços são retornados como strings para evitar surpresas de ponto flutuante. Converta-os como decimais na sua linguagem.

id

ID único do sinal. Registre localmente para não processar o mesmo sinal aberto duas vezes na próxima consulta.

timestamp

Horário de publicação nos nossos servidores (YYYY-MM-DD HH:MM:SS).

exchange, currency, coin

Onde operar. Par = coin/currency (exemplo: BTC/USDT).

direction

LONG = compra esperando alta. SHORT = venda ou short (comum em futuros).

buy_start, buy_end

Zona de entrada sugerida. Muitos traders escalonam a entrada entre esses preços em vez de comprar a mercado no ask.

ask

Preço de referência no momento da publicação. Bots costumam mapear isso ao campo de preço do sinal.

target1, target2, target3

Níveis de take-profit. Nem todo sinal usa três — alvos não usados podem ficar vazios. Saídas parciais em cada nível são comuns.

stop_loss

Preço de invalidação. Para LONG, saia se o preço atingir ou cruzar abaixo desse nível.

type

Faixa de horizonte (veja tipos de sinal).

risk_level

Pontuação interna de risco, geralmente 1–5. Valor maior = setup mais agressivo.

leverage (apenas futuros)

Alavancagem sugerida em exchanges de futuros. Omitido em pares spot.

Tipos de sinal

Passe uma dessas strings exatas no parâmetro type (espaços e barras incluídos):

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

Tipo desconhecido → erro 1 com mensagem descritiva.

Acesso gratuito vs premium

FREE ID de assinatura premium
Pool de sinaisServiços FREE + FREEMIUMServiço VIP
VolumeSubconjunto de sinais públicosFeed VIP completo
Tabela de scalpingSim (type=SCALPING)Tabela principal de sinais

Scalping (plano gratuito)

Sinais de scalping gratuitos usam uma tabela separada. Solicite com api_key=FREE e type=SCALPING.

  • Apenas target1 é definido (take-profit único).
  • buy_start / buy_end ficam ±0,1% em torno do ask.
  • risk_level é sempre 3.
  • Scalps da BitMEX são excluídos do feed gratuito.
curl -s "https://api.cryptoqualitysignals.com/getSignal/?api_key=FREE&type=SCALPING&interval=10"

Exchanges de futuros e alavancagem

Sinais de futuros usam os códigos de exchange listados abaixo. Use o valor exato do campo exchange ao filtrar com o parâmetro exchange.

Códigos de exchange de futuros suportados

A maioria das linhas usa minúsculas (ex.: binance_futures). O filtro deve coincidir exatamente com o valor armazenado.

  • 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

Ao filtrar por qualquer código de futures listado acima, a resposta inclui leverage — geralmente o ponto médio da nossa faixa min/max. Sem filtro de exchange, leverage é omitido mesmo em sinais de futuros.

Confirme o tipo de contrato e a alavancagem máxima na sua exchange antes de operar automaticamente.

Códigos de erro

Código Mensagem típica O que fazer
0 Sucesso / Sem sinais novos Normal. Verifique count.
1 Chave ausente / Tipo inválido / Parâmetro incorreto Corrija a requisição.
4 Não foi possível validar a API Key Banco de billing inacessível — tente novamente mais tarde.
5 API Key inválida / Sistema indisponível Chave errada, assinatura inativa ou banco de sinais fora do ar.
6 Limite de taxa excedido Reduza a frequência de consultas (o limite pode voltar no futuro).

Com que frequência consultar

Não há webhook para entrega pública — você consulta em intervalos.

  • A cada 30–60 segundos para scalping; 2–5 minutos costuma bastar para sinais swing.
  • Defina interval um pouco maior que o período de consulta para não perder sinais entre requisições.
  • Deduplique por id. A API retorna todos os sinais abertos correspondentes na janela, não só os novíssimos.
  • Em erro 4 ou 5 com "unavailable", aguarde antes de tentar de novo.

Bots e plataformas de trading

O premium CQS funciona nativamente com 3Commas, Cornix, Zignaly, AnnyDeCrypto, Le-Trader, Nefertiti, 3C.exchange e outros. Essas ferramentas pedem seu ID de assinatura na interface — sem precisar parsear JSON, a menos que você queira uma configuração personalizada.

Montando seu próprio bot? Mapeie coin + currency para o símbolo da exchange, respeite direction, entre entre buy_start e buy_end, defina stop em stop_loss e faça saídas parciais em target1–target3. Teste em paper trading primeiro.

Exemplos de código

GET — premium, Binance USDT, curto prazo

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 — corpo de formulário

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;

Perguntas frequentes

Onde encontro meu ID de assinatura?
Faça login no painel premium CQS após a compra. Copie o ID de assinatura exatamente para api_key.
Por que vejo o mesmo sinal duas vezes?
Sinais abertos permanecem no feed até fecharmos. Registre os valores de id que você já processou.
Sinais fechados ou com alvo atingido são retornados?
Não. Apenas sinais abertos dentro da janela de tempo são incluídos.
HTTPS é obrigatório?
Sim. Sempre use https://. Nunca envie uma chave premium por HTTP simples.
Precisa de ajuda?
Membros premium: use o canal de suporte incluído no seu plano. Em caso de indisponibilidade, teste uma requisição FREE antes de abrir um ticket.

Última atualização: maio de 2026 · Aplica-se a https://api.cryptoqualitysignals.com/getSignal/