Fonds ETF spot
Une ligne par fonds enregistré pour un actif : émetteur, date d'arrêté, avoirs, actif net, parts, NAV, cours de marché, prime, frais et flux calculé par CoinBoss, ou la raison pour laquelle le fonds ne peut pas être collecté.
/api/sd/etf/fundsRequête
Paramètres de requête
| Nom | Type | Requis | Par défaut | Valeurs autorisées | Description |
|---|---|---|---|---|---|
| asset | string | Requis | — | BTC, ETH, SOL, HYPE | Actif sous-jacent, insensible à la casse. `coin` est accepté comme alias. Exemple: BTC |
Exemple de requête
curl -s "https://www.coinboss.com/api/sd/etf/funds?asset=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. |
| asset | string | — | Actif sous-jacent. |
| as_of | string | — | Date d'arrêté la plus récente de l'émetteur parmi les fonds couverts. |
| expected_as_of | string | — | Jour de bourse américain le plus récent dont l'échéance de publication est passée. |
| funds_total | number | — | Fonds enregistrés pour l'actif. |
| funds_covered | number | — | Fonds disposant de données d'émetteur à jour. |
| funds | array | — | Une ligne par fonds enregistré, y compris les fonds qui ne peuvent pas être collectés. |
| funds[] | object | — | Une ligne par fonds enregistré, y compris les fonds qui ne peuvent pas être collectés. |
| funds[].ticker | string | — | Ticker du fonds. |
| funds[].issuer | string | — | Identifiant de l'émetteur du fonds. |
| funds[].name | string | — | Nom du fonds. |
| funds[].status | string | — | OK, STALE, ERROR ou UNAVAILABLE. |
| funds[].as_of_date | string|null | — | Date d'arrêté de l'émetteur pour la ligne. |
| funds[].holdings_coin | number|null | coin | Cryptos détenues, telles que déclarées par l'émetteur. |
| funds[].holdings_usd | number|null | USD | Valeur de marché des avoirs, telle que déclarée par l'émetteur. |
| funds[].ref_price | number|null | USD | Prix de référence par crypto utilisé par l'émetteur. |
| funds[].aum_usd | number|null | USD | Actif net du fonds. |
| funds[].aum_src | string|null | — | Mode d'obtention de l'actif net : `reported`, `nav_x_shares` ou `holdings_mv_sum`. |
| funds[].shares_out | number|null | shares | Parts en circulation. |
| funds[].shares_src | string|null | — | Mode d'obtention des parts en circulation : `reported`, ou dérivées de l'actif net et de la NAV. |
| funds[].nav | number|null | USD | Valeur liquidative par part. |
| funds[].market_price | number|null | USD | Cours de marché de clôture par part. |
| funds[].premium_pct | number|null | % | Prime (+) ou décote (−) du cours de marché par rapport à la NAV, telle que publiée par l'émetteur. |
| funds[].fee_pct | number|null | % | Frais de sponsor annuels ; `null` lorsqu'ils ne sont pas publiés. |
| funds[].flow_usd | number|null | USD | Créations / rachats nets du fonds à sa date de flux. Méthode CoinBoss. |
| funds[].flow_shares | number|null | shares | Variation des parts en circulation. |
| funds[].flow_coin | null | coin | Variation des avoirs en crypto ; inclut les frais courus payés en crypto, à titre indicatif uniquement. |
| funds[].flow_method | string|null | — | Formule utilisée : `shares_x_nav` ou `aum_nav_ratio_t1`. |
| funds[].flow_as_of | string|null | — | Date à laquelle le flux est comptabilisé. |
| funds[].flow_obs_date | string|null | — | Date d'arrêté de la plus récente des deux lignes utilisées. |
| funds[].flow_prev_date | string|null | — | Date d'arrêté de la plus ancienne des deux lignes utilisées. |
| funds[].flow_note | string|null | — | Raison pour laquelle le flux est manquant ou particulier (par exemple `no_previous_row`, `multi_day_gap`). |
| funds[].is_stale | boolean|null | — | True lorsque les données sont plus anciennes que leur fenêtre de fraîcheur. |
| funds[].source_url | string|null | — | Endpoint de l'émetteur auprès duquel la ligne a été collectée (traçabilité uniquement). |
| funds[].observed_at | number|null | ms | Horodatage attribué aux données par la source. |
| funds[].received_at | number|null | ms | Moment où le collecteur CoinBoss a reçu les données. |
| funds[].unavailable_reason | string|null | — | Code de raison lorsque le fonds ne peut pas être collecté. |
| funds[].unavailable_detail | string|null | — | Explication lorsque le fonds ne peut pas être collecté. |
| 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. |
| 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[].exchange | string | — | Identifiant de la plateforme (en minuscules). |
| coverage.unavailable[].issuer | string | — | Identifiant de l'émetteur du fonds. |
| coverage.unavailable[].reason | string | — | Code de raison lisible par machine. |
| coverage.unavailable[].detail | string | — | Explication de la raison, lisible par un humain. |
| 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.holdings_coin_total | string | — | Note de formule pour `holdings_coin_total`, en texte brut. |
| method.aum_usd_total | string | — | Note de formule pour `aum_usd_total`, en texte brut. |
| method.net_flow_usd | string | — | Note de formule pour `net_flow_usd`, en texte brut. |
| method.net_flow_missing | string | — | Note de formule pour `net_flow_missing`, en texte brut. |
| method.flow_coin | string | — | Note de formule pour `flow_coin`, en texte brut. |
| method.premium_pct | string | — | Note de formule pour `premium_pct`, en texte brut. |
| method.is_stale | string | — | Note de formule pour `is_stale`, en texte brut. |
| method.units | string | — | Note de formule pour `units`, 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[].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 | number | ms | 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. |
Généré à partir de 3 réponses réelles (2026-11-11 23:00 UTC).
Exemple de réponse
/api/sd/etf/funds?asset=BTC · Réponse réelle (capture : 2026-11-13 04:02:51 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : funds comptait 12 éléments; meta.source comptait 5 éléments; coverage.unavailable comptait 7 éléments.
- "success"true
- "schema""coinboss.sd.etf/1"
- "now"1794542297570
- "asset""BTC"
- "as_of""2026-11-12"
- "expected_as_of""2026-11-11"
- "funds_total"12
- "funds_covered"5
- "funds"
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "holdings_coin_total""sum of issuer-reported coin holdings over covered (non-stale) funds only; NOT a whole-market total, see funds_covered/funds_total"
- "aum_usd_total""sum of fund net assets (USD) over covered funds; aum_src per fund: reported | nav_x_shares (NAV x shares outstanding) | holdings_mv_sum (sum of issuer holdings …"
- "net_flow_usd""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…"
- "net_flow_missing""covered funds not included in net_flow_usd and why: no_previous_row (needs two consecutive issuer rows), t1_booking_available_next_trading_day (Franklin: flow o…"
- "flow_coin""holdings_coin[t] - holdings_coin[t-1]; includes daily sponsor-fee accrual paid in coin, informational only"
- "premium_pct""issuer-reported premium/discount to NAV in percent; null when the issuer does not publish it"
- "is_stale""fund as_of_date older than the trading day before expected_as_of (expected_as_of = latest NYSE trading day whose T+1 16:00 UTC publication deadline has passed)"
- "units""holdings in coins; aum/flow in USD; nav/market_price in USD per share; fee_pct/premium_pct in percent"
- "meta"
- "schema""coinboss.sd.etf/1"
- "source"
- "observed_at"1794441600000
- "received_at"1794537318126
- "fetched_at"1794542297570
- "window""latest"
- "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ètres | HTTP | Latence | Résultat |
|---|---|---|---|
| asset=ETH | 200 | 3 ms | Réussi PARTIAL |
| asset=HYPE | 200 | 4 ms | Réussi PARTIAL |
| asset=DOGE | 400 | 2 ms | Ré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
- Date d'arrêté la plus récente de l'émetteur, par fonds.
- 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 ; tous les fonds enregistrés pour l'actif sont renvoyés.
- Tri
- Ticker croissant.
- 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
- `aum_src` tells how net assets were obtained: `reported`, `nav_x_shares` (NAV × shares outstanding) or `holdings_mv_sum` (sum of the issuer's holdings market values). `flow_method` tells which flow formula was used.
- 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
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 →
| 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/etf/fundsPartielstring — Underlying asset, case-insensitive. `coin` is accepted as an alias.
https://www.coinboss.com/api/sd/etf/funds?asset=BTCAutres endpoints de cette catégorie
- Fonds ETF spot /api/sd/etf/funds
- Historique des ETF spot /api/sd/etf/history
- Vue d'ensemble des ETF spot (publications des émetteurs) /api/sd/etf/overview
- Flux nets quotidiens des ETF spot par fonds /api/etf/detail
- Historique des flux nets quotidiens des ETF spot /api/etf/flows
- Détail d'un ETF /api/etf/fund/:ticker
- Liste des fonds ETF /api/etf/funds
- Avoirs en crypto des ETF par fonds /api/etf/holdings
- Produits ETF / trusts d'un émetteur /api/etf/issuer
- Vue d'ensemble des ETF /api/etf/overview
- Prime / décote des trusts Grayscale /api/grayscale/premium
- Volumes des ETF adossés à des futures /api/indicators/futures-etf-volumes