/api/sd/options/chain
GETDegradatoSTALE

Catena di opzioni (singolo exchange)

Call e put affiancate per ogni prezzo di esercizio (strike) di una scadenza su un exchange: open interest, volume, prezzo mark, IV mark / bid / ask e greche così come pubblicate dall'exchange.

GET/api/sd/options/chain
Degradato. L'endpoint segnala una qualità dei dati STALE

Richiesta

Parametri di query

NomeTipoObbligatorioPredefinitoValori ammessiDescrizione
coinstringObbligatorio——Simbolo della moneta, senza distinzione tra maiuscole e minuscole (per esempio `BTC`). I valori mancanti o malformati restituiscono 400. Esempio: BTC
exchangestringObbligatorio—deribit, binance, bybit, okx, gate, coincallID dell'exchange. `all` qui non è accettato: una catena appartiene a un solo exchange. Esempio: okx
expirystringFacoltativo——Data di scadenza UTC nel formato `YYYY-MM-DD`. Predefinito: la scadenza più vicina. `all` non è accettato.
kindstringFacoltativo—inverse, linearFamiglia di contratti quando l'exchange quota sia opzioni regolate in coin (`inverse`) sia opzioni regolate in stablecoin (`linear`). Predefinito: la famiglia con l'open interest maggiore per quella scadenza.
limitintegerFacoltativo100≥ 1 · ≤ 500Prezzi di esercizio per pagina (una riga = un prezzo di esercizio con la sua call e la sua put).
offsetintegerFacoltativo0≥ 0 · ≤ 100000Numero di prezzi di esercizio da saltare.

Richiesta di esempio

curl -s "https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okx"

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.

