/api/sd/etf/history
GETPartielPARTIAL

Historique des ETF spot

Série quotidienne des avoirs, de l'actif net ou du flux net pour un actif (somme des fonds couverts) ou pour un seul fonds. Chaque point précise le nombre de fonds qu'il contient.

GET/api/sd/etf/history
Couverture partielle. Couverture partielle : plusieurs grands émetteurs ne proposent pas de publication lisible par machine qui puisse être collectée depuis un serveur. Leurs fonds sont listés comme indisponibles et les totaux ne couvrent que les fonds restants. Comparez `funds_covered` / `funds_total` avant de comparer les totaux avec d'autres sources.

Requête

Paramètres de requête

NomTypeRequisPar défautValeurs autoriséesDescription
assetstringRequis—BTC, ETH, SOL, HYPEActif sous-jacent, insensible à la casse. `coin` est accepté comme alias. Exemple: BTC
metricstringRequis—holdings, aum, flowSérie à renvoyer : avoirs (crypto), actif net (USD) ou flux net (USD). Exemple: flow
rangestringOptionnel30d30d, 90d, allPlage rétrospective.
tickerstringOptionnel——Ticker d'un fonds enregistré pour l'actif (par exemple `ARKB`). Par défaut : somme de tous les fonds couverts. Un ticker non enregistré renvoie 404 ; un fonds enregistré qui ne peut pas être collecté renvoie 200 avec `series: null`.

Exemple de requête

curl -s "https://www.coinboss.com/api/sd/etf/history?asset=BTC&metric=flow"

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.

