Journal des modifications

Journal des modifications et versions

Ce qui a changé dans l'API, la version actuelle et les règles de compatibilité.

v1Version actuelle
2026.11.12Révision du catalogue

Versionnement et compatibilité

Versionnement

  • L'API publique est en version v1. Le préfixe de chemin est `/api` et ne comporte pas de numéro de version.
  • Le catalogue possède sa propre version fondée sur la date (`catalog_version`, par exemple 2026.11.11). Elle change chaque fois que des endpoints, des paramètres ou la documentation changent.
  • Chaque réponse des endpoints de la couche de données interne porte un identifiant `schema` (par exemple `sd.oi.v1`). Un nouvel identifiant n'est émis que lorsqu'un champ existant change de sens ou de type.

Compatibilité

  • L'ajout d'endpoints, de paramètres facultatifs, de champs de réponse, de valeurs d'énumération ou de plateformes est un changement rétrocompatible et peut intervenir à tout moment. Les clients doivent ignorer les champs qu'ils ne connaissent pas.
  • Supprimer ou renommer un champ, changer son type ou son unité, ou rendre obligatoire un paramètre facultatif est un changement non rétrocompatible. Il est annoncé ici avant sa mise en production.
  • Les corrections sont l'exception : le correctif d'un chiffre erroné, ou d'une entrée invalide auparavant acceptée silencieusement, est livré immédiatement et figure ici le jour de sa mise en ligne, marqué comme cassant lorsque le code client peut devoir être modifié.
  • Les chiffres peuvent changer parce que la couverture s'améliore (ajout d'une nouvelle plateforme ou d'un nouveau type de contrat). La couverture est toujours indiquée dans la réponse : comparez donc `coverage` avant de comparer les totaux.
  • Les données manquantes sont renvoyées sous la forme `null` et listées sous `coverage.unavailable` ; elles ne sont jamais remplacées par 0 ni par une estimation. Un code qui traite `null` comme 0 sera faux.

Obsolescence

  • Les endpoints marqués `legacy` continuent de fonctionner, mais les nouveaux développements devraient utiliser le remplacement indiqué.
  • Un endpoint hérité n'est supprimé qu'au plus tôt 90 jours après l'apparition de son entrée d'obsolescence dans ce journal des modifications.
  • Les endpoints marqués `beta` alimentent des pages du site ; leur ensemble de champs peut changer sans le préavis de 90 jours, et chaque changement reste listé ici.

Modifications

Ajouté2026.11.12Rétrocompatible

`/api/currency/ex-table`: `market=perpetual`, `delivery` and `all`, plus one status vocabulary

  • New values of `market`: `perpetual` (perpetual contracts), `delivery` (dated futures) and `all` (spot, perpetual and delivery markets of the coin in one list). They return one row per market and number `rank` inside the requested view.
  • Every per-market row carries `market_status` (`ACTIVE`, `EXPIRING`, `EXPIRED`, `NO_QUOTE`, `STALE`), `reason_code` (`NO_QUOTE`, `EXPIRED`, `STALE`, `UNAVAILABLE` or null), `source_at`, `quality`, `is_stale`, `expires_in_s`, `symbol` and `base`. The state is derived from the contract specification of the exchange (expiry) and from the time the ticker was received. `status` and `status_reason` are unchanged.
  • `EXPIRING` marks a contract that still trades and expires within 24 hours (`meta.expiring_window_s`). Rows that are not `ACTIVE` or `EXPIRING` return `price: null`; no price is carried over from an earlier quote or from another contract.
  • `meta` adds `market_status_counts`, `type_counts` and `type_rankable`. The row order is the same for every caller: rankable rows by `volume_usd` descending, then rows without a quote, expired contracts last.
Ajouté2026.11.12Rétrocompatible