CampoTipoUnitàDescrizione
successboolean—true quando la richiesta è riuscita. In caso di errore il corpo è `{ success: false, code, error, request_id }`.
schemastring—ID dello schema di questa risposta. Cambia solo quando un campo esistente cambia significato o tipo.
nownumbermsOra del server al momento della composizione della risposta.
coinstring—Simbolo della moneta (in maiuscolo).
exchangestring—ID dell'exchange (in minuscolo).
expirystring—Data di scadenza (UTC), `YYYY-MM-DD`, oppure `all`.
expiry_tsnumbermsOra di scadenza.
days_leftnumberdaysGiorni alla scadenza.
kindstring—Famiglia di contratti: `inverse` (regolati in coin) o `linear` (regolati in stablecoin).
kinds_availablearray—Famiglie di contratti che l'exchange quota per questa scadenza.
kinds_available[]string—Famiglie di contratti che l'exchange quota per questa scadenza.
expiries_availablearray—Date di scadenza che al momento hanno contratti.
expiries_available[]string—Date di scadenza che al momento hanno contratti.
underlyingstring—Sottostante della famiglia di contratti.
settlestring—Valuta di regolamento della famiglia di contratti.
contract_sizenumbercoinQuantità della moneta sottostante per contratto.
underlying_pricenumberUSDPrezzo forward / del sottostante pubblicato dall'exchange per questa scadenza.
index_pricenumberUSDPrezzo dell'indice spot usato per la conversione in USD (negli aggregati, mediana dei prezzi dell'indice dei singoli exchange).
total_strikesnumber—Prezzi di esercizio disponibili per questa scadenza prima della paginazione.
limitnumber—Limite di righe applicato.
offsetnumber—Righe saltate.
returnednumber—Prezzi di esercizio restituiti in questa pagina.
rowsarray—Una riga per prezzo di esercizio con la sua call e la sua put.
rows[]object—Una riga per prezzo di esercizio con la sua call e la sua put.
rows[].strikenumberUSDPrezzo di esercizio (strike).
rows[].callobject—Contratto call a questo prezzo di esercizio; `null` quando l'exchange non ne quota alcuno.
rows[].call.instrumentstring—Nome del contratto così come lo scrive l'exchange.
rows[].call.oi_contractsnumbercontractsOpen interest in contratti, così come li conta l'exchange.
rows[].call.oi_coinnumbercoinOpen interest in unità della moneta sottostante.
rows[].call.oi_usdnumberUSDOpen interest come nozionale USD: quantità di monete × prezzo dell'indice spot. Unilaterale.
rows[].call.vol_contracts_24hnumbercontractsVolume a 24h in contratti, così come li conta l'exchange.
rows[].call.vol_coin_24hnumbercoinQuantità scambiata nelle 24h in unità della moneta sottostante.
rows[].call.vol_usd_24hnumberUSDVolume nozionale a 24h: quantità di monete scambiata × prezzo dell'indice spot attuale. Non è il controvalore dei premi.
rows[].call.vol_premium_usd_24hnumber|nullUSDControvalore dei premi a 24h (prezzo dell'opzione × quantità) dove l'exchange lo pubblica; `null` altrove. Non viene mai sommato al volume nozionale.
rows[].call.mark_pricenumber|null—Prezzo mark dell'opzione nella sua unità di quotazione (coin per i contratti regolati in coin).
rows[].call.mark_price_usdnumber|nullUSDPrezzo mark dell'opzione convertito in USD.
rows[].call.mark_ivnumber%Volatilità implicita al prezzo mark.
rows[].call.bid_ivnumber|null%Volatilità implicita al miglior bid; `null` quando l'exchange non la pubblica.
rows[].call.ask_ivnumber|null%Volatilità implicita al miglior ask; `null` quando l'exchange non la pubblica.
rows[].call.deltanumber|null—Delta così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].call.gammanumber|null—Gamma così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].call.veganumber|null—Vega così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].call.thetanumber|null—Theta così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].call.observed_atnumbermsTimestamp indicato dalla fonte per i dati.
rows[].putobject—Contratto put a questo prezzo di esercizio; `null` quando l'exchange non ne quota alcuno.
rows[].put.instrumentstring—Nome del contratto così come lo scrive l'exchange.
rows[].put.oi_contractsnumbercontractsOpen interest in contratti, così come li conta l'exchange.
rows[].put.oi_coinnumbercoinOpen interest in unità della moneta sottostante.
rows[].put.oi_usdnumberUSDOpen interest come nozionale USD: quantità di monete × prezzo dell'indice spot. Unilaterale.
rows[].put.vol_contracts_24hnumbercontractsVolume a 24h in contratti, così come li conta l'exchange.
rows[].put.vol_coin_24hnumbercoinQuantità scambiata nelle 24h in unità della moneta sottostante.
rows[].put.vol_usd_24hnumberUSDVolume nozionale a 24h: quantità di monete scambiata × prezzo dell'indice spot attuale. Non è il controvalore dei premi.
rows[].put.vol_premium_usd_24hnumber|nullUSDControvalore dei premi a 24h (prezzo dell'opzione × quantità) dove l'exchange lo pubblica; `null` altrove. Non viene mai sommato al volume nozionale.
rows[].put.mark_pricenumber—Prezzo mark dell'opzione nella sua unità di quotazione (coin per i contratti regolati in coin).
rows[].put.mark_price_usdnumberUSDPrezzo mark dell'opzione convertito in USD.
rows[].put.mark_ivnumber%Volatilità implicita al prezzo mark.
rows[].put.bid_ivnumber|null%Volatilità implicita al miglior bid; `null` quando l'exchange non la pubblica.
rows[].put.ask_ivnumber|null%Volatilità implicita al miglior ask; `null` quando l'exchange non la pubblica.
rows[].put.deltanumber|null—Delta così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].put.gammanumber|null—Gamma così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].put.veganumber|null—Vega così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].put.thetanumber|null—Theta così come pubblicato dall'exchange; `null` quando non è pubblicato.
rows[].put.observed_atnumbermsTimestamp indicato dalla fonte per i dati.
coverageobject—Che cosa è incluso e che cosa non è incluso nei numeri. Confrontare questo dato prima di confrontare i totali con un'altra fonte.
coverage.included_exchangesarray—Fonti i cui dati aggiornati sono inclusi.
coverage.included_exchanges[]string—Fonti i cui dati aggiornati sono inclusi.
coverage.unavailablearray—Fonti che non è stato possibile includere, ciascuna con il motivo. Non vengono mai conteggiate come 0. vuoto nei campioni usati per generare questa tabella
coverage.stale_excludedarray—Righe escluse perché il loro ultimo aggiornamento è fuori dalla finestra di freschezza. vuoto nei campioni usati per generare questa tabella
coverage.field_gapsarray—Colonne che un exchange non pubblica; sono `null` per quell'exchange.
coverage.field_gaps[]object—Colonne che un exchange non pubblica; sono `null` per quell'exchange.
coverage.field_gaps[].exchangestring—ID dell'exchange (in minuscolo).
coverage.field_gaps[].fieldsarray—Nomi delle colonne mancanti.
coverage.field_gaps[].fields[]string—Nomi delle colonne mancanti.
coverage.field_gaps[].kindstring—Famiglia di contratti: `inverse` (regolati in coin) o `linear` (regolati in stablecoin).
methodobject—Enunciato in testo semplice delle formule usate per questa risposta, una voce per campo.
method.chainstring—Nota sulla formula di `chain`, in testo semplice.
method.kindstring—Nota sulla formula di `kind`, in testo semplice.
method.oi_usdstring—Nota sulla formula di `oi_usd`, in testo semplice.
method.mark_pricestring—Nota sulla formula di `mark_price`, in testo semplice.
method.ivstring—Nota sulla formula di `iv`, in testo semplice.
method.greeksstring—Nota sulla formula di `greeks`, in testo semplice.
method.vol_usd_24hstring—Nota sulla formula di `vol_usd_24h`, in testo semplice.
method.vol_premium_usd_24hstring—Nota sulla formula di `vol_premium_usd_24h`, in testo semplice.
metaobject—Provenienza e freschezza di questa risposta.
meta.schemastring—ID dello schema di questa risposta. Cambia solo quando un campo esistente cambia significato o tipo.
meta.sourcearray—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[].exchangestring—ID dell'exchange (in minuscolo).
meta.source[].endpointstring—Endpoint pubblico della fonte letto dal collector (mostrato a scopo di provenienza; i client non lo chiamano mai).
meta.observed_atnumbermsTimestamp indicato dalla fonte per i dati.
meta.received_atnumbermsOra in cui il collector di CoinBoss ha ricevuto i dati.
meta.fetched_atnumbermsOra in cui questa risposta è stata composta.
meta.windowstring—Finestra temporale coperta dai numeri.
meta.qualitystring—FRESH, PARTIAL, STALE, BROKEN o UNAVAILABLE, valutato dai timestamp dei dati e dalla copertura.
meta.is_staleboolean—True quando i dati sono più vecchi della loro finestra di freschezza.
meta.cache_ttl_snumbersDurata in cache di questa risposta.
meta.fallbackstring—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/options/chain?coin=BTC&exchange=okx · Risposta reale acquisita 2026-11-13 03:52:54 UTC. Array e mappe lunghi sono abbreviati per la visualizzazione: rows conteneva 45 elementi; expiries_available conteneva 12 elementi.

  • {
    • "success": true,
    • "schema": "coinboss.sd.options/1",
    • "now": 1794541974766,
    • "coin": "BTC",
    • "exchange": "okx",
    • "expiry": "2026-11-13",
    • "expiry_ts": 1794556800000,
    • "days_left": 0.1716,
    • "kind": "inverse",
    • "kinds_available": [
      • "inverse",
      • "linear"
      ],
    • "expiries_available": [
      • "2026-11-13",
      • "2026-11-14",
      • "2026-11-15",
      • "2026-11-16",
      • "2026-11-20",
      • "2026-11-27",
      • "2026-12-04",
      • "2026-12-25"
      ],
    • "underlying": "BTC-USD",
    • "settle": "BTC",
    • "contract_size": 0.01,
    • "underlying_price": 71428.8359576,
    • "index_price": 71417.4,
    • "total_strikes": 45,
    • "limit": 100,
    • "offset": 0,
    • "returned": 45,
    • "rows": [
      • { … 3 },
      • { … 3 }
      ],
    • "coverage": {
      • "included_exchanges": [ … 1 ],
      • "unavailable": [],
      • "stale_excluded": [],
      • "field_gaps": [ … 1 ],
      • "stale_included": [ … 1 ]
      },
    • "method": {
      • "chain": "T-quote for one exchange, one expiry and one contract family: one row per strike (ascending) with the call and put legs; paginated by strike with limit (default…",
      • "kind": "inverse = coin-settled (Deribit BTC/ETH, OKX *-USD); linear = USD/USDT/USDC-settled. When an exchange lists both families for the expiry and kind is omitted, th…",
      • "oi_usd": "sum over contracts of oi_coin x that exchange's spot index price (USDT/USDC treated 1:1 as USD); oi_coin is open interest in units of the underlying coin after …",
      • "mark_price": "exchange-native quote: Deribit/OKX inverse in underlying coin per 1 coin; Binance in USDT per contract (contract_size coins); others in USD per 1 coin. mark_pri…",
      • "iv": "mark_iv / bid_iv / ask_iv in percent as published by the exchange (no-quote sentinels such as 0 or -1 are null)",
      • "greeks": "delta/gamma/vega/theta exactly as published by the exchange (OKX: Black-Scholes greeks in USD terms); never computed by CoinBoss; null where the exchange does n…",
      • "vol_usd_24h": "NOTIONAL 24h volume = sum of vol_coin (24h traded quantity in underlying coin) x the exchange's CURRENT spot index price; not premium turnover. Binance statisti…",
      • "vol_premium_usd_24h": "PREMIUM turnover (option price x quantity) as reported by the exchange: Deribit volume_usd, Binance amount, Gate sum(|size| x multiplier x price) from the 24h t…"
      },
    • "meta": {
      • "schema": "coinboss.sd.options/1",
      • "source": [ … 1 ],
      • "observed_at": 1794522472654,
      • "received_at": 1794522473638,
      • "fetched_at": 1794541974766,
      • "window": "latest",
      • "quality": "STALE",
      • "is_stale": true,
      • "cache_ttl_s": 60,
      • "fallback": "on collector failure the last stored rows are served: an exchange whose newest batch is older than 25 min (collector cycle is 10 min) is excluded from totals (l…"
      }
    }

