Aller au contenu
getcoinsight

API développeurs

API REST pour les marchés, l'analyse technique et les actualités — les mêmes données que ce site. Spécification OpenAPI (JSON)

Authentification

Chaque requête nécessite une clé API dans l'en-tête Authorization.

curl -H "Authorization: Bearer gcs_YOUR_KEY" \
  "https://getcoinsight.com/api/v1/markets?limit=10"

Créez et gérez vos clés dans votre profil

Quotas quotidiens

Free100 requêtes/jour
Radar1 000 requêtes/jour
Pro10 000 requêtes/jour
Trader+100 000 requêtes/jour

Chaque formule inclut l'accès à l'API, Free compris. /analysis renvoie des bougies en temps réel sur toutes les formules ; /fundamental nécessite une formule avec analyse fondamentale (Pro et supérieure). Toutes les clés d'un compte partagent un quota journalier, avec une limite de rafale de 60 requêtes par minute.

Les réponses incluent les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining. Au-delà du quota → HTTP 429.

Endpoints

  • GET /api/v1/markets?limit=100

    Principales cryptos par capitalisation : prix, capitalisation, volume, variation 1h/24h/7j.

  • GET /api/v1/candles?symbol=btc&id=bitcoin&interval=1h&limit=300

    Bougies OHLCV (de la plus ancienne, heure de barre en secondes unix) — exactement la série sur laquelle /analysis calcule, dans la fenêtre d'historique de votre offre.

  • GET /api/v1/analysis?symbol=btc&id=bitcoin&interval=1h

    Instantané technique : prix, tendance, RSI/ADX/ATR, consensus AT, régime, score composite. Intervalles : 1m–1M.

  • GET /api/v1/fundamental?assetId=bitcoin

    Score fondamental : percentile dans le groupe de pairs sur 5 catégories + historique 90 jours ; sans assetId, liste des derniers scores. Nécessite un plan avec analyse fondamentale.

  • GET /api/v1/announcements?kind=listings&days=7

    Annonces de listing / délisting / avertissement des exchanges (Binance, Bybit, OKX, Upbit, Bithumb) avec le prix à la publication, 3 minutes plus tard et lors de la détection par notre radar, et les variations à 1 h / 24 h / 7 j. Les clés Free voient une ligne 10 minutes après la détection et les 30 derniers jours ; Radar+ sans délai et toute l'archive depuis 2021.

  • GET /api/v1/news?limit=30

    Titres crypto agrégés (CoinDesk, Cointelegraph, Decrypt, The Block, Bitcoin Magazine).

  • GET /api/v1/presets

    Presets du screener : id, nom, les filtres appliqués, le sens du trade et les filtres que votre offre écarterait.

  • GET /api/v1/funding?limit=100&sort=fundingAbs

    Funding des perpétuels (équivalent 8 h, Binance/Bybit) comparé à Bybit/OKX/Hyperliquid, base, open interest et sa variation sur 1h/4h/24h. Tri : rank, funding, fundingAbs, oiUsd, oiChangePct.

  • GET /api/v1/screener?preset=oversold_reversal&interval=4h

    Lance un screen : un preset et/ou des filtres en 15m–1w sur l'univers de votre offre. Renvoie les résultats actuels avec score, niveaux du setup et ticker TradingView.

Tous les endpoints renvoient du JSON : { "data": … } en cas de succès, sinon { "error": "code" }. CORS ouvert.

Chaque réponse authentifiée contient aussi X-RateLimit-Reset (secondes unix de la prochaine remise à zéro, 00:00 UTC). Les réponses 429 et 502 contiennent Retry-After en secondes — attendez ce délai ; ne relancez jamais un 4xx à l'identique. Un symbole inconnu renvoie 404 unknown_symbol. Dans v1, des champs peuvent être ajoutés mais jamais supprimés ni retypés.