`/api/liquidation-events` adds event / account counts and BTC high, low and range

  • New fields on every row: `btc_high`, `btc_low`, `btc_range` (USD, high − low) and `btc_range_pct` ((high − low) / low × 100), with `btc_range_meta`. Prices are the median of the UTC daily high / low on Binance (BTC/USDT), Coinbase (BTC/USD) and Kraken (BTC/USD) spot. The fields are null unless all three venues have a final daily candle.
  • New fields on `coinboss` rows: `liquidation_count` (de-duplicated liquidation events; not people) and `account_count` (distinct liquidated accounts on exchanges that expose an account identifier, currently Hyperliquid only; `quality` is `PARTIAL`), each with a `_meta` object giving source, window, quality and coverage. Both are null on baseline rows.
  • CoinBoss does not publish a liquidated-trader (people) count; `coverage.metrics.people_count.quality` is `UNAVAILABLE`. `liquidated_traders` and `btc_amplitude` are unchanged: they stay the text recorded in the third-party source and are not copied into the new fields.
Modifié2026.11.12Rétrocompatible

`/api/currency/ex-table`: per-contract rows carry their own quote and a `status`

  • With `group=pair`, every contract row now uses the ticker of that contract. Before, only the main contract of each exchange had a price and the other rows returned `price: null`.
  • New row fields with `group=pair` and `market=spot`: `status` (`active`, `no_quote`, `not_provided`, `expired`), `status_reason`, `market_type`, `expiry_ts`, `expiry_date`, `native_symbol`, `quote`, `margin_type`, `price_source`, `price_at` and `rank`; the response adds `meta` (freshness window, volume window and unit, sort rule, row counts per status).
  • Rows that are not `active` return `price: null` and are never filled from another contract. `volume_usd` on such rows is `0` only when the exchange reports zero 24h turnover, otherwise `null`.
  • Order with `group=pair`: `active` rows first by `volume_usd` descending (these carry `rank`), then rows without a live quote by `oi_usd` descending, expired contracts last. `contract_type` now follows the exchange contract specification, so dated contracts on Deribit, Bybit, Gate and KuCoin are reported as `delivery`; `expiry` is set for all of them.
  • Requests without `group` return the same rows and fields as before.
Modifié2026.11.12Rétrocompatible

`/api/liquidation-events` returns the Top 10 with a `source` field

  • This corrects the 2026-11-11 entry below. The historical baseline rows (third-party public historical records) are served again, as recorded and without recalculation.
  • Rows recorded by CoinBoss are UTC daily totals from its own collectors. A day is added only when its total is greater than the 10th place of the list at that time. Every row carries `source` (`historical_baseline` or `coinboss`) and `basis`.
  • The list is sorted by `total_usd` and returns 10 rows. New fields: `data[].total_usd` (same value as `amount_usd`), `data[].source`, `data[].basis` and `threshold_usd`. `coverage` is split into `coverage.baseline` and `coverage.coinboss`; the `coverage.source`, `coverage.from` and `coverage.note` fields introduced on 2026-11-11 moved under them.
Modifié2026.11.12Rétrocompatible

Les défaillances amont répondent HTTP 503 et conservent le corps d'erreur JSON

  • Les requêtes en échec qui répondaient auparavant HTTP 502 ou 504 répondent désormais 503 avec un en-tête `Retry-After`. Le CDN placé devant l'API remplaçait le corps des réponses 502 et 504 par son propre texte, ce qui faisait disparaître `code` et `request_id` ; une réponse 503 est transmise telle quelle. Les valeurs de `code` sont les mêmes qu'auparavant.
  • La défaillance d'une source amont derrière un endpoint n'affecte plus les autres endpoints : la passerelle ne réessaie sur une autre instance qu'en cas d'erreur de connexion ou de dépassement du délai d'attente.
  • `/api/sd/options/*` et `/api/sd/cme/overview` acceptent les noms de cryptos écrits en caractères chinois. Une crypto dépourvue d'un tel marché reçoit HTTP 200 avec des agrégats `null` au lieu d'un 400.
  • Historique des règlements de financement : les trous dans la fenêtre de 30 jours sont détectés et comblés pour les 150 cryptos les plus échangées sur Bybit, OKX, Gate et Bitget (40 sur HTX), de sorte que `cum_7d` et `cum_30d` sont complets pour davantage de cryptos.