Campioni verificati

Oltre all'esempio qui sopra, la sonda chiama questo endpoint con i parametri seguenti e ogni volta ne verifica lo schema.

ParametriHTTPLatenzaRisultato
coin=ETH&exchange=deribit20059 msSuperato STALE
coin=BTC&limit=5&exchange=bybit2003 msSuperato STALE
coin=BTC4001 msSuperato restituisce l'errore previsto

Verificato 2026-11-13 03:28:17 UTC

Dettagli

Autenticazione
Nessuna. Endpoint pubblico.
Limite di richieste
1200 richieste al minuto per IP
Cache del server
60s
Micro-cache edge
10s
Frequenza di aggiornamento
Ciclo del collector ogni 10 minuti; un exchange è aggiornato per 25 minuti dopo il suo ultimo ciclo riuscito.
Finestra
Ultima istantanea di una scadenza.
Fonti dei dati
Endpoint REST pubblici delle opzioni di Deribit, Binance, Bybit, OKX, Gate e Coincall, raccolti e archiviati da CoinBoss (sd_opt_latest, sd_opt_summary_hourly). Non è coinvolto alcun aggregatore di terze parti.
Copertura degli exchange
Sei exchange di opzioni. Una moneta priva di opzioni quotate sugli exchange selezionati restituisce HTTP 200 con campi null, `meta.quality = "UNAVAILABLE"` e il motivo in `coverage.unavailable`. Vi sono elencati anche gli exchange privi di un feed pubblico di opzioni.
Paginazione
Basata su offset: `limit` (max 500) e `offset`; `total_strikes` e `returned` sono nella risposta.
Ordinamento
Prezzo di esercizio crescente.
Unità
USD notional = contracts × contract size × spot index price of the venue. `*_coin` fields are in units of the underlying coin. Implied volatility is in percent (55 = 55 %). `vol_premium_usd_24h` is premium turnover, reported separately and never added to notional volume.
Metodo
Greeks and IV are passed through from the venue, not recomputed. A venue that does not publish a column returns `null` for it and the column is listed under `coverage.field_gaps`.
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

