Documentation développeur

API publique de signaux CQS

Ce guide explique comment récupérer des signaux de trading en direct depuis Crypto Quality Signals dans votre bot, tableur ou intégration personnalisée. Si vous utilisez déjà Cornix, 3Commas ou une plateforme similaire, vous pouvez ignorer la majeure partie — ces outils se connectent avec votre ID d'abonnement via leurs propres paramètres.

URL de base de production : https://api.cryptoqualitysignals.com

Démarrage rapide

L'API publique fait une chose principale : renvoyer les signaux de trading ouverts publiés par CQS dans une fenêtre temporelle que vous choisissez. Vous envoyez votre api_key, lisez le JSON et traitez le tableau signals.

  1. Choisissez votre clé : FREE pour les signaux publics, ou l'ID d'abonnement premium depuis le tableau de bord CQS.
  2. Appelez GET ou POST sur https://api.cryptoqualitysignals.com/getSignal/ avec cette clé.
  3. Parsez le tableau signals. Chaque élément inclut zone d'entrée, cibles, stop loss, exchange et direction.

Requête minimale (offre gratuite, 5 dernières minutes) :

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

Authentification

Chaque requête nécessite api_key. Il n'y a pas de token Bearer séparé — passez la clé en paramètre de query (GET) ou champ de formulaire (POST).

Accès gratuit

Utilisez la chaîne littérale FREE. Vous recevez les signaux des canaux free et freemium. Le volume et les types sont plus limités qu'en premium.

Accès premium

Après abonnement, votre compte reçoit un ID d'abonnement unique — une longue chaîne alphanumérique. Cette valeur est votre api_key. Copiez-la exactement depuis le tableau de bord premium.

Les clés premium débloquent les signaux VIP. Clés incorrectes, expirées ou inactives renvoient le code d'erreur 5.

Gardez votre clé privée. Toute personne disposant de votre ID d'abonnement peut récupérer les signaux VIP. Contactez le support en cas de fuite suspectée pour que nous puissions la faire pivoter.

L'endpoint getSignal

URLhttps://api.cryptoqualitysignals.com/getSignal/
MéthodesGET, POST
Réponseapplication/json, UTF-8

GET et POST se comportent de la même façon. GET est pratique pour des tests rapides ; POST convient si vous préférez un corps de formulaire.

Chemin alternatif (même handler) : https://api.cryptoqualitysignals.com/api/v1/getSignal

Paramètres de requête

Paramètre Obligatoire Par défaut Description
api_key Oui FREE ou votre ID d'abonnement premium.
interval Non 5 Fenêtre de look-back en minutes (1–20). Seuls les signaux ouverts dans cette fenêtre sont renvoyés.
exchange Non Filtrer par exchange, ex. binance, BINANCE_FUTURES, kucoin.
currency Non Filtre de devise de cotation, ex. USDT, BTC.
type Non Filtre d'horizon du signal. Doit correspondre à l'un des types valides ci-dessous. Vide = tous les types autorisés pour votre offre.

POST utilise les mêmes noms de champs : api_key, interval, exchange, currency, type.

Format de réponse

Chaque réponse utilise le même enveloppe :

{
  "error": 0,
  "message": "Success",
  "count": 2,
  "signals": [ ... ]
}
  • error — Statut numérique (0 = OK). Voir les codes d'erreur.
  • message — Statut lisible pour les logs.
  • count — Longueur du tableau signals.
  • signals — Liste d'objets signal ; vide quand rien ne correspond.

Exemple (un signal, les champs peuvent varier) :

{
  "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"
    }
  ]
}

Quand rien n'est disponible : error 0, message "No new signals available", count 0, signals [].

Champs du signal expliqués

Les prix sont renvoyés sous forme de chaînes pour éviter les surprises de virgule flottante. Parsez-les en décimaux dans votre langage.

id

ID unique du signal. Suivez-le localement pour ne pas traiter deux fois le même signal ouvert au prochain poll.

timestamp

Heure de publication sur nos serveurs (YYYY-MM-DD HH:MM:SS).

exchange, currency, coin

Où trader. Paire = coin/currency (exemple : BTC/USDT).

direction

LONG = achat en anticipant une hausse. SHORT = vente ou short (courant sur les futures).

buy_start, buy_end

Zone d'entrée suggérée. Beaucoup de traders échelonnent l'entrée entre ces prix plutôt qu'un achat au marché à l'ask.

ask

Prix de référence à la publication. Les bots mappent souvent cela au champ prix du signal.

target1, target2, target3

Niveaux de take-profit. Tous les signaux n'en utilisent pas trois — les cibles inutilisées peuvent être vides. Les sorties partielles à chaque niveau sont courantes.

