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.
- Choisissez votre clé : FREE pour les signaux publics, ou l'ID d'abonnement premium depuis le tableau de bord CQS.
- Appelez GET ou POST sur https://api.cryptoqualitysignals.com/getSignal/ avec cette clé.
- 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.
L'endpoint getSignal
| URL | https://api.cryptoqualitysignals.com/getSignal/ |
| Méthodes | GET, POST |
| Réponse | application/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 TERMSHORT/MID TERMSCALPINGMID TERMLONG TERM
Type inconnu → erreur 1 avec message descriptif.
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_futuresBinance Futures -
bitget_futuresBitget Futures -
bitmexBitMEX -
bybitBybit -
deribitDeribit -
htx_futuresHTX Futures -
kucoin_futuresKucoin Futures -
okx_futuresOKX 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/