Historique de la profondeur du carnet d'ordres
Série temporelle de la profondeur agrégée à l'achat (bid) et à la vente (ask) dans une bande donnée pour une crypto, sur toutes les plateformes couvertes ou sur une seule. Chaque point précise le nombre de contrats qu'il contient.
/api/sd/liquidity/historyRequête
Paramètres de requête
| Nom | Type | Requis | Par défaut | Valeurs autorisées | Description |
|---|---|---|---|---|---|
| coin | string | Requis | — | — | Symbole de la crypto, insensible à la casse (par exemple `BTC`). Une valeur absente ou mal formée renvoie 400. Exemple: BTC |
| market | string | Optionnel | perp | perp, spot | Type de marché. Les carnets perpétuels et spot ne sont jamais additionnés. |
| band | string | Optionnel | 1 | 0.5, 1, 2 | Distance au prix médian, en pourcentage. |
| range | string | Optionnel | 24h | 24h, 7d, 30d | Plage rétrospective : 24h (points de 30 minutes), 7d (points de 2 heures) ou 30d (points de 6 heures). |
| exchange | string | Optionnel | — | — | Identifiant d'une plateforme couverte pour ce marché (par exemple `gate`). Par défaut : toutes les plateformes. Une plateforme non couverte renvoie 400. |
Exemple de requête
curl -s "https://www.coinboss.com/api/sd/liquidity/history?coin=BTC"Champs de la réponse
Le tableau des champs est généré à partir de réponses réelles : il liste donc exactement ce que renvoie l'endpoint. Les chemins utilisent a[] pour les éléments d'un tableau et {*} pour les objets indexés par un nom dynamique, comme une crypto ou une plateforme.
| Champ | Type | Unité | Description |
|---|---|---|---|
| success | boolean | — | true lorsque la requête a abouti. En cas d'échec, le corps est `{ success: false, code, error, request_id }`. |
| schema | string | — | Identifiant de schéma de cette réponse. Il ne change que lorsqu'un champ existant change de sens ou de type. |
| now | number | ms | Heure du serveur au moment où la réponse a été construite. |
| coin | string | — | Symbole de la crypto (en majuscules). |
| market | string | — | `perp` ou `spot`. |
| band_pct | number | % | Bande sélectionnée : distance au prix médian. |
| range | string | — | Plage rétrospective appliquée. |
| exchange | string|null | — | Identifiant de la plateforme (en minuscules). |
| interval_s | number | s | Espacement des points. |
| points | array | — | Points de la série, du plus ancien au plus récent. |
| points[] | object | — | Points de la série, du plus ancien au plus récent. |
| points[].t | number | ms | Début de la tranche temporelle. |
| points[].bid_depth_usd | number | USD | Notionnel des ordres d'achat en attente entre le prix médian et la borne inférieure de la bande. Une borne inférieure lorsque `complete` vaut false. |
| points[].ask_depth_usd | number | USD | Notionnel des ordres de vente en attente entre le prix médian et la borne supérieure de la bande. Une borne inférieure lorsque `complete` vaut false. |
| points[].n_included | number | — | Lignes incluses dans la somme de profondeur : à jour et complètes pour la bande. À lire en même temps que la valeur de profondeur. |
| points[].n_rows | number | — | Lignes trouvées, y compris les lignes périmées. |
| points[].mid | number | USD | (meilleur bid + meilleur ask) ÷ 2, prix d'une crypto. |
| points[].uses_aggregated_buckets | boolean | — | True lorsqu'une ligne incluse a utilisé des tranches agrégées par prix, ce qui fait de la somme une borne inférieure. |
| points_expected | number | — | Nombre de points que contient la plage lorsqu'elle est complète. |
| first_t | number | ms | Heure du premier point renvoyé. |
| last_t | number | ms | Heure du dernier point renvoyé. |
| exchange_points | object | — | Nombre de points dans lesquels chaque plateforme apparaît (la clé est l'identifiant de la plateforme). clés dynamiques: deribit,aster,backpack,bitfinex,bitget,bitunix |
| exchange_points.{*} | number | — | Nombre de points dans lesquels chaque plateforme apparaît (la clé est l'identifiant de la plateforme). |
| coverage | object | — | Ce qui est inclus ou non dans les chiffres. Comparez ces éléments avant de comparer les totaux avec une autre source. |
| coverage.included_exchanges | array | — | Sources dont les données à jour sont incluses. |
| coverage.included_exchanges[] | string | — | Sources dont les données à jour sont incluses. |
| coverage.unavailable | array | — | Sources qui n'ont pas pu être incluses, chacune avec sa raison. Elles ne sont jamais comptées comme 0. vide dans les échantillons ayant servi à générer ce tableau |
| coverage.stale_excluded | array | — | Lignes écartées parce que leur dernière mise à jour est hors de la fenêtre de fraîcheur. vide dans les échantillons ayant servi à générer ce tableau |
| method | object | — | Énoncé en texte brut des formules utilisées pour cette réponse, une entrée par champ. |
| method.bid_depth_usd | string | — | Note de formule pour `bid_depth_usd`, en texte brut. |
| method.ask_depth_usd | string | — | Note de formule pour `ask_depth_usd`, en texte brut. |
| method.complete | string | — | Note de formule pour `complete`, en texte brut. |
| method.history | string | — | Note de formule pour `history`, en texte brut. |
| method.exchange_points | string | — | Note de formule pour `exchange_points`, en texte brut. |
| meta | object | — | Traçabilité et fraîcheur de cette réponse. |
| meta.schema | string | — | Identifiant de schéma de cette réponse. Il ne change que lorsqu'un champ existant change de sens ou de type. |
| meta.source | array | — | Endpoints publics amont auprès desquels les données ont été collectées. |
| meta.source[] | object | — | Endpoints publics amont auprès desquels les données ont été collectées. |
| meta.source[].exchange | string | — | Identifiant de la plateforme (en minuscules). |
| meta.source[].market | string | — | `perp` ou `spot`. |
| meta.source[].endpoint | string | — | Endpoint public de la source que lit le collecteur (indiqué pour la traçabilité ; les clients ne l'appellent jamais). |
| meta.observed_at | null | — | Horodatage attribué aux données par la source. |
| meta.received_at | number | ms | Moment où le collecteur CoinBoss a reçu les données. |
| meta.fetched_at | number | ms | Moment où cette réponse a été assemblée. |
| meta.window | string | — | Fenêtre temporelle couverte par les chiffres. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN ou UNAVAILABLE, d'après les horodatages des données et la couverture. |
| meta.is_stale | boolean | — | True lorsque les données sont plus anciennes que leur fenêtre de fraîcheur. |
| meta.cache_ttl_s | number | s | Durée de vie en cache de cette réponse. |
| meta.fallback | string | — | Ce que renvoie l'endpoint lorsque le collecteur ou une source est en échec. |
| meta.collector_heartbeat_age_s | number | s | Secondes écoulées depuis le dernier signal d'activité du collecteur. |
Généré à partir de 3 réponses réelles (2026-11-11 23:00 UTC).
Exemple de réponse
/api/sd/liquidity/history?coin=BTC · Réponse réelle (capture : 2026-11-13 04:02:45 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : points comptait 48 éléments; meta.source comptait 19 éléments; exchange_points comptait 19 éléments; coverage.included_exchanges comptait 19 éléments.
- "success"true
- "schema""coinboss.sd.liquidity/1"
- "now"1794542565889
- "coin""BTC"
- "market""perp"
- "band_pct"1
- "range""24h"
- "exchange"null
- "interval_s"1800
- "points"
- "points_expected"48
- "first_t"1794457800000
- "last_t"1794542400000
- "exchange_points"
- "deribit"96
- "aster"48
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "bid_depth_usd""sum of resting bid notional with price >= mid * (1 - band%), in USD; notional = price * size * contract_value (inverse contracts: size * contract_value); USDT /…"
- "ask_depth_usd""sum of resting ask notional with price <= mid * (1 + band%), in USD; same notional rule as bid_depth_usd"
- "complete""true when BOTH sides of the snapshot reach the band edge (reach_pct >= band) or the whole side of the book was returned; when false the depth values are lower b…"
- "history""sd_book_hist keeps the first snapshot of every 15-minute bucket per contract; each returned point takes, per contract, the first stored snapshot inside the poin…"
- "exchange_points""number of returned points in which each exchange had a row that was complete for the band; a changing venue set moves the aggregate, so compare n_included acros…"
- "meta"
- "schema""coinboss.sd.liquidity/1"
- "source"
- "observed_at"null
- "received_at"1794542400000
- "fetched_at"1794542565889
- "window""24h"
- "quality""FRESH"
- "is_stale"false
- "cache_ttl_s"120
- "fallback""history is append-only (first snapshot of each 15-minute bucket per contract, 30-day retention); buckets the collector missed are simply absent, never interpola…"
- "collector_heartbeat_age_s"3
Échantillons vérifiés
Outre l'exemple ci-dessus, la sonde appelle cet endpoint avec les paramètres suivants et vérifie le schéma à chaque fois.
| Paramètres | HTTP | Latence | Résultat |
|---|---|---|---|
| band=2&coin=ETH&market=spot | 200 | 6 ms | Réussi FRESH |
| coin=SOL&exchange=gate | 200 | 2 ms | Réussi FRESH |
| band=3&coin=BTC | 400 | 1 ms | Réussi renvoie l'erreur attendue |
Vérifié : 2026-11-13 03:58:06 UTC
Détails
- Authentification
- Aucune. Endpoint public.
- Limite de requêtes
- 1200 requêtes par minute et par IP
- Cache serveur
- 2m
- Micro-cache en périphérie
- 10s
- Fréquence de mise à jour
- Un instantané est stocké toutes les 15 minutes par contrat ; chaque point utilise le premier instantané de sa tranche (une valeur ponctuelle, pas une moyenne).
- Fenêtre
- 24h / 7d / 30d.
- Sources de données
- Instantanés REST publics des carnets d'ordres de 24 plateformes (marchés perpétuels et spot), collectés et stockés par CoinBoss (sd_book_latest, sd_book_hist). La profondeur et le slippage sont calculés par CoinBoss à partir des niveaux de prix bruts.
- Couverture des plateformes
- 24 plateformes, 38 couples plateforme × marché. Lorsqu'un instantané public n'atteint pas ±0.5 / 1 / 2 % autour du prix médian (plafond de niveaux de la plateforme), cette bande est marquée `complete: false`, sa valeur est une borne inférieure et elle est écartée de l'agrégat ; `n_included` / `n_fresh` donnent le dénominateur et `excluded_incomplete` liste ce qui a été écarté.
- Pagination
- Pas de pagination ; `range` borne le nombre de points (48 / 84 / 120).
- Tri
- Temps croissant.
- Unités
- Depth in USD notional, bid and ask side reported separately and never added. Spread and slippage in basis points (1 bp = 0.01 %). USDT / USDC / USD quotes are counted 1:1 as USD.
- Horodatages
- Millisecondes depuis l'epoch Unix (UTC), sauf indication contraire dans la description du champ
- Format de réponse
- json
- Stabilité
- Stable
- Disponible depuis
- 2026-11-11
Statut en direct
La collecte a commencé le 2026-11-11 : les plages plus longues se remplissent donc progressivement. Les tranches manquantes sont absentes, non interpolées ; une variation de `n_included` entre deux points signifie que l'ensemble des contrats contributeurs a changé.
Disponibilité, 30 derniers jours
100 % des 408 contrôles réussis
Erreurs
Les appels en échec ont la même structure sur tous les endpoints. La liste complète figure sur la page des erreurs. Erreurs et limites de requêtes →
| Code | HTTP | Signification | Que faire |
|---|---|---|---|
| INVALID_PARAM | 400 | Un paramètre requis est manquant ou une valeur n'est pas acceptée. `param` indique le nom du paramètre lorsqu'il est connu. | Ne réessayez pas à l'identique ; corrigez la requête. |
| UNAUTHORIZED | 401 | L'en-tête `CB-API-KEY` a été envoyé, mais la clé est inconnue ou révoquée. Les données publiques ne nécessitent aucune clé — supprimez l'en-tête ou utilisez une clé valide. | Ne réessayez pas à l'identique. |
| FORBIDDEN | 403 | La route ne fait pas partie de l'API publique (interne ou réservée aux comptes). | Ne réessayez pas. |
| NOT_FOUND | 404 | Route inconnue, ou la crypto / la plateforme / le fonds demandé n'existe pas. | Ne réessayez pas ; vérifiez le chemin et les identifiants dans le catalogue. |
| RATE_LIMITED | 429 | Plus de requêtes que la limite par minute. `Retry-After` indique le nombre de secondes à attendre. | Attendez la durée indiquée par `Retry-After`, puis réessayez avec backoff. |
| INTERNAL | 500 | Erreur serveur inattendue. Le message est volontairement générique ; citez `request_id` lorsque vous la signalez. | Réessayez une fois après quelques secondes ; si l'erreur persiste, signalez-la avec l'ID de requête. |
| UPSTREAM_FAILED | 503 | La source de données derrière cet endpoint n'a pas répondu à temps. Aucun chiffre périmé ni de substitution n'est renvoyé à sa place. | Réessayez avec backoff ; consultez la page de statut. |
| UNAVAILABLE | 501 / 503 | Le jeu de données n'est temporairement pas prêt (préchauffage du cache) ou l'endpoint n'a pas encore de source publique licite. | Réessayez plus tard ; le catalogue signale les endpoints indisponibles par conception. |
| REQUEST_FAILED | 200 | Certains endpoints plus anciens répondent HTTP 200 avec `success: false`. Vérifiez toujours `success`, et pas seulement le statut HTTP. | Dépend du message ; à traiter comme une requête en échec. |
Essayer
/api/sd/liquidity/historyPartielstring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · défaut perp — Market type. Perpetual and spot books are never added together.
string · défaut 1 — Distance from mid price in percent.
string · défaut 24h — Look-back range: 24h (30-minute points), 7d (2-hour points) or 30d (6-hour points).
string — One exchange id covered for this market (for example `gate`). Default: all exchanges. An exchange that is not covered returns 400.
https://www.coinboss.com/api/sd/liquidity/history?coin=BTCAutres endpoints de cette catégorie
- Profondeur du carnet d'ordres et slippage /api/sd/liquidity
- Historique de la profondeur du carnet d'ordres /api/sd/liquidity/history
- Cryptos classées par profondeur du carnet d'ordres /api/sd/liquidity/rank
- Suivi des gros ordres en attente /api/indicators/large-orderbook