Corrigé2026.11.11Rétrocompatible

Indice de variabilité des liquidations réparé ; réponse 503 lorsque la source est indisponible

  • `/api/indicators/cdri` : la série quotidienne était vide parce que le regroupement par jour lisait l'horodatage en millisecondes comme des secondes. L'endpoint renvoie désormais jusqu'à 90 jours UTC complets de totaux de liquidations ; `current.days` (nouveau champ) indique le nombre de jours utilisés, et `current.cdri` / `current.liqCV` valent `null` lorsqu'il existe moins de deux jours.
  • `/api/indicators/reddit-subs` : répond HTTP 503 avec le code `UNAVAILABLE` tant que sa source refuse les requêtes, au lieu de HTTP 500. Un nombre d'abonnés n'est stocké que lorsque la source renvoie un nombre positif.
  • Les corps d'erreur des réponses HTTP 5xx ne contiennent plus le texte d'erreur amont dans le champ hérité `msg` ; celui-ci contient désormais le même message générique que `error`.
Corrigé2026.11.11Non rétrocompatible

Les enregistrements qui ont cessé d'être mis à jour sont signalés et exclus des totaux

  • `/api/coins/all` et `/api/coins/search` : un enregistrement de crypto non mis à jour depuis plus de 48 heures renvoie `market_cap` et `mcap_rank` à `null` avec `is_stale: true`, et est trié après toutes les lignes à jour. La règle en vigueur est reprise dans `stale_rule`.
  • `/api/derivatives/coins-full` : exactement une ligne par crypto. Un symbole partagé par plusieurs enregistrements de cryptos produisait auparavant une ligne par enregistrement ; la ligne porte désormais le nom, la capitalisation et le rang du plus important enregistrement mis à jour dans les 48 dernières heures, ou `null` lorsqu'il n'y en a aucun. `mcap_rank` est un nouveau champ.
  • `/api/reserves/overview` : chaque ligne comporte `updated_at` et `is_stale`. `total` n'additionne désormais que les plateformes mises à jour dans les 36 dernières heures ; l'ancienne définition est conservée sous `total_including_stale`, et les plateformes exclues sont listées dans `stale_exchanges`.
  • `/api/margin/rates` et `/api/margin-fee/matrix` : les actifs et les cellules dont le taux a cessé d'être mis à jour portent `is_stale: true` ; les seuils et les décomptes sont renvoyés au premier niveau.
  • Les instantanés quotidiens de la capitalisation globale du marché du 2026-10-28 au 2026-11-11 ont été recalculés après la découverte, dans la somme, de deux enregistrements présentant une capitalisation impossible (supérieure à celle de Bitcoin). Les collecteurs stockent désormais `null` pour de telles valeurs.
Modifié2026.11.11Rétrocompatible

Les pannes de source sont signalées dans la réponse au lieu de provoquer une erreur ou de paraître à jour

  • `/api/indicators/mempool/pools` : lorsque la source de pool de minage ne répond pas, le dernier résultat stocké est renvoyé avec `stale: true`, `cached_at` et `stale_reason` au lieu d'un HTTP 500.
  • `/api/etf/funds` : nouvel objet `frozen_fields` nommant les champs au niveau du fonds dont la source a cessé de publier le 2026-10-08, avec la date à laquelle chaque valeur se rapporte.
  • `/api/indicators/halving` : nouvel objet `current_difficulty` (`value`, `as_of`, `source`). `difficulty` (progression vers le prochain ajustement) reste à `null` tant que sa source est indisponible.
  • `/api/browser/detect` : une recherche de chaîne qui a échoué n'est plus signalée comme une adresse sans activité. `kind` vaut `lookup_failed` lorsqu'aucune chaîne n'a pu être interrogée.
  • `/api/currency/flows` : la documentation liste désormais les 22 fenêtres réellement servies par l'endpoint (de 5 minutes à 1 an).
Modifié2026.11.11Non rétrocompatible

