Documentazione per sviluppatori

API pubblica segnali CQS

Questa guida spiega come ottenere segnali di trading live da Crypto Quality Signals nel tuo bot, foglio di calcolo o integrazione personalizzata. Se usi già Cornix, 3Commas o piattaforme simili, puoi saltare gran parte del contenuto — si collegano con il tuo ID abbonamento dalle loro impostazioni.

URL base di produzione: https://api.cryptoqualitysignals.com

Avvio rapido

L'API pubblica fa una cosa principale: restituire segnali di trading aperti pubblicati da CQS in una finestra temporale a tua scelta. Invii la tua api_key, leggi il JSON e processi l'array signals.

  1. Scegli la chiave: FREE per i segnali pubblici, oppure l'ID abbonamento premium dalla dashboard CQS.
  2. Esegui GET o POST su https://api.cryptoqualitysignals.com/getSignal/ con quella chiave.
  3. Analizza l'array signals. Ogni elemento include zona di ingresso, target, stop loss, exchange e direzione.

Richiesta minima (piano gratuito, ultimi 5 minuti):

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

Autenticazione

Ogni richiesta richiede api_key. Non c'è un token Bearer separato — passa la chiave come parametro query (GET) o campo form (POST).

Accesso gratuito

Usa la stringa letterale FREE. Ricevi segnali dai canali free e freemium. Volume e tipi sono più limitati rispetto al premium.

Accesso premium

Dopo l'abbonamento, il tuo account riceve un ID abbonamento univoco — una lunga stringa alfanumerica. Quel valore è la tua api_key. Copialo esattamente dalla dashboard premium.

Le chiavi premium sbloccano i segnali VIP. Chiavi errate, scadute o inattive restituiscono codice errore 5.

Tieni la chiave privata. Chiunque abbia il tuo ID abbonamento può ottenere segnali VIP. Contatta il supporto se sospetti una fuga così possiamo ruotarla.

L'endpoint getSignal

URLhttps://api.cryptoqualitysignals.com/getSignal/
MetodiGET, POST
Rispostaapplication/json, UTF-8

GET e POST si comportano allo stesso modo. GET è comodo per test rapidi; POST va bene se preferisci un body form.

Percorso alternativo (stesso handler): https://api.cryptoqualitysignals.com/api/v1/getSignal

Parametri della richiesta

Parametro Obbligatorio Predefinito Descrizione
api_key FREE o il tuo ID abbonamento premium.
interval No 5 Finestra di look-back in minuti (1–20). Vengono restituiti solo i segnali aperti in quella finestra.
exchange No Filtra per exchange, es. binance, BINANCE_FUTURES, kucoin.
currency No Filtro valuta di quotazione, es. USDT, BTC.
type No Filtro orizzonte del segnale. Deve corrispondere a uno dei tipi validi sotto. Vuoto = tutti i tipi consentiti per il tuo piano.

POST usa gli stessi nomi campo: api_key, interval, exchange, currency, type.

Formato della risposta

Ogni risposta usa lo stesso envelope:

{
  "error": 0,
  "message": "Success",
  "count": 2,
  "signals": [ ... ]
}
  • error — Stato numerico (0 = OK). Vedi codici di errore.
  • message — Stato leggibile per i log.
  • count — Lunghezza dell'array signals.
  • signals — Elenco di oggetti segnale; vuoto quando non c'è corrispondenza.

Esempio (un segnale, i campi possono variare):

