Historique du basis (horaire)
Série horaire du basis par plateforme et en agrégat multi-plateformes (médiane, moyenne, pondéré par l'OI) pour une crypto.
/api/sd/basis/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 |
| kind | string | Optionnel | perp | perp, spot_perp | `perp` : prix mark par rapport au prix d'indice de la même plateforme. `spot_perp` : prix du perpétuel par rapport au prix spot de la même plateforme. |
| range | string | Optionnel | 24h | 24h, 7d, 30d | Plage rétrospective, un point par heure. |
| exchange | string | Optionnel | — | — | Identifiant d'une plateforme. Par défaut : toutes les plateformes. Un identifiant inconnu renvoie 400. |
Exemple de requête
curl -s "https://www.coinboss.com/api/sd/basis/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). |
| kind | string | — | `perp` ou `spot_perp`. |
| range | string | — | Plage rétrospective appliquée. |
| interval | string | — | Espacement des points de la série. |
| exchange | string|null | — | Identifiant de la plateforme (en minuscules). |
| aggregate | array | — | Agrégat multi-plateformes de la section. |
| aggregate[] | object | — | Agrégat multi-plateformes de la section. |
| aggregate[].t | number | ms | Début de la tranche temporelle. |
| aggregate[].median_pct | number | % | Basis médian calculé sur un contrat principal par plateforme. |
| aggregate[].mean_pct | number | % | Moyenne simple sur le même ensemble que la médiane. |
| aggregate[].oi_weighted_pct | number | % | Basis pondéré par les positions ouvertes ; les lignes sans pondération OI sont écartées. |
| aggregate[].n_exchanges | number | — | Plateformes incluses dans l'agrégat. |
| series | array | — | Une série par plateforme. |
| series[] | object | — | Une série par plateforme. |
| series[].exchange | string | — | Identifiant de la plateforme (en minuscules). |
| series[].symbol | string | — | Symbole du contrat dans la forme de stockage de CoinBoss. |
| series[].primary | boolean | — | True pour le contrat qui représente sa plateforme dans la médiane et la moyenne. |
| series[].in_aggregate | boolean | — | True lorsque la ligne satisfait aux règles d'inclusion. |
| series[].points | array | — | Paires `[hour start in ms, basis in %]` (début de l'heure en ms, basis en %), de la plus ancienne à la plus récente. |
| series[].points[] | array | — | Paires `[hour start in ms, basis in %]` (début de l'heure en ms, basis en %), de la plus ancienne à la plus récente. |
| series[].points[][] | number | — | Paires `[hour start in ms, basis in %]` (début de l'heure en ms, basis en %), de la plus ancienne à la plus récente. |
| history | object | — | Part de la plage demandée qui est disponible. |
| history.requested_from | number | ms | Début de la plage demandée. |
| history.available_from | number | ms | Première heure stockée. |
| history.available_to | number | ms | Dernière heure stockée. |
| history.n_hours | number | — | Heures disponibles dans la plage. |
| history.expected_hours | number | — | Nombre d'heures que contient la plage lorsqu'elle est complète. |
| history.complete | boolean | — | True lorsque chaque heure de la plage demandée est stockée. |
| 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[].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.series.points | string | — | Note de formule pour `series.points`, en texte brut. |
| method.aggregate.median_pct | string | — | Note de formule pour `aggregate.median_pct`, en texte brut. |
| method.aggregate.oi_weighted_pct | string | — | Note de formule pour `aggregate.oi_weighted_pct`, en texte brut. |
| method.interval | string | — | Note de formule pour `interval`, 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 | 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. |
Généré à partir de 3 réponses réelles (2026-11-11 23:00 UTC).
Exemple de réponse
/api/sd/basis/history?coin=BTC · Réponse réelle (capture : 2026-11-13 04:02:46 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : series comptait 20 éléments; aggregate comptait 25 éléments; meta.source comptait 20 éléments; series[].points comptait 25 éléments; coverage.included_exchanges comptait 20 éléments.
- "success"true
- "schema""coinboss.sd.basis/1"
- "now"1794542288014
- "coin""BTC"
- "kind""perp"
- "range""24h"
- "interval""1h"
- "exchange"null
- "aggregate"
- "series"
- "history"
- "requested_from"1794452400000
- "available_from"1794452400000
- "available_to"1794538800000
- "n_hours"25
- "expected_hours"24
- "complete"true
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "series.points""[hour_ts, (mark_price - index_price) / index_price * 100] from the first collector round after each full hour; hours where the two timestamps were more than 60 …"
- "aggregate.median_pct""median over one primary contract per exchange in that hour; excluded: |value| > 10, contracts with no trade in 24 h, exchanges whose index is not a comparable i…"
- "aggregate.oi_weighted_pct""sum(value * oi_usd) / sum(oi_usd) over all included contracts that have an OI snapshot for the same hour (oi_history / sd_contract_hourly, single-sided); null w…"
- "interval""fixed 1 h buckets, no interpolation; missing hours are simply absent"
- "meta"
- "schema""coinboss.sd.basis/1"
- "source"
- "observed_at"null
- "received_at"1794538827406
- "fetched_at"1794542288014
- "window""24h"
- "quality""FRESH"
- "is_stale"false
- "cache_ttl_s"300
- "fallback""history is served as stored; hours without a snapshot are absent, never interpolated"
É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 |
|---|---|---|---|
| coin=ETH&kind=spot_perp | 200 | 41 ms | Réussi FRESH |
| coin=BTC&exchange=binance | 200 | 32 ms | Réussi FRESH |
| coin=BTC&range=1y | 400 | 1 ms | Réussi renvoie l'erreur attendue |
Vérifié : 2026-11-13 03:58:08 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
- Cycle de collecte toutes les 60 secondes ; une ligne reste à jour pendant 180 secondes. Des instantanés horaires alimentent l'historique.
- Fenêtre
- 24h / 7d / 30d, tranches horaires.
- Sources de données
- Prix mark, prix d'indice et dernier prix publiés par 21 plateformes de dérivés, ainsi que le prix spot de la même plateforme, collectés et stockés par CoinBoss (sd_px_latest, sd_px_hourly).
- Couverture des plateformes
- 21 plateformes. Les plateformes qui ne publient pas de prix d'indice ou de prix mark sont listées sous `coverage.unavailable` ; les lignes dont les deux jambes de prix sont espacées de plus de 60 secondes renvoient `null`. Les lignes écartées de l'agrégat sont listées sous `coverage.excluded_from_aggregate` avec la raison.
- Pagination
- Pas de pagination ; `range` borne le nombre de points.
- Tri
- Temps croissant.
- Unités
- All basis values in percent. Prices in the quote currency of the contract (USDT / USDC / USD). `oi_usd` single-sided.
- Méthode
- Each point is the snapshot taken in the first ten minutes of the hour. The OI weight of a historical hour is the open interest recorded in that hour; without it `oi_weighted_pct` is `null`.
- 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. La réponse indique `history.available_from`, `n_hours` par rapport à `expected_hours`, ainsi que `complete` ; les heures sans données sont absentes, non interpolées.
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/basis/historyPartielstring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · défaut perp — `perp`: mark price against the index price of the same exchange. `spot_perp`: perpetual price against the spot price of the same exchange.
string · défaut 24h — Look-back range, one point per hour.
string — One exchange id. Default: all exchanges. An unknown id returns 400.
https://www.coinboss.com/api/sd/basis/history?coin=BTCAutres endpoints de cette catégorie
- Basis des futures (toutes plateformes) /api/sd/basis
- Historique du basis (horaire) /api/sd/basis/history
- Cryptos classées par basis /api/sd/basis/rank
- Liste des basis futures-spot /api/derivatives/basis
- Écart quotidien du prix du BTC entre Coinbase et Kraken /api/p3/cb-kr-spread
- Indice de prime Bitcoin Coinbase /api/p3/coinbase-premium
- Liste des indices de prime des perpétuels /api/p3/premium-index
- Historique de l'indice de prime d'une crypto /api/p3/premium-index/history
- Bougies de l'indice de prime /api/p3/premium-index/klines
- Prime OTC de l'USDT par rapport aux taux de change fiat /api/usdt-premium
- Liste complète des basis futures-spot /api/basis/list