Les valeurs de paramètre non prises en charge renvoient 400 au lieu des données par défaut

  • `/api/derivatives/kline` : `interval=4h` renvoie de véritables bougies de 4 heures construites à partir de bougies 1h sur des bornes UTC (il renvoyait auparavant des bougies 1h). Tout intervalle autre que `1h`, `4h` ou `1d` renvoie 400.
  • Endpoints d'options sous `/api/options/` : une `currency` non prise en charge renvoie 400 au lieu des données BTC, et `coin` est accepté comme alias sur les sept endpoints.
  • `/api/etf/flows`, `/api/etf/detail`, `/api/etf/funds` et `/api/etf/holdings` : un `asset` non pris en charge renvoie 400 au lieu des données BTC.
  • `/api/liquidations/coins` : un `range` non pris en charge renvoie 400 au lieu des données 24h, et la fenêtre en vigueur est reprise dans `range`.
  • `limit` est plafonné à 1000 sur `/api/liquidations`, `/api/liquidations/largest` et `/api/derivatives/coins-full`. Un `limit` non numérique utilise la valeur par défaut au lieu d'échouer.
Corrigé2026.11.11Non rétrocompatible

Correction du volume quotidien et des statistiques de recherche

  • `/api/volume/coin` : `daily_30d` additionnait tous les instantanés glissants sur 24h d'une journée et surestimait le volume quotidien d'un facteur 24 environ. Il retient désormais le dernier instantané de chaque jour UTC.
  • `/api/research/stats` avec `topic=derivatives` : `volume_24h_usd` présentait la même surestimation et a été corrigé.
  • `avg_funding_rate_pct` dans la même réponse est désormais un pourcentage, soit environ 100 fois la fraction brute renvoyée auparavant. Adaptez tout code qui le multipliait par 100.
Corrigé2026.11.11Rétrocompatible

Les anciens endpoints de marché ignorent les lignes qui ont cessé d'être mises à jour

  • Concernés : `/api/market/tickers`, `/api/market/volume-rank`, `/api/market/open-interest`, `/api/market/funding`, `/api/market/funding-spread`, `/api/market/long-short`, `/api/market/long-short-v2`, `/api/market/overview`, `/api/p3/volume/overview`, `/api/p3/perp-spot-volume`, `/api/volume/btc-ex-share` et `/api/derivatives/coins-full`.
  • Les lignes ne sont comptées que tant qu'elles sont à jour : tickers dans la dernière heure, positions ouvertes dans les 3 dernières heures (CME : 120 heures), financement dans les 4 dernières heures, ratios long/short dans les dernières 24 heures.
  • Les totaux sont légèrement inférieurs et certaines listes sont plus courtes. Les contrats qui ne sont plus négociés affichent des prix à `null` au lieu de leur dernière valeur.
Corrigé2026.11.11Rétrocompatible

Contrats à multiplicateur rattachés à leur crypto de base

  • `/api/funding/coin`, `/api/funding/history`, `/api/funding/chart` et `/api/ls/coin` rattachent désormais à la crypto de base les contrats cotés en multiples d'une crypto (par exemple `1000PEPE`), de sorte que ces cryptos listent davantage de plateformes.
Ajouté2026.11.11Rétrocompatible

Données d'options de six plateformes

  • Nouveaux `/api/sd/options/overview`, `/api/sd/options/expiries`, `/api/sd/options/strikes`, `/api/sd/options/chain` et `/api/sd/options/history`.
  • Les positions ouvertes, le volume notionnel 24h, les ratios put/call, le max pain, l'IV ATM, le skew 25-delta et la structure par terme de l'IV sont calculés par CoinBoss à partir des listes de contrats de Deribit, Binance, Bybit, OKX, Gate et Coincall.
  • Le volume notionnel et le volume en primes sont des champs distincts et ne sont jamais additionnés. Les colonnes qu'une plateforme ne publie pas valent `null` et sont listées sous `coverage.field_gaps`.
  • L'historique est horaire et commence le 2026-11-11 ; les heures antérieures ne sont pas reconstituées.
Ajouté2026.11.11Rétrocompatible