stop_loss

Prix d'invalidation. Pour LONG, sortez si le prix atteint ou passe sous ce niveau.

type

Tranche d'horizon (voir types de signal).

risk_level

Score de risque interne, généralement 1–5. Plus élevé = setup plus agressif.

leverage (futures uniquement)

Effet de levier suggéré sur les exchanges futures. Omis sur les paires spot.

Types de signal

Passez l'une de ces chaînes exactes dans le paramètre type (espaces et barres obliques inclus) :

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

Type inconnu → erreur 1 avec message descriptif.

Accès gratuit vs premium

FREE ID d'abonnement premium
Pool de signauxServices FREE + FREEMIUMService VIP
VolumeSous-ensemble de signaux publicsFlux VIP complet
Table scalpingOui (type=SCALPING)Table principale de signaux

Scalping (offre gratuite)

Les signaux de scalping gratuits utilisent une table séparée. Demandez-les avec api_key=FREE et type=SCALPING.

  • Seul target1 est défini (take-profit unique).
  • buy_start / buy_end sont à ±0,1 % autour de l'ask.
  • risk_level vaut toujours 3.
  • Les scalps BitMEX sont exclus du flux gratuit.
curl -s "https://api.cryptoqualitysignals.com/getSignal/?api_key=FREE&type=SCALPING&interval=10"

Exchanges futures et effet de levier

Les signaux futures utilisent les codes d'exchange listés ci-dessous. Utilisez la valeur exacte du champ exchange lors du filtrage avec le paramètre exchange.

Codes d'exchange futures pris en charge

La plupart des lignes utilisent des minuscules (ex. binance_futures). Le filtre doit correspondre exactement à la valeur stockée.

  • 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

Champ leverage

En filtrant par n'importe quel code futures listé ci-dessus, la réponse inclut leverage — généralement le milieu de notre plage min/max. Sans filtre exchange, leverage est omis même pour les signaux futures.

Confirmez le type de contrat et l'effet de levier max sur votre exchange avant le trading automatique.

Codes d'erreur

Code Message typique Que faire
0 Succès / Aucun nouveau signal Normal. Vérifiez count.
1 Clé manquante / Type invalide / Paramètre incorrect Corrigez la requête.
4 Impossible de valider l'API Key Base billing inaccessible — réessayez plus tard.
5 API Key invalide / Système indisponible Mauvaise clé, abonnement inactif ou base signaux hors service.
6 Limite de débit dépassée Ralentissez le polling (la limite pourra revenir à l'avenir).

Fréquence de polling

Il n'y a pas de webhook pour la livraison publique — vous interrogez l'API selon un intervalle.

  • Toutes les 30–60 secondes pour le scalping ; 2–5 minutes suffisent généralement pour les signaux swing.
  • Définissez interval légèrement plus large que votre période de poll pour ne pas manquer de signaux entre les requêtes.
  • Dédoublonnez par id. L'API renvoie tous les signaux ouverts correspondants dans la fenêtre, pas seulement les plus récents.
  • En cas d'erreur 4 ou 5 avec "unavailable", attendez avant de réessayer.

Bots et plateformes de trading

Le premium CQS fonctionne nativement avec 3Commas, Cornix, Zignaly, AnnyDeCrypto, Le-Trader, Nefertiti, 3C.exchange et d'autres. Ces outils demandent votre ID d'abonnement dans leur interface — pas besoin de parser le JSON sauf pour une config personnalisée.

Vous développez votre propre bot ? Mappez coin + currency au symbole de l'exchange, respectez direction, entrez entre buy_start et buy_end, placez le stop à stop_loss et sortez progressivement sur target1–target3. Testez d'abord en paper trading.

Exemples de code

GET — premium, Binance USDT, court terme

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 — corps de formulaire

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;

FAQ

Où trouver mon ID d'abonnement ?
Connectez-vous au tableau de bord premium CQS après l'achat. Copiez l'ID d'abonnement exactement dans api_key.
Pourquoi vois-je le même signal deux fois ?
Les signaux ouverts restent dans le flux jusqu'à leur clôture. Suivez les valeurs id déjà traitées.
Les signaux fermés ou avec cible atteinte sont-ils renvoyés ?
Non. Seuls les signaux ouverts dans la fenêtre temporelle sont inclus.
HTTPS est-il obligatoire ?
Oui. Utilisez toujours https://. N'envoyez jamais une clé premium en HTTP simple.
Besoin d'aide ?
Membres premium : utilisez le canal de support inclus dans votre offre. En cas de panne, testez une requête FREE avant d'ouvrir un ticket.

Dernière mise à jour : mai 2026 · S'applique à https://api.cryptoqualitysignals.com/getSignal/