/api/sd/options/chain
GETDégradéSTALE

Chaîne d'options (une plateforme)

Call et put côte à côte pour chaque strike d'une échéance sur une plateforme : positions ouvertes, volume, prix mark, IV mark / bid / ask et grecques tels que publiés par la plateforme.

GET/api/sd/options/chain
Dégradé. L'endpoint signale une qualité de données STALE

Requête

Paramètres de requête

NomTypeRequisPar défautValeurs autoriséesDescription
coinstringRequis——Symbole de la crypto, insensible à la casse (par exemple `BTC`). Une valeur absente ou mal formée renvoie 400. Exemple: BTC
exchangestringRequis—deribit, binance, bybit, okx, gate, coincallIdentifiant de la plateforme. `all` n'est pas accepté ici : une chaîne appartient à une seule plateforme. Exemple: okx
expirystringOptionnel——Date d'échéance UTC au format `YYYY-MM-DD`. Par défaut : l'échéance la plus proche. `all` n'est pas accepté.
kindstringOptionnel—inverse, linearFamille de contrats lorsque la plateforme cote à la fois des options à règlement en crypto (`inverse`) et à règlement en stablecoin (`linear`). Par défaut : la famille dont les positions ouvertes sont les plus importantes pour cette échéance.
limitintegerOptionnel100≥ 1 · ≤ 500Strikes par page (une ligne = un strike avec son call et son put).
offsetintegerOptionnel0≥ 0 · ≤ 100000Nombre de strikes à ignorer.

Exemple de requête

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

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.
coinstring—Symbole de la crypto (en majuscules).
exchangestring—Identifiant de la plateforme (en minuscules).
expirystring—Date d'échéance (UTC), `YYYY-MM-DD`, ou `all`.
expiry_tsnumbermsHeure d'échéance.
days_leftnumberdaysJours restants avant l'échéance.
kindstring—Famille de contrats : `inverse` (à règlement en crypto) ou `linear` (à règlement en stablecoin).
kinds_availablearray—Familles de contrats que la plateforme cote pour cette échéance.
kinds_available[]string—Familles de contrats que la plateforme cote pour cette échéance.
expiries_availablearray—Dates d'échéance comportant actuellement des contrats.
expiries_available[]string—Dates d'échéance comportant actuellement des contrats.
underlyingstring—Sous-jacent de la famille de contrats.
settlestring—Devise de règlement de la famille de contrats.
contract_sizenumbercoinQuantité de la crypto sous-jacente par contrat.
underlying_pricenumberUSDPrix forward / du sous-jacent publié par la plateforme pour cette échéance.
index_pricenumberUSDPrix d'indice spot utilisé pour la conversion en USD (médiane des prix d'indice propres aux plateformes dans les agrégats).
total_strikesnumber—Strikes disponibles pour cette échéance avant pagination.
limitnumber—Limite de lignes appliquée.
offsetnumber—Lignes ignorées.
returnednumber—Strikes renvoyés dans cette page.
rowsarray—Une ligne par strike, avec son call et son put.
rows[]object—Une ligne par strike, avec son call et son put.
rows[].strikenumberUSDPrix d'exercice (strike).
rows[].callobject—Contrat call à ce strike ; `null` lorsque la plateforme n'en cote aucun.
rows[].call.instrumentstring—Nom du contrat tel que l'écrit la plateforme.
rows[].call.oi_contractsnumbercontractsPositions ouvertes en contrats, tels que la plateforme les compte.
rows[].call.oi_coinnumbercoinPositions ouvertes en unités de la crypto sous-jacente.
rows[].call.oi_usdnumberUSDPositions ouvertes en notionnel USD : quantité de cryptos × prix d'indice spot. Simple face.
rows[].call.vol_contracts_24hnumbercontractsVolume 24h en contrats, tels que la plateforme les compte.
rows[].call.vol_coin_24hnumbercoinQuantité échangée sur 24h en unités de la crypto sous-jacente.
rows[].call.vol_usd_24hnumberUSDVolume notionnel 24h : quantité de cryptos échangée × prix d'indice spot actuel. Ce n'est pas le volume en primes.
rows[].call.vol_premium_usd_24hnumber|nullUSDVolume en primes sur 24h (prix de l'option × quantité) lorsque la plateforme le publie ; `null` ailleurs. Jamais ajouté au volume notionnel.
rows[].call.mark_pricenumber|null—Prix mark de l'option dans son unité de cotation (en crypto pour les contrats à règlement en crypto).
rows[].call.mark_price_usdnumber|nullUSDPrix mark de l'option converti en USD.
rows[].call.mark_ivnumber%Volatilité implicite au prix mark.
rows[].call.bid_ivnumber|null%Volatilité implicite au meilleur bid ; `null` lorsque la plateforme ne la publie pas.
rows[].call.ask_ivnumber|null%Volatilité implicite au meilleur ask ; `null` lorsque la plateforme ne la publie pas.
rows[].call.deltanumber|null—Delta tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].call.gammanumber|null—Gamma tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].call.veganumber|null—Vega tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].call.thetanumber|null—Theta tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].call.observed_atnumbermsHorodatage attribué aux données par la source.
rows[].putobject—Contrat put à ce strike ; `null` lorsque la plateforme n'en cote aucun.
rows[].put.instrumentstring—Nom du contrat tel que l'écrit la plateforme.
rows[].put.oi_contractsnumbercontractsPositions ouvertes en contrats, tels que la plateforme les compte.
rows[].put.oi_coinnumbercoinPositions ouvertes en unités de la crypto sous-jacente.
rows[].put.oi_usdnumberUSDPositions ouvertes en notionnel USD : quantité de cryptos × prix d'indice spot. Simple face.
rows[].put.vol_contracts_24hnumbercontractsVolume 24h en contrats, tels que la plateforme les compte.
rows[].put.vol_coin_24hnumbercoinQuantité échangée sur 24h en unités de la crypto sous-jacente.
rows[].put.vol_usd_24hnumberUSDVolume notionnel 24h : quantité de cryptos échangée × prix d'indice spot actuel. Ce n'est pas le volume en primes.
rows[].put.vol_premium_usd_24hnumber|nullUSDVolume en primes sur 24h (prix de l'option × quantité) lorsque la plateforme le publie ; `null` ailleurs. Jamais ajouté au volume notionnel.
rows[].put.mark_pricenumber—Prix mark de l'option dans son unité de cotation (en crypto pour les contrats à règlement en crypto).
rows[].put.mark_price_usdnumberUSDPrix mark de l'option converti en USD.
rows[].put.mark_ivnumber%Volatilité implicite au prix mark.
rows[].put.bid_ivnumber|null%Volatilité implicite au meilleur bid ; `null` lorsque la plateforme ne la publie pas.
rows[].put.ask_ivnumber|null%Volatilité implicite au meilleur ask ; `null` lorsque la plateforme ne la publie pas.
rows[].put.deltanumber|null—Delta tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].put.gammanumber|null—Gamma tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].put.veganumber|null—Vega tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].put.thetanumber|null—Theta tel que publié par la plateforme ; `null` s'il n'est pas publié.
rows[].put.observed_atnumbermsHorodatage attribué aux données par la source.
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. vide dans les échantillons ayant servi à générer ce tableau
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
coverage.field_gapsarray—Colonnes qu'une plateforme ne publie pas ; elles valent `null` pour cette plateforme.
coverage.field_gaps[]object—Colonnes qu'une plateforme ne publie pas ; elles valent `null` pour cette plateforme.
coverage.field_gaps[].exchangestring—Identifiant de la plateforme (en minuscules).
coverage.field_gaps[].fieldsarray—Noms des colonnes manquantes.
coverage.field_gaps[].fields[]string—Noms des colonnes manquantes.
coverage.field_gaps[].kindstring—Famille de contrats : `inverse` (à règlement en crypto) ou `linear` (à règlement en stablecoin).
methodobject—Énoncé en texte brut des formules utilisées pour cette réponse, une entrée par champ.
method.chainstring—Note de formule pour `chain`, en texte brut.
method.kindstring—Note de formule pour `kind`, en texte brut.
method.oi_usdstring—Note de formule pour `oi_usd`, en texte brut.
method.mark_pricestring—Note de formule pour `mark_price`, en texte brut.
method.ivstring—Note de formule pour `iv`, en texte brut.
method.greeksstring—Note de formule pour `greeks`, en texte brut.
method.vol_usd_24hstring—Note de formule pour `vol_usd_24h`, en texte brut.
method.vol_premium_usd_24hstring—Note de formule pour `vol_premium_usd_24h`, 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/options/chain?coin=BTC&exchange=okx · Réponse réelle (capture : 2026-11-13 03:52:54 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : rows comptait 45 éléments; expiries_available comptait 12 éléments.

  • {
    • "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…"
      }
    }