Données ETF spot, CME et CFTC issues des publications primaires

  • Nouveaux `/api/sd/etf/overview`, `/api/sd/etf/funds` et `/api/sd/etf/history`, construits à partir des publications des émetteurs. Les totaux couvrent les fonds que CoinBoss peut collecter ; chaque autre fonds est listé avec le motif, et `totals_scope` vaut toujours `covered_funds_only`.
  • Le flux d'un fonds est calculé par CoinBoss à partir des parts en circulation et de la NAV (ou de l'actif net et de la NAV). La formule utilisée est renvoyée pour chaque fonds dans `flow_method`.
  • Nouveaux `/api/sd/cme/overview` (volume quotidien et positions ouvertes de huit produits CME) et `/api/sd/cme/cot` (positionnement hebdomadaire CFTC par catégorie de traders).
  • Les prix de règlement du CME ne sont pas encore collectés. Les montants en USD utilisent un prix de référence étiqueté (`price_src`), et la vue d'ensemble est marquée PARTIAL pour cette raison.
Ajouté2026.11.11Rétrocompatible

Profondeur du carnet d'ordres et slippage

  • Nouveaux `/api/sd/liquidity`, `/api/sd/liquidity/history` et `/api/sd/liquidity/rank`.
  • La profondeur à ±0.5 %, ±1 % et ±2 % du prix médian et le slippage d'ordres au marché de 10k / 100k / 1M USD sont calculés à partir d'instantanés réels des carnets d'ordres de 24 plateformes, séparément pour les marchés perpétuels et spot.
  • Un instantané qui n'atteint pas une bande est marqué `complete: false`, présenté comme une borne inférieure et exclu de l'agrégat. `n_included` indique combien de carnets un total contient.
  • `/api/indicators/large-orderbook` est un résultat de modèle, pas un carnet d'ordres ; utilisez les nouveaux endpoints pour la liquidité en attente.
Ajouté2026.11.11Rétrocompatible

Basis d'après les prix mark et d'indice des plateformes

  • Nouveaux `/api/sd/basis`, `/api/sd/basis/history` et `/api/sd/basis/rank`.
  • Basis perpétuel = (mark − index) ÷ index × 100 sur la même plateforme ; le basis spot-perpétuel compare le perpétuel au marché spot de la même plateforme ; les contrats à échéance ajoutent une valeur annualisée.
  • Les agrégats sont fournis pondérés par l'OI, pondérés par le volume et sous forme de médiane. Les lignes qui ne satisfont pas aux règles d'inclusion sont tout de même renvoyées avec `excluded_reason`.
  • L'historique horaire commence le 2026-11-11.
Modifié2026.11.11Rétrocompatible

Les dictionnaires d'icônes utilisent l'origine publique du site

  • `/api/coin-icons` et `/api/exchange-icons` renvoient des URL d'icônes sur `https://www.coinboss.com`, la même origine que tous les autres endpoints publics. Les chemins (`/api/coin-icon/{coin}`, `/api/exchange-icon/{exchange}`) sont inchangés.
Obsolète2026.11.11Rétrocompatible

`/api/basis/list` et `/api/cftc/cot` marqués comme hérités

  • Utilisez `/api/sd/basis/rank` à la place de `/api/basis/list`, et `/api/sd/cme/cot` à la place de `/api/cftc/cot`. Les endpoints hérités continuent de fonctionner.
Modifié2026.11.11Rétrocompatible

`/api/liquidation-events` ne sert désormais que les enregistrements de CoinBoss

  • La liste est construite à partir des ordres de liquidation que CoinBoss a reçus des flux des plateformes. Son historique commence le 2026-08-19 ; les dates antérieures ne renvoient aucune ligne.
  • Les noms et les types des champs sont inchangés.
Supprimé2026.11.11Rétrocompatible

Les endpoints d'exploitation ne sont plus accessibles depuis Internet

  • `/api/health/alerts`, `/api/health/server`, `/api/health/history` et `/api/health/ch-read` répondent 404 aux requêtes publiques. Ils n'ont jamais fait partie de l'API publique.
  • Utilisez `/api/meta/status` pour le statut du service et `/api/meta/quality` pour la fraîcheur des données.
