Storico della base (orario)
Serie oraria della base per exchange e come aggregato tra exchange (mediana, media, ponderata per OI) per una moneta.
/api/sd/basis/historyRichiesta
Parametri di query
| Nome | Tipo | Obbligatorio | Predefinito | Valori ammessi | Descrizione |
|---|---|---|---|---|---|
| coin | string | Obbligatorio | — | — | Simbolo della moneta, senza distinzione tra maiuscole e minuscole (per esempio `BTC`). I valori mancanti o malformati restituiscono 400. Esempio: BTC |
| kind | string | Facoltativo | perp | perp, spot_perp | `perp`: prezzo mark rispetto al prezzo dell'indice dello stesso exchange. `spot_perp`: prezzo del perpetuo rispetto al prezzo spot dello stesso exchange. |
| range | string | Facoltativo | 24h | 24h, 7d, 30d | Intervallo retrospettivo, un punto all'ora. |
| exchange | string | Facoltativo | — | — | Un ID di exchange. Predefinito: tutti gli exchange. Un ID sconosciuto restituisce 400. |
Richiesta di esempio
curl -s "https://www.coinboss.com/api/sd/basis/history?coin=BTC"Campi della risposta
La tabella dei campi è generata da risposte reali, quindi elenca esattamente ciò che l'endpoint restituisce. I percorsi usano a[] per gli elementi di un array e {*} per gli oggetti indicizzati da un nome dinamico, come una moneta o un exchange.
| Campo | Tipo | Unità | Descrizione |
|---|---|---|---|
| success | boolean | — | true quando la richiesta è riuscita. In caso di errore il corpo è `{ success: false, code, error, request_id }`. |
| schema | string | — | ID dello schema di questa risposta. Cambia solo quando un campo esistente cambia significato o tipo. |
| now | number | ms | Ora del server al momento della composizione della risposta. |
| coin | string | — | Simbolo della moneta (in maiuscolo). |
| kind | string | — | `perp` o `spot_perp`. |
| range | string | — | Intervallo retrospettivo applicato. |
| interval | string | — | Distanza tra i punti della serie. |
| exchange | string|null | — | ID dell'exchange (in minuscolo). |
| aggregate | array | — | Aggregato tra exchange della sezione. |
| aggregate[] | object | — | Aggregato tra exchange della sezione. |
| aggregate[].t | number | ms | Inizio del bucket temporale. |
| aggregate[].median_pct | number | % | Mediana della base su un contratto principale per exchange. |
| aggregate[].mean_pct | number | % | Media semplice sullo stesso insieme della mediana. |
| aggregate[].oi_weighted_pct | number | % | Base ponderata per open interest; le righe senza un peso OI sono escluse. |
| aggregate[].n_exchanges | number | — | Exchange inclusi nell'aggregato. |
| series | array | — | Una serie per exchange. |
| series[] | object | — | Una serie per exchange. |
| series[].exchange | string | — | ID dell'exchange (in minuscolo). |
| series[].symbol | string | — | Simbolo del contratto nella forma di archiviazione di CoinBoss. |
| series[].primary | boolean | — | True per il contratto che rappresenta il proprio exchange nella mediana e nella media. |
| series[].in_aggregate | boolean | — | True quando la riga ha superato le regole di inclusione. |
| series[].points | array | — | Coppie `[hour start in ms, basis in %]`, dalla più vecchia. |
| series[].points[] | array | — | Coppie `[hour start in ms, basis in %]`, dalla più vecchia. |
| series[].points[][] | number | — | Coppie `[hour start in ms, basis in %]`, dalla più vecchia. |
| history | object | — | Quanta parte dell'intervallo richiesto è disponibile. |
| history.requested_from | number | ms | Inizio dell'intervallo richiesto. |
| history.available_from | number | ms | Prima ora archiviata. |
| history.available_to | number | ms | Ultima ora archiviata. |
| history.n_hours | number | — | Ore disponibili nell'intervallo. |
| history.expected_hours | number | — | Ore che l'intervallo contiene quando è completo. |
| history.complete | boolean | — | True quando ogni ora dell'intervallo richiesto è archiviata. |
| coverage | object | — | Che cosa è incluso e che cosa non è incluso nei numeri. Confrontare questo dato prima di confrontare i totali con un'altra fonte. |
| coverage.included_exchanges | array | — | Fonti i cui dati aggiornati sono inclusi. |
| coverage.included_exchanges[] | string | — | Fonti i cui dati aggiornati sono inclusi. |
| coverage.unavailable | array | — | Fonti che non è stato possibile includere, ciascuna con il motivo. Non vengono mai conteggiate come 0. |
| coverage.unavailable[] | object | — | Fonti che non è stato possibile includere, ciascuna con il motivo. Non vengono mai conteggiate come 0. |
| coverage.unavailable[].exchange | string | — | ID dell'exchange (in minuscolo). |
| coverage.unavailable[].reason | string | — | Codice del motivo leggibile dalla macchina. |
| coverage.unavailable[].detail | string | — | Spiegazione del motivo in linguaggio naturale. |
| coverage.stale_excluded | array | — | Righe escluse perché il loro ultimo aggiornamento è fuori dalla finestra di freschezza. vuoto nei campioni usati per generare questa tabella |
| method | object | — | Enunciato in testo semplice delle formule usate per questa risposta, una voce per campo. |
| method.series.points | string | — | Nota sulla formula di `series.points`, in testo semplice. |
| method.aggregate.median_pct | string | — | Nota sulla formula di `aggregate.median_pct`, in testo semplice. |
| method.aggregate.oi_weighted_pct | string | — | Nota sulla formula di `aggregate.oi_weighted_pct`, in testo semplice. |
| method.interval | string | — | Nota sulla formula di `interval`, in testo semplice. |
| meta | object | — | Provenienza e freschezza di questa risposta. |
| meta.schema | string | — | ID dello schema di questa risposta. Cambia solo quando un campo esistente cambia significato o tipo. |
| meta.source | array | — | Endpoint pubblici a monte da cui sono stati raccolti i dati. |
| meta.source[] | object | — | Endpoint pubblici a monte da cui sono stati raccolti i dati. |
| meta.source[].exchange | string | — | ID dell'exchange (in minuscolo). |
| meta.source[].endpoint | string | — | Endpoint pubblico della fonte letto dal collector (mostrato a scopo di provenienza; i client non lo chiamano mai). |
| meta.observed_at | null | — | Timestamp indicato dalla fonte per i dati. |
| meta.received_at | number | ms | Ora in cui il collector di CoinBoss ha ricevuto i dati. |
| meta.fetched_at | number | ms | Ora in cui questa risposta è stata composta. |
| meta.window | string | — | Finestra temporale coperta dai numeri. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN o UNAVAILABLE, valutato dai timestamp dei dati e dalla copertura. |
| meta.is_stale | boolean | — | True quando i dati sono più vecchi della loro finestra di freschezza. |
| meta.cache_ttl_s | number | s | Durata in cache di questa risposta. |
| meta.fallback | string | — | Che cosa restituisce l'endpoint quando il collector o una fonte non funziona. |
Generata 2026-11-11 23:00 UTC da 3 risposte reali.
Risposta di esempio
/api/sd/basis/history?coin=BTC · Risposta reale acquisita 2026-11-13 03:58:08 UTC. Array e mappe lunghi sono abbreviati per la visualizzazione: series conteneva 20 elementi; aggregate conteneva 25 elementi; meta.source conteneva 20 elementi; series[].points conteneva 25 elementi; coverage.included_exchanges conteneva 20 elementi.
- "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"
Campioni verificati
Oltre all'esempio qui sopra, la sonda chiama questo endpoint con i parametri seguenti e ogni volta ne verifica lo schema.
| Parametri | HTTP | Latenza | Risultato |
|---|---|---|---|
| coin=ETH&kind=spot_perp | 200 | 41 ms | Superato FRESH |
| coin=BTC&exchange=binance | 200 | 32 ms | Superato FRESH |
| coin=BTC&range=1y | 400 | 1 ms | Superato restituisce l'errore previsto |
Verificato 2026-11-13 03:58:08 UTC
Dettagli
- Autenticazione
- Nessuna. Endpoint pubblico.
- Limite di richieste
- 1200 richieste al minuto per IP
- Cache del server
- 5m
- Micro-cache edge
- 10s
- Frequenza di aggiornamento
- Ciclo del collector ogni 60 secondi; una riga è aggiornata per 180 secondi. Le istantanee orarie alimentano lo storico.
- Finestra
- 24h / 7d / 30d, bucket orari.
- Fonti dei dati
- Prezzo mark, prezzo dell'indice e ultimo prezzo pubblicati da 21 exchange di derivati, più il prezzo spot dello stesso exchange, raccolti e archiviati da CoinBoss (sd_px_latest, sd_px_hourly).
- Copertura degli exchange
- 21 exchange. Gli exchange che non pubblicano un prezzo dell'indice o un prezzo mark sono elencati in `coverage.unavailable`; le righe le cui due gambe di prezzo distano più di 60 secondi restituiscono `null`. Le righe escluse dall'aggregato sono elencate in `coverage.excluded_from_aggregate` con il motivo.
- Paginazione
- Nessuna paginazione; `range` determina il numero di punti.
- Ordinamento
- Tempo crescente.
- Unità
- All basis values in percent. Prices in the quote currency of the contract (USDT / USDC / USD). `oi_usd` single-sided.
- Metodo
- 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`.
- Timestamp
- Millisecondi dall'epoca Unix (UTC), salvo diversa indicazione nella descrizione del campo
- Formato della risposta
- json
- Stabilità
- Stabile
- Disponibile dal
- 2026-11-11
Stato in tempo reale
La raccolta è iniziata il 2026-11-11. La risposta riporta `history.available_from`, `n_hours` rispetto a `expected_hours` e `complete`; le ore senza dati sono assenti, non interpolate.
Disponibilità, ultimi 30 giorni
100% di 407 verifiche superate
Errori
Le chiamate non riuscite hanno la stessa struttura su tutti gli endpoint. L'elenco completo è nella pagina degli errori. Errori e limiti di richieste →
| Codice | HTTP | Significato | Che cosa fare |
|---|---|---|---|
| INVALID_PARAM | 400 | Manca un parametro obbligatorio oppure un valore non è accettato. `param` indica il nome del parametro quando è noto. | Non riprovare senza modifiche; correggere la richiesta. |
| UNAUTHORIZED | 401 | L'header `CB-API-KEY` è stato inviato ma la chiave è sconosciuta o revocata. I dati pubblici non richiedono alcuna chiave: rimuovere l'header o usare una chiave valida. | Non riprovare senza modifiche. |
| FORBIDDEN | 403 | La route non fa parte dell'API pubblica (interna o riservata agli account). | Non riprovare. |
| NOT_FOUND | 404 | Route sconosciuta, oppure la moneta / l'exchange / il fondo richiesto non esiste. | Non riprovare; verificare il percorso e gli identificatori nel catalogo. |
| RATE_LIMITED | 429 | Più richieste del limite al minuto. `Retry-After` indica i secondi da attendere. | Attendere `Retry-After`, poi riprovare con backoff. |
| INTERNAL | 500 | Errore imprevisto del server. Il messaggio è volutamente generico; citare `request_id` quando lo si segnala. | Riprovare una volta dopo qualche secondo; se persiste, segnalarlo con l'ID della richiesta. |
| UPSTREAM_FAILED | 503 | La fonte di dati alla base di questo endpoint non ha risposto in tempo. Al suo posto non vengono restituiti numeri obsoleti o sostitutivi. | Riprovare con backoff; controllare la pagina di stato. |
| UNAVAILABLE | 501 / 503 | Il dataset è temporaneamente non pronto (riscaldamento della cache) oppure l'endpoint non ha ancora una fonte pubblica lecita. | Riprovare più tardi; il catalogo contrassegna gli endpoint non disponibili per scelta progettuale. |
| REQUEST_FAILED | 200 | Alcuni endpoint meno recenti rispondono HTTP 200 con `success: false`. Controllare sempre `success`, non solo lo stato HTTP. | Dipende dal messaggio; trattare come una richiesta non riuscita. |
Prova
/api/sd/basis/historyParzialestring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · predefinito 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 · predefinito 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=BTCAltro in questa categoria
- Base dei futures (tutti gli exchange) /api/sd/basis
- Storico della base (orario) /api/sd/basis/history
- Monete classificate per base /api/sd/basis/rank
- Elenco della base futures-spot /api/derivatives/basis
- Spread giornaliero del prezzo di BTC tra Coinbase e Kraken /api/p3/cb-kr-spread
- Indice di premio Bitcoin di Coinbase /api/p3/coinbase-premium
- Elenco dell'indice di premio dei perpetui /api/p3/premium-index
- Storico dell'indice di premio di una moneta /api/p3/premium-index/history
- Candele dell'indice di premio /api/p3/premium-index/klines
- Premio OTC di USDT rispetto ai tassi di cambio fiat /api/usdt-premium
- Elenco completo della base futures-spot /api/basis/list