É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
coin=ETH&exchange=deribit20059 msRéussi STALE
coin=BTC&limit=5&exchange=bybit2003 msRéussi STALE
coin=BTC4001 msRéussi renvoie l'erreur attendue

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

Détails

Authentification
Aucune. Endpoint public.
Limite de requêtes
1200 requêtes par minute et par IP
Cache serveur
60s
Micro-cache en périphérie
10s
Fréquence de mise à jour
Cycle de collecte toutes les 10 minutes ; une plateforme reste à jour pendant 25 minutes après son dernier cycle réussi.
Fenêtre
Dernier instantané d'une échéance.
Sources de données
Endpoints REST publics d'options de Deribit, Binance, Bybit, OKX, Gate et Coincall, collectés et stockés par CoinBoss (sd_opt_latest, sd_opt_summary_hourly). Aucun agrégateur tiers n'intervient.
Couverture des plateformes
Six plateformes d'options. Une crypto sans option cotée sur les plateformes sélectionnées renvoie HTTP 200 avec des champs null, `meta.quality = "UNAVAILABLE"` et la raison sous `coverage.unavailable`. Les plateformes dépourvues de flux public d'options y sont également listées.
Pagination
Pagination par offset : `limit` (max 500) et `offset` ; `total_strikes` et `returned` figurent dans la réponse.
Tri
Strike croissant.
Unités
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.
Méthode
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`.
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

DégradéVérifié : 2026-11-13 03:52:54 UTCHTTP 20057 msSchéma conformePoint de données le plus récent : il y a 5.4h

L'endpoint signale une qualité de données STALE

Disponibilité, 30 derniers jours

100 % des 406 contrôles réussis

Dérive de schéma détectée par la dernière sonde
  • Renvoyé mais non documenté: coverage.stale_included, coverage.stale_included[], coverage.stale_included[].exchange, coverage.stale_included[].age_s

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/options/chainDégradé
Paramètres

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 · défaut 100 · min 1 · max 500 — Strikes per page (one row = one strike with its call and put).

integer · défaut 0 · min 0 · max 100000 — Number of strikes to skip.

URL de la requêtehttps://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okx
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.