DegradatoVerificato 2026-11-13 03:52:54 UTCHTTP 20057 msSchema conformeDato più recente risalente a 5.4h fa

L'endpoint segnala una qualità dei dati STALE

Disponibilità, ultimi 30 giorni

100% di 406 verifiche superate

Deriva dello schema rilevata dall'ultima verifica della sonda
  • Restituito ma non documentato: coverage.stale_included, coverage.stale_included[], coverage.stale_included[].exchange, coverage.stale_included[].age_s

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 →

CodiceHTTPSignificatoChe cosa fare
INVALID_PARAM400Manca un parametro obbligatorio oppure un valore non è accettato. `param` indica il nome del parametro quando è noto.Non riprovare senza modifiche; correggere la richiesta.
UNAUTHORIZED401L'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.
FORBIDDEN403La route non fa parte dell'API pubblica (interna o riservata agli account).Non riprovare.
NOT_FOUND404Route sconosciuta, oppure la moneta / l'exchange / il fondo richiesto non esiste.Non riprovare; verificare il percorso e gli identificatori nel catalogo.
RATE_LIMITED429Più richieste del limite al minuto. `Retry-After` indica i secondi da attendere.Attendere `Retry-After`, poi riprovare con backoff.
INTERNAL500Errore 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_FAILED503La 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.
UNAVAILABLE501 / 503Il 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_FAILED200Alcuni 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

GET/api/sd/options/chainDegradato
Parametri

string — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.

string — Venue id. `all` is not accepted here: a chain belongs to one venue.

string — UTC expiry date as `YYYY-MM-DD`. Default: the nearest expiry. `all` is not accepted.

string — Contract family when the venue lists both coin-settled (`inverse`) and stablecoin-settled (`linear`) options. Default: the family with the larger open interest for that expiry.

integer · predefinito 100 · min 1 · max 500 — Strikes per page (one row = one strike with its call and put).

integer · predefinito 0 · min 0 · max 100000 — Number of strikes to skip.

URL della richiestahttps://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okx
Scegliere un endpoint e premere «Invia richiesta». La risposta, gli header e i tempi compariranno qui.