Journal des modifications
Ce qui a changé dans le contrat de l’API, du plus récent au plus ancien, et le préavis auquel nous nous engageons avant un changement cassant. Contrat actuel : v1, version OpenAPI 1.1.0.
#Versions et obsolescence
Le contrat est v1. Non cassant, et livré sans préavis : une nouvelle route, un nouveau champ dans une réponse, un nouveau paramètre facultatif, un nouvel error.code, une nouvelle valeur dans un texte informatif. Écrivez des clients qui ignorent les champs inconnus.
Cassant : supprimer ou renommer une route, un champ, un paramètre ou un error.code, changer une unité ou le sens d’un champ. Un changement cassant est annoncé sur cette page, et ne prend effet pour votre offre qu’une fois son préavis écoulé :
| Offre | Préavis avant un changement cassant |
|---|---|
| Free | Aucun préavis garanti (annoncé sur cette page) |
| Traders | 30 jours |
| Financial | 60 jours |
| Startup | 90 jours |
| Enterprise | Fixé par le contrat |
#Changements
2026-10-01 · Un seul format d’erreur, une référence générée
- Toute erreur a une seule forme :
status: "error",timestamp,error{code, message, param}etdetail.error.codeest stable et lisible par une machine : c’est lui qu’il faut tester.detailest conservé et répète le message ; sur une erreur de validation, c’est désormais une chaîne et non plus une liste. - Les messages d’erreur sont en anglais (ils étaient en français). Un client qui comparait le texte français doit passer à
error.code. /v1/snapshotaccepte=truecomme une profondeur de 1 (funding_rate_8h=true). Appelé avecsymbolseul, il renvoie désormais aussiavailable_multi_tf_fields,timeframesetmax_depth.timePeriod=1mosur les historiques Bitcoin, une écriture sans ambiguïté d’un mois ;1my fonctionne toujours et y signifie toujours un mois.POST /v1/indicatorsaccepte aussi les paramètres imbriqués dans un objetparameters./v1/trades/futuresur un stablecoin répondunavailable: "not_applicable"(il disaitno_data).- Les réponses sont compressées (gzip) quand le client le demande ;
GET https://api.bytnode.com/répond un index JSON des liens. - Le contrat OpenAPI porte désormais un schéma, l’unité de chaque champ et un exemple réel pour chaque route, les réponses d’erreur et des exemples de code. Nouveau :
llms-full.txt, une collection Postman et la référence interactive. - Les textes de
/v1/macro/correlations(method) et de/v1/macro/risk(condition) sont en anglais.
2026-09-30 · Qualité des données
- Les bougies de transactions combinées (
/v1/trades) sont construites à partir des bougies spot et futures de la même fenêtre. - Nouveau champ
volume_estimatedsur les bougies :truequand le volume agrégé d’une bougie plus ancienne a été reconstitué. - Le funding est aligné sur la période réellement couverte ;
/v1/funding/rate?live=1sert la fenêtre en cours. - La variation de prix de la paire USDC est calculée sur les bougies spot.
- WebSocket : chaque message
book.*portemid_avgetspread_bps_avg.
2026-09-29 · Alias de temps, réponses vides, contrat publié
- Chaque objet horodaté sous
dataporte aussitime, une copie de sonbucket,timestamp,date… : un client générique lit une seule clé. - Toute route REST dont
dataest vide porteunavailable(not_applicable,no_api_key,no_data), comme le snapshot. - Le contrat OpenAPI, avec l’unité de chaque champ numérique, est servi sans clé sur
/openapi.json. - Les bougies OHLC viennent d’un marché spot de référence par symbole ; les volumes restent agrégés sur toutes les places.
- Un
timeframeinconnu est un422, et non plus un403.
2026-09-28 · Paramètres stricts et une échelle par suffixe
- Paramètres stricts : un paramètre qu’une route ne déclare pas, ou un paramètre répété, est un
422avec une suggestion (il était ignoré en silence). since_ms/until_msen secondes, en micro- ou nanosecondes, ou antérieurs au 2009-01-03 sont un422.- Unités par suffixe :
*_pctest un pourcentage,*_ratioune fraction,*_bpsdes points de base.aprest devenuapr_pct;basis_pctest servi ×100. - Chaque horodatage est en ISO 8601 UTC à millisecondes fixes (
2026-09-28T14:00:00.000Z). - L’enveloppe rappelle le
symbolet letimeframeeffectifs de la requête. is_closedest immuable : une fenêtre close est définitive et n’est jamais réécrite.- En-têtes de débit au format IETF (
RateLimit-Policy,RateLimit), avec le quota mensuel restant. - Toute erreur produite par la passerelle est en JSON, jamais une page HTML.
/v1/statusa une ligne par flux public, avec un seuil de 1,5 × son intervalle attendu.
2026-09-26 · Serveur MCP
- Le serveur MCP expose trois outils couvrant toute l’API (73 champs), avec la clé et l’offre du client lui-même.
- Un historique n’est jamais coupé en silence : une période sans
timeframereçoit le pas le plus fin qui tient, et chaque série porte sa couverture réelle (ranges).
2026-09-16 · Capacité du WebSocket
- Le flux WebSocket tourne sur une infrastructure dédiée et annonce sa capacité : un
503à la poignée de main signifie que le service est plein, pas que votre offre a refusé. - Les numéros de séquence (
seq) sont globaux par canal.
2026-09-12 · Dix nouvelles paires
- XMR, LINK, ADA, LTC, UNI, GRAM (ex-TON), AVAX, HBAR, NEAR et TAO rejoignent le catalogue : 22 paires.