Le screener peut aussi répondre 503 busy (tous les créneaux de scan sont pris) ou 502 upstream_degraded (la plupart des cryptos n'ont pas pu être lues) — les deux portent Retry-After et ne sont pas décomptés. Toute méthode autre que GET reçoit un 405 en JSON.

Pour un bot, le webhook d'annonces ci-dessous est la meilleure source : il est envoyé et réessayé. Interroger les annonces : passez since=<addedAt en ms>, puis à chaque appel suivant le nextCursor de la réponse précédente comme cursor. Les lignes arrivent dans l'ordre où notre radar les a ajoutées : une annonce détectée tard n'est jamais sautée ; dédoublonnez par id. Sans since, les plus récemment publiées viennent en premier — remontez avec cursor tant que hasMore vaut true. Un appel qui ne renvoie aucune ligne ne coûte aucune unité de quota une fois toutes les 10 secondes par compte (quotaCharged: false) : interroger toutes les 10 secondes tient dans n'importe quelle offre ; une réponse avec des lignes compte normalement.

# first call: everything added in the last hour, oldest first
curl -H "Authorization: Bearer gcs_YOUR_KEY" \
  "https://getcoinsight.com/api/v1/announcements?since=$(( $(date +%s) * 1000 - 3600000 ))"
# every next call: the nextCursor of the previous response
curl -H "Authorization: Bearer gcs_YOUR_KEY" \
  "https://getcoinsight.com/api/v1/announcements?cursor=NEXT_CURSOR"

Prix par ticker : priceAtAnnouncement et move1hPct / move24hPct / move7dPct partent de la minute de publication — conservés pour compatibilité, ce n'est pas un prix négociable sur un listing rapide. priceAt3m avec movesFrom3m (et movesFrom3mVsBtc, moins la variation du BTC) part de 3 minutes après la publication — la base des statistiques du site ; priceAtDetection avec movesFromDetection part du moment où notre radar a détecté l'annonce. Chaque horizon se termine au même instant, horizonsEndAt (minute de publication + 1 h / 24 h / 7 j) : « 1 h » depuis +3 min dure 57 minutes, et un horizon dont il restait moins de 75 % à notre détection n'a pas de variation depuis la détection. Sans frais, slippage ni funding.

Champs pour bots (API et webhook) : market (spot / perp / alpha / tradfi), quotes (les marchés de cotation cités dans le titre, p. ex. KRW, BTC, USDT — vide s'ils ne sont pas indiqués), tradingStartsAt (seulement si le titre donne une heure, sinon null — le corps de l'annonce n'est pas analysé), detectedAt (quand notre radar l'a vue en premier) et tradable — les codes de marché à trader : role notice = le marché visé par l'annonce (INITUSDT, KRW-INIT, INIT-USD), role reference = le marché Binance/Bybit d'où viennent nos prix.

API du screener

Lancez n'importe quel preset du screener ou vos propres filtres depuis votre code — le même moteur, le même univers et les mêmes limites d'offre que le site. Chaque résultat inclut les niveaux du setup et un ticker TradingView, prêt pour un bot.

curl -H "Authorization: Bearer gcs_YOUR_KEY" \
  "https://getcoinsight.com/api/v1/screener?preset=strong_uptrend&interval=4h&universe=100&limit=10"

# explicit filters (override the preset's):
curl -G -H "Authorization: Bearer gcs_YOUR_KEY" \
  "https://getcoinsight.com/api/v1/screener" \
  --data-urlencode 'filters={"rsiMax":35,"sma200":"above"}' \
  --data-urlencode "interval=1h"
{ "data": { "preset": "strong_uptrend", "interval": "4h", "universe": 100,
  "scanned": 97, "matched": 7, "skippedYoung": 2, "errored": 1,
  "scannedAt": "2026-10-01T18:30:08.283Z", "results": [ {
    "id": "solana", "symbol": "SOL", "rank": 6, "price": 152.3, "compositeScore": 0.41,
    "rating": "buy", "regime": "trending_up", "rsi": 61.2, "adx": 27.4, "atrPct": 2.1,
    "tvTicker": "BINANCE:SOLUSDT.P",
    "venue": { "exchange": "binance", "market": "perp", "symbol": "SOLUSDT" },
    "setup": { "side": "long", "entry": 152.3, "stop": 146.9, "targets": [161.2, 168],
               "rr": 1.6, "rrNet": 1.4, "viable": true, "status": "idea", "watchReason": null } } ] } }

Paramètres : preset, filters (JSON), interval (15m, 1h, 4h, 1d, 1w), universe (plafonné par votre offre), limit. 6 scans par minute au maximum. preset: oversold_reversal, overbought_rejection, volume_spike, volume_dump, breakout, breakdown, strong_uptrend, strong_downtrend, trend_pullback, downtrend_rally, bearish_breakdown, overbought, deep_drawdown, momentum_7d, accumulation, bb_squeeze, mean_reversion, relative_strength, deriv_squeeze, short_squeeze, smart_money, multi_pillar, strong_shorts, range_long, range_short, dip_weekly_uptrend, oi_build_flat, ema_cross_btc_up. Raccourcis numériques : rsiMin, rsiMax, scoreMin, scoreMax, relVolumeMin, adxMin, adxMax, change24hMin, change24hMax, change7dMin, change7dMax, volumeMin.

Webhooks pour bots de trading

Les alertes, les nouveaux résultats des screens enregistrés et les idées du jour peuvent être envoyés en POST à votre propre URL https. Choisissez le format dans Profil → Notifications.

  • JSON — une requête par notification avec des champs structurés (type d'événement, symbole, ticker TradingView par plateforme, sens, prix, unité de temps, id d'alerte, entrée/stop/objectifs) plus les champs d'origine subject/text/url.
  • 3Commas — une requête par signal au format du bot de signaux 3Commas ; collez le secret et le bot_uuid de votre bot dans le modèle.
  • Cornix — un signal texte au format Cornix par événement (paire, plateforme, sens, entrée, take-profits, stop).
  • Custom — votre propre modèle avec des variables entre doubles accolades ; les noms façon TradingView comme ticker, exchange, close et interval fonctionnent aussi.
{ "event": "notification", "type": "price_alert", "version": 2,
  "subject": "…", "text": "…", "url": "https://getcoinsight.com/…", "timestamp": "2026-01-01T12:00:00.000Z",
  "symbol": "BTC", "base": "BTC", "quote": "USDT", "coinId": "bitcoin",
  "exchange": "binance", "market": "perp", "venueSymbol": "BTCUSDT", "ticker": "BINANCE:BTCUSDT.P",
  "tickers": { "binance": "BINANCE:BTCUSDT.P", "bybit": "BYBIT:BTCUSDT.P", "okx": "OKX:BTCUSDT.P" },
  "side": "long", "direction": "above", "price": 65000, "timeframe": "1h",
  "alertId": "clx…", "alertType": "price_above", "threshold": 65000,
  "entry": 65000, "stop": 63500, "targets": [67500, 70000], "rr": 1.7,
  "assetUrl": "https://getcoinsight.com/coin/bitcoin?symbol=btc&interval=1h",
  "signals": [ { "event": "price_alert", "symbol": "BTC", … } ] }

Modèle du bot de signaux 3Commas :

{
  "secret": "PASTE_3COMMAS_SECRET",
  "max_lag": "300",
  "timestamp": "{{timenow}}",
  "trigger_price": "{{close}}",
  "tv_exchange": "{{exchange}}",
  "tv_instrument": "{{ticker}}",
  "action": "{{action}}",
  "bot_uuid": "PASTE_BOT_UUID"
}

Variables : {{event}} {{kind}} {{symbol}} {{base}} {{quote}} {{coin_id}} {{tv_symbol}} {{ticker}} {{exchange}} {{tv_exchange}} {{tv_instrument}} {{venue}} {{market}} {{venue_symbol}} {{pair}} {{pair_3commas}} {{side}} {{direction}} {{action}} {{exit_action}} {{intent}} {{price}} {{close}} {{timeframe}} {{interval}} {{alert_id}} {{alert_type}} {{threshold}} {{screen_id}} {{screen_name}} {{entry}} {{stop}} {{target1}} {{target2}} {{targets}} {{rr}} {{url}} {{timestamp}} {{timenow}} {{subject}} {{text}} {{signal_id}} {{test}} {{leverage}} {{disclaimer}}

Le paramètre action vaut enter_long / enter_short UNIQUEMENT pour les signaux activés pour le bot : le choix Bot d'une alerte (long, short ou suivre le sens du setup), « Envoyer au bot » d'un filtre enregistré (setups confirmés sur bougie clôturée uniquement) ou l'option des idées du jour. Un franchissement de prix n'implique jamais un sens à lui seul. Tout le reste est informatif et n'atteint jamais 3Commas ni Cornix. Chaque signal porte un signal_id et son horodatage d'origine ; il n'est jamais renvoyé, jamais envoyé avec plus de 5 minutes de retard, et au plus votre limite quotidienne (≤ 10) part par 24 h.

Alertes bracket : toucher l'entrée envoie enter_long / enter_short avec le stop et les objectifs du bracket ; le stop (ou le stop suiveur) et le dernier objectif envoient exit_long / exit_short — uniquement à un bot qui a reçu notre entrée. Cornix reçoit l'entrée avec son stop et ses objectifs et clôture seul. Une crypto sans marché vérifié sur une plateforme, une action envoyée à 3Commas / Cornix, un short sur un marché spot ou une direction contraire aux niveaux du signal ne sont jamais envoyés comme trade.

Chaque requête est signée : X-GCS-Signature: sha256=HMAC(corps, votre secret). Les formats pour bots envoient au plus 10 signaux par notification.

Webhook d'annonces (Radar et plus)

Chaque annonce de listing, de délisting ou d'avertissement correspondant à vos réglages d'annonces est envoyée en POST au format JSON (event "announcement") lorsque notre radar la détecte — format JSON uniquement. Chaque tentative a un délai de 8 secondes et les redirections ne sont pas suivies : répondez 2xx rapidement. Une tentative échouée est réessayée avec un intervalle croissant jusqu'à 30 minutes, jusqu'à 9 tentatives sur environ 2 heures : une livraison peut donc arriver en retard. Dédupliquez par eventId (aussi l'en-tête X-Getcoinsight-Delivery ; attempt et X-Getcoinsight-Attempt comptent les tentatives) et jugez la fraîcheur par announcement.detectedAt ou firstAttemptAt — timestamp est l'heure d'envoi de cette tentative. Récupérez ce qui a été manqué via /api/v1/announcements?since=…. Après 20 livraisons échouées d'affilée, le webhook est désactivé et vous recevez un avis dans la cloche.

POST <your https URL>
Content-Type: application/json
X-GCS-Signature: sha256=<hex HMAC-SHA256 of the raw body, your secret>
X-Getcoinsight-Delivery: announcement:binance:1234567
X-Getcoinsight-Attempt: 1

{ "event": "announcement", "type": "announcement", "version": 2,
  "subject": "…", "text": "…", "url": "https://getcoinsight.com/…", "timestamp": "2026-10-26T09:00:04.120Z",
  "eventId": "announcement:binance:1234567", "attempt": 1, "firstAttemptAt": "2026-10-26T09:00:04.100Z",
  "disclaimer": "…", "signals": [],
  "announcement": { "id": "binance:1234567", "exchange": "binance", "kind": "listing",
    "title": "Binance Will List X (X)", "symbols": ["X"],
    "publishedAt": "2026-10-26T09:00:00.000Z", "noticeUrl": "https://www.binance.com/…",
    "market": "spot", "quotes": ["USDT"], "tradingStartsAt": null, "detectedAt": "2026-10-26T09:00:03.900Z",
    "tradable": [ { "base": "X", "venue": "binance", "type": "spot", "symbol": "XUSDT", "role": "notice" } ],
    "eventId": "announcement:binance:1234567", "attempt": 1, "firstAttemptAt": "2026-10-26T09:00:04.100Z" } }

Configurez votre webhook dans Profil → Notifications →