ChampTypeUnitéDescription
successboolean—true lorsque la requête a abouti. En cas d'échec, le corps est `{ success: false, code, error, request_id }`.
schemastring—Identifiant de schéma de cette réponse. Il ne change que lorsqu'un champ existant change de sens ou de type.
nownumbermsHeure du serveur au moment où la réponse a été construite.
assetstring—Actif sous-jacent.
metricstring—Série sélectionnée par le paramètre `metric`.
rangestring—Plage rétrospective appliquée.
tickerstring|null—Ticker du fonds.
unitstring—Unité des valeurs de la série : `coin` ou `USD`.
funds_totalnumber—Fonds enregistrés pour l'actif.
funds_in_seriesarray—Fonds qui contribuent à la série.
funds_in_series[]string—Fonds qui contribuent à la série.
first_date_by_fundobject—Première date disponible par fonds (la clé est le ticker). clés dynamiques: ARKB,EZBC
first_date_by_fund.{*}string—Première date disponible par fonds (la clé est le ticker).
pointsnumber—Points de la série, du plus ancien au plus récent.
seriesarray—Points quotidiens, du plus ancien au plus récent ; `null` lorsque le fonds ne peut pas être collecté.
series[]object—Points quotidiens, du plus ancien au plus récent ; `null` lorsque le fonds ne peut pas être collecté.
series[].datestring—Date d'arrêté de l'émetteur pour le point.
series[].valuenumber—Valeur de la métrique sélectionnée, additionnée sur les fonds présents à cette date.
series[].fundsnumber—Une ligne par fonds enregistré, y compris les fonds qui ne peuvent pas être collectés. peut être absent
coverageobject—Ce qui est inclus ou non dans les chiffres. Comparez ces éléments avant de comparer les totaux avec une autre source.
coverage.included_exchangesarray—Sources dont les données à jour sont incluses.
coverage.included_exchanges[]string—Sources dont les données à jour sont incluses.
coverage.unavailablearray—Sources qui n'ont pas pu être incluses, chacune avec sa raison. Elles ne sont jamais comptées comme 0.
coverage.unavailable[]object—Sources qui n'ont pas pu être incluses, chacune avec sa raison. Elles ne sont jamais comptées comme 0.
coverage.unavailable[].exchangestring—Identifiant de la plateforme (en minuscules).
coverage.unavailable[].issuerstring—Identifiant de l'émetteur du fonds.
coverage.unavailable[].reasonstring—Code de raison lisible par machine.
coverage.unavailable[].detailstring—Explication de la raison, lisible par un humain.
coverage.stale_excludedarray—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
methodobject—Énoncé en texte brut des formules utilisées pour cette réponse, une entrée par champ.
method.valuestring—Note de formule pour `value`, en texte brut.
method.fundsstring—Note de formule pour `funds`, en texte brut.
method.multi_daystring—Note de formule pour `multi_day`, en texte brut.
method.history_startstring—Note de formule pour `history_start`, en texte brut.
metaobject—Traçabilité et fraîcheur de cette réponse.
meta.schemastring—Identifiant de schéma de cette réponse. Il ne change que lorsqu'un champ existant change de sens ou de type.
meta.sourcearray—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[].exchangestring—Identifiant de la plateforme (en minuscules).
meta.source[].endpointstring—Endpoint public de la source que lit le collecteur (indiqué pour la traçabilité ; les clients ne l'appellent jamais).
meta.observed_atnumbermsHorodatage attribué aux données par la source.
meta.received_atnumbermsMoment où le collecteur CoinBoss a reçu les données.
meta.fetched_atnumbermsMoment où cette réponse a été assemblée.
meta.windowstring—Fenêtre temporelle couverte par les chiffres.
meta.qualitystring—FRESH, PARTIAL, STALE, BROKEN ou UNAVAILABLE, d'après les horodatages des données et la couverture.
meta.is_staleboolean—True lorsque les données sont plus anciennes que leur fenêtre de fraîcheur.
meta.cache_ttl_snumbersDurée de vie en cache de cette réponse.
meta.fallbackstring—Ce que renvoie l'endpoint lorsque le collecteur ou une source est en échec.

Généré à partir de 3 réponses réelles (2026-11-11 23:00 UTC).

Exemple de réponse

/api/sd/etf/history?asset=BTC&metric=flow · Réponse réelle (capture : 2026-11-13 04:02:51 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : series comptait 21 éléments; meta.source comptait 5 éléments; first_date_by_fund comptait 5 éléments; coverage.unavailable comptait 7 éléments.

  • {
    • "success": true,
    • "schema": "coinboss.sd.etf/1",
    • "now": 1794542297946,
    • "asset": "BTC",
    • "metric": "flow",
    • "range": "30d",
    • "ticker": null,
    • "unit": "USD",
    • "funds_total": 12,
    • "funds_in_series": [
      • "ARKB",
      • "BITB",
      • "BTCO",
      • "EZBC",
      • "HODL"
      ],
    • "first_date_by_fund": {
      • "ARKB": "2026-10-14",
      • "BITB": "2026-11-11"
      },
    • "points": 21,
    • "series": [
      • { … 3 },
      • { … 3 }
      ],
    • "coverage": {
      • "included_exchanges": [ … 5 ],
      • "unavailable": [ … 2 ],
      • "stale_excluded": []
      },
    • "method": {
      • "value": "own method, per fund between two consecutive issuer as-of rows: shares_x_nav = (shares_out[t] - shares_out[t-1]) x NAV[t], dated t; aum_nav_ratio_t1 (issuer pub…",
      • "funds": "number of funds contributing to that date; the aggregate is only comparable across dates with the same contributing funds (history starts on different dates per…",
      • "multi_day": "true when a contributing flow spans more than one trading day because the issuer history has no row for the day(s) in between",
      • "history_start": "issuer-provided official history is back-filled where it exists (21Shares valuation history, Franklin price history); other issuers start on the first collectio…"
      },
    • "meta": {
      • "schema": "coinboss.sd.etf/1",
      • "source": [ … 2 ],
      • "observed_at": 1794441600000,
      • "received_at": 1794537318126,
      • "fetched_at": 1794542297946,
      • "window": "30d",
      • "quality": "PARTIAL",
      • "is_stale": false,
      • "cache_ttl_s": 300,
      • "fallback": "collector failure keeps the last issuer row with its real as_of_date; a fund whose as_of_date is more than 1 trading day behind the expected as-of is flagged is…"
      }
    }

É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ètresHTTPLatenceRésultat
asset=ETH&range=90d&metric=aum2005 msRéussi PARTIAL
asset=BTC&metric=holdings&ticker=ARKB2004 msRéussi FRESH
asset=BTC4001 msRéussi renvoie l'erreur attendue

Vérifié : 2026-11-13 03:58:17 UTC

Détails

Authentification
Aucune. Endpoint public.
Limite de requêtes
1200 requêtes par minute et par IP
Cache serveur
5m
Micro-cache en périphérie
10s
Fréquence de mise à jour
Trois cycles de collecte par jour (02:35, 10:35, 16:35 UTC). Les émetteurs publient une fois par jour de bourse américain, généralement le soir de la date de transaction.
Fenêtre
30d / 90d / all, un point par date d'arrêté de l'émetteur.
Sources de données
Publications quotidiennes des émetteurs de fonds eux-mêmes (avoirs, actif net, parts en circulation, NAV), collectées et stockées par CoinBoss (sd_etf_fund_daily). Le flux net est calculé par CoinBoss à partir de ces publications.
Couverture des plateformes
Seuls les fonds dont l'émetteur publie des données quotidiennes lisibles par machine sont couverts. `funds_total` et `funds_covered` en indiquent le nombre ; chaque fonds non couvert est listé sous `coverage.unavailable` avec la raison. Les totaux sont des sommes sur les seuls fonds couverts (`totals_scope = "covered_funds_only"`), et non sur l'ensemble du marché.
Pagination
Pas de pagination ; `range` borne le nombre de points.
Tri
Date croissante.
Unités
Amounts in USD; holdings in units of the underlying coin; NAV and market price in USD per share; `premium_pct` and `fee_pct` in percent.
Méthode
A point sums the funds that have a row on that date; `funds` is that count. Points with different `funds` are not directly comparable. Flow is bucketed by its booking date.
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

PartielVérifié : 2026-11-13 04:02:51 UTCHTTP 2001 msSchéma conformePoint de données le plus récent : il y a 88m

L'endpoint signale une qualité de données PARTIAL — Couverture partielle : plusieurs grands émetteurs ne proposent pas de publication lisible par machine qui puisse être collectée depuis un serveur. Leurs fonds sont listés comme indisponibles et les totaux ne couvrent que les fonds restants. Comparez `funds_covered` / `funds_total` avant de comparer les totaux avec d'autres sources.

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 →

CodeHTTPSignificationQue faire
INVALID_PARAM400Un 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.
UNAUTHORIZED401L'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.
FORBIDDEN403La route ne fait pas partie de l'API publique (interne ou réservée aux comptes).Ne réessayez pas.
NOT_FOUND404Route 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_LIMITED429Plus 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.
INTERNAL500Erreur 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_FAILED503La 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.
UNAVAILABLE501 / 503Le 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_FAILED200Certains 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

GET/api/sd/etf/historyPartiel
Paramètres

string — Underlying asset, case-insensitive. `coin` is accepted as an alias.

string — Series to return: holdings (coin), net assets (USD) or net flow (USD).

string · défaut 30d — Look-back range.

string — Fund ticker registered for the asset (for example `ARKB`). Default: all covered funds summed. An unregistered ticker returns 404; a registered fund that cannot be collected returns 200 with `series: null`.

URL de la requêtehttps://www.coinboss.com/api/sd/etf/history?asset=BTC&metric=flow
Choisissez un endpoint et cliquez sur « Envoyer la requête ». La réponse, les en-têtes et le temps de réponse s'afficheront ici.