{
  "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 non c'è nulla: error 0, message "No new signals available", count 0, signals [].

Campi del segnale spiegati

I prezzi sono restituiti come stringhe per evitare sorprese da floating point. Parsali come decimali nel tuo linguaggio.

id

ID univoco del segnale. Traccialo in locale per non processare due volte lo stesso segnale aperto al poll successivo.

timestamp

Ora di pubblicazione sui nostri server (YYYY-MM-DD HH:MM:SS).

exchange, currency, coin

Dove operare. Coppia = coin/currency (esempio: BTC/USDT).

direction

LONG = acquisto aspettando un rialzo. SHORT = vendita o short (comune sui futures).

buy_start, buy_end

Zona di ingresso suggerita. Molti trader scalano l'ingresso tra questi prezzi invece di comprare a mercato sull'ask.

ask

Prezzo di riferimento al momento della pubblicazione. I bot spesso lo mappano al campo prezzo del segnale.

target1, target2, target3

Livelli di take-profit. Non ogni segnale ne usa tre — i target non usati possono essere vuoti. Uscite parziali a ogni livello sono comuni.

stop_loss

Prezzo di invalidazione. Per LONG, esci se il prezzo raggiunge o scende sotto questo livello.

type

Fascia di orizzonte (vedi tipi di segnale).

risk_level

Punteggio di rischio interno, di solito 1–5. Valore più alto = setup più aggressivo.

leverage (solo futures)

Leva suggerita sugli exchange futures. Omesso sulle coppie spot.

Tipi di segnale

Passa una di queste stringhe esatte nel parametro type (spazi e slash inclusi):

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

Tipo sconosciuto → errore 1 con messaggio descrittivo.

Accesso gratuito vs premium

FREE ID abbonamento premium
Pool di segnaliServizi FREE + FREEMIUMServizio VIP
VolumeSottoinsieme di segnali pubbliciFeed VIP completo
Tabella scalpingSì (type=SCALPING)Tabella principale segnali

Scalping (piano gratuito)

I segnali scalping gratuiti usano una tabella separata. Richiedili con api_key=FREE e type=SCALPING.

  • Solo target1 è impostato (take-profit singolo).
  • buy_start / buy_end sono ±0,1% intorno all'ask.
  • risk_level è sempre 3.
  • Gli scalp BitMEX sono esclusi dal feed gratuito.
curl -s "https://api.cryptoqualitysignals.com/getSignal/?api_key=FREE&type=SCALPING&interval=10"

Exchange futures e leva

I segnali futures usano i codici exchange elencati sotto. Usa il valore esatto del campo exchange quando filtri con il parametro exchange.

Codici exchange futures supportati

La maggior parte delle righe usa minuscole (es. binance_futures). Il filtro deve corrispondere esattamente al valore memorizzato.

  • 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

Filtrando per qualsiasi codice futures elencato sopra, la risposta include leverage — di solito il punto medio del nostro intervallo min/max. Senza filtro exchange, leverage è omesso anche per segnali futures.

Conferma tipo di contratto e leva massima sul tuo exchange prima del trading automatico.

Codici di errore

Codice Messaggio tipico Cosa fare
0 Successo / Nessun nuovo segnale Normale. Controlla count.
1 Chiave mancante / Tipo non valido / Parametro errato Correggi la richiesta.
4 Impossibile validare l'API Key DB billing irraggiungibile — riprova più tardi.
5 API Key non valida / Sistema non disponibile Chiave errata, abbonamento inattivo o DB segnali down.
6 Limite di rate superato Rallenta il polling (il limite potrebbe tornare in futuro).

Con quale frequenza fare polling

Non c'è webhook per la consegna pubblica — fai polling a intervalli.

  • Ogni 30–60 secondi per lo scalping; 2–5 minuti di solito bastano per segnali swing.
  • Imposta interval leggermente più ampio del periodo di poll per non perdere segnali tra una richiesta e l'altra.
  • Deduplica per id. L'API restituisce tutti i segnali aperti corrispondenti nella finestra, non solo quelli nuovissimi.
  • Su errore 4 o 5 con "unavailable", attendi prima di riprovare.

Bot e piattaforme di trading

Il premium CQS funziona nativamente con 3Commas, Cornix, Zignaly, AnnyDeCrypto, Le-Trader, Nefertiti, 3C.exchange e altri. Quegli strumenti chiedono il tuo ID abbonamento nella loro UI — niente parsing JSON a meno che non voglia un setup personalizzato.

Stai costruendo il tuo bot? Mappa coin + currency al simbolo dell'exchange, rispetta direction, entra tra buy_start e buy_end, imposta lo stop su stop_loss e scala le uscite su target1–target3. Prova prima in paper trading.

Esempi di codice

GET — premium, Binance USDT, breve termine

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 — body form

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;

Domande frequenti

Dove trovo il mio ID abbonamento?
Accedi alla dashboard premium CQS dopo l'acquisto. Copia l'ID abbonamento esattamente in api_key.
Perché vedo lo stesso segnale due volte?
I segnali aperti restano nel feed finché non li chiudiamo. Traccia i valori id già gestiti.
Vengono restituiti segnali chiusi o con target raggiunto?
No. Sono inclusi solo segnali aperti nella finestra temporale.
HTTPS è obbligatorio?
Sì. Usa sempre https://. Non inviare mai una chiave premium su HTTP in chiaro.
Serve aiuto?
Membri premium: usa il canale supporto incluso nel piano. In caso di disservizio, prova una richiesta FREE prima di aprire un ticket.

Ultimo aggiornamento: maggio 2026 · Si applica a https://api.cryptoqualitysignals.com/getSignal/