API REST

Vue d’ensemble

Une requête, une réponse déjà agrégée. Toutes les routes partagent la même forme, la même enveloppe et les mêmes paramètres transverses : ce qui est vrai d’une famille l’est des autres.

#La forme d’une requête

Forme
GET https://api.bytnode.com/v1/<famille>/<metrique>
  ?symbol=BTCUSDT       # obligatoire sur les routes par actif
  &timeframe=1h         # sur les routes bucketees
  &limit=100            # sur les routes /history
  &fields=timestamp,rate

X-API-KEY: votre_cle

Le chemin dit la famille et la métrique. Les paramètres disent l’actif, le pas de temps et la profondeur. L’en-tête porte la clé. Il n’y a rien d’autre à connaître pour appeler n’importe laquelle des routes.

Un seul endpoint échappe à cette forme : POST /v1/indicators, qui reçoit un corps JSON parce qu’il décrit un calcul, pas une lecture.

#Dernière valeur ou historique

La plupart des métriques existent en deux versions. La route nue rend la dernière valeur — un objet, ou null. Le suffixe /history rend une liste, du plus récent au plus ancien.

curl
# La derniere valeur
GET /v1/basis?symbol=BTCUSDT

# Les 200 dernieres, de la plus recente a la plus ancienne
GET /v1/basis/history?symbol=BTCUSDT&limit=200

# Une fenetre datee, en millisecondes
GET /v1/basis/history?symbol=BTCUSDT&since_ms=1756425600000&until_ms=1756512000000

#Paramètres communs

ParamètreTypeDéfautDescription
symbolstringrequisL’actif, au format du catalogue — BTCUSDT. Absent : 422. Inconnu : 400 avec la liste. Les routes marché entier ne l’acceptent pas.
timeframestringrequisSur les routes bucketées : 1m, 5m, 15m, 30m, 1h, 4h, 1d. Hors liste : 422.
limitinteger100Sur les routes /history. Plafond de 1000 en général, 500 sur le ratio long/short et les écarts entre places.
since_ms / until_msintegerFenêtre temporelle en millisecondes Unix, quand la route l’accepte. Le filtre s’applique avant limit.
livebooleanfalseSur les routes bucketées de dernière valeur : expose la période en cours, marquée is_closed: false.
fieldsstringProjection CSV de data, notation pointée pour l’imbriqué. Champ inconnu : 422 avec suggestion.

Ce qui n’existe pas

Le paramètre exchange n’existe sur aucune route : les réponses sont agrégées et ne nomment pas leur place, à la seule exception des écarts entre places. Le passer rend 422.

#Les familles

AuthentificationUne clé pour les trois canaux. Où la poser, comment la protéger, comment la faire tourner.Réponses et erreursL’enveloppe commune, la projection ?fields=, les codes d’erreur et ce qu’ils veulent dire.Limites d’usageDébit, connexions simultanées, profondeur d’historique, et la conduite à tenir en 429.ConventionsSymboles, timeframes, agrégation multi-place, bougies fermées et couverture des sources.API RESTLa forme d’une requête REST, les familles disponibles et le choix latest / history.Système et métadonnéesSanté, fraîcheur des sources, catalogue des symboles et rapport de capacité.SnapshotSoixante et un champs en une seule requête, avec les clés unavailable et coverage.Prix et volumeBougies, trades agrégés, ticks individuels, gros ordres et variation de prix.DérivésFunding, open interest, liquidations, ratio long/short, basis et écarts entre places.Flux et microstructureCVD, carnet agrégé, VWAP, ratio acheteur/vendeur, taille moyenne et heatmap.Indicateurs techniquesVingt indicateurs calculés à la demande, calibrés sur TradingView.OptionsOpen interest, volume, put/call, max pain, volatilité implicite et Greeks sur BTC et ETH.On-chain et réseauRéseau Bitcoin, valorisation on-chain BTC, et les huit familles Ethereum.Macro, ETF et sentimentSéries macro officielles, bougies macro intraday, fondamentaux ETF, tokenomics et Fear & Greed.Flux WebSocketQuatre canaux consolidés, authentification par message, séquences et codes de fermeture.

Toutes les routes tiennent sur une page dans le catalogue des endpoints.