Ajouté2026.11.11Rétrocompatible

Centre développeurs et métadonnées d'API lisibles par machine

  • Nouveaux `/api/meta/catalog`, `/api/meta/endpoint`, `/api/meta/status`, `/api/meta/quality`, `/api/meta/changelog` et `/api/meta/openapi`.
  • Les tableaux de champs et les exemples de réponses de la documentation sont générés à partir de réponses réelles par une sonde d'API qui appelle chaque endpoint public toutes les 5 minutes.
  • Le statut des endpoints (available / partial / degraded / down / unavailable) provient désormais de ces appels réels, et non de l'état des processus.
Modifié2026.11.11Rétrocompatible

Corps d'erreur uniforme et ID de requête

  • Chaque réponse porte un en-tête `X-Request-Id` ; les corps d'erreur le reprennent sous `request_id`.
  • Les corps d'erreur sont désormais `{ success: false, code, error, request_id }` sur tous les endpoints. `error` reste une chaîne, de sorte que les clients existants continuent de fonctionner.
  • Les routes `/api/*` inconnues répondent par un 404 JSON (`NOT_FOUND`) au lieu d'une page HTML.
  • Les réponses HTTP 429 incluent `Retry-After`.
  • Les messages des erreurs 5xx sont génériques ; les détails internes ne sont plus renvoyés.
Ajouté2026.11.11Rétrocompatible

Endpoints de la couche de données interne avec couverture et qualité dans chaque réponse

  • Nouveaux `/api/sd/oi`, `/api/sd/funding`, `/api/sd/liquidations`, `/api/sd/volume`, `/api/sd/ls`, `/api/sd/coin` et `/api/sd/quality`.
  • Les positions ouvertes distinguent les contrats USDT / USDC / à marge en crypto / à échéance et précisent quelles plateformes déclarent des chiffres double face.
  • Le financement est renvoyé brut, avec son intervalle, normalisé sur 8h et annualisé ; les plateformes dont le contrat n'est pas actif sont exclues et listées.
Obsolète2026.11.11Rétrocompatible

`/api/market/long-short` marqué comme hérité

  • Utilisez `/api/market/long-short-v2` pour la vue en liste ou `/api/sd/ls` pour les ratios par comptes / par positions / taker de chaque plateforme.
Modifié2026.10.31Rétrocompatible

Les champs d'icône renvoient des chemins de même origine

  • Les champs tels que `image_url` / `icon` contiennent désormais un chemin CoinBoss (`/api/coin-icon/...`) au lieu d'une URL tierce.
  • Une crypto sans icône vérifiée renvoie `null` ; les clients doivent afficher leur propre image de substitution.
Corrigé2026.10.24Rétrocompatible

Les lignes périmées n'entrent plus dans les agrégats

  • Les totaux des positions ouvertes, du financement et du long/short n'utilisent que les lignes mises à jour dans la fenêtre de fraîcheur (plus longue pour le CME, qui publie quotidiennement).
  • Les contrats délistés cessent de contribuer aux totaux dès que leur dernière mise à jour sort de la fenêtre.

Endpoints hérités

Conservés pour compatibilité. Ils continuent de fonctionner ; les nouvelles intégrations doivent utiliser l'endpoint de remplacement.

EndpointRemplacementDescription
/api/market/long-short/api/market/long-short-v2Conservé pour les intégrations existantes. Utilisez `/api/market/long-short-v2` (ajoute un filtre par plateforme) ou `/api/sd/ls` (par plateforme, avec comptes / positions / taker séparés).
/api/basis/list/api/sd/basis/rank`apr_pct` vaut `basis_pct × 3 × 365`, une simple extrapolation du basis actuel des perpétuels comme s'il était payé toutes les 8 heures ; ce n'est ni un rendement de financement ni un rendement de futures à échéance. `/api/sd/basis` présente séparément le basis mark-index, le basis spot-perpétuel et le basis des futures à échéance.