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.
/api/sd/options/chainRequê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 |
| exchange | string | Requis | — | deribit, binance, bybit, okx, gate, coincall | Identifiant de la plateforme. `all` n'est pas accepté ici : une chaîne appartient à une seule plateforme. Exemple: okx |
| expiry | string | Optionnel | — | — | Date d'échéance UTC au format `YYYY-MM-DD`. Par défaut : l'échéance la plus proche. `all` n'est pas accepté. |
| kind | string | Optionnel | — | inverse, linear | Famille 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. |
| limit | integer | Optionnel | 100 | ≥ 1 · ≤ 500 | Strikes par page (une ligne = un strike avec son call et son put). |
| offset | integer | Optionnel | 0 | ≥ 0 · ≤ 100000 | Nombre 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.
| 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). |
| exchange | string | — | Identifiant de la plateforme (en minuscules). |
| expiry | string | — | Date d'échéance (UTC), `YYYY-MM-DD`, ou `all`. |
| expiry_ts | number | ms | Heure d'échéance. |
| days_left | number | days | Jours restants avant l'échéance. |
| kind | string | — | Famille de contrats : `inverse` (à règlement en crypto) ou `linear` (à règlement en stablecoin). |
| kinds_available | array | — | 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_available | array | — | Dates d'échéance comportant actuellement des contrats. |
| expiries_available[] | string | — | Dates d'échéance comportant actuellement des contrats. |
| underlying | string | — | Sous-jacent de la famille de contrats. |
| settle | string | — | Devise de règlement de la famille de contrats. |
| contract_size | number | coin | Quantité de la crypto sous-jacente par contrat. |
| underlying_price | number | USD | Prix forward / du sous-jacent publié par la plateforme pour cette échéance. |
| index_price | number | USD | Prix d'indice spot utilisé pour la conversion en USD (médiane des prix d'indice propres aux plateformes dans les agrégats). |
| total_strikes | number | — | Strikes disponibles pour cette échéance avant pagination. |
| limit | number | — | Limite de lignes appliquée. |
| offset | number | — | Lignes ignorées. |
| returned | number | — | Strikes renvoyés dans cette page. |
| rows | array | — | Une ligne par strike, avec son call et son put. |
| rows[] | object | — | Une ligne par strike, avec son call et son put. |
| rows[].strike | number | USD | Prix d'exercice (strike). |
| rows[].call | object | — | Contrat call à ce strike ; `null` lorsque la plateforme n'en cote aucun. |
| rows[].call.instrument | string | — | Nom du contrat tel que l'écrit la plateforme. |
| rows[].call.oi_contracts | number | contracts | Positions ouvertes en contrats, tels que la plateforme les compte. |
| rows[].call.oi_coin | number | coin | Positions ouvertes en unités de la crypto sous-jacente. |
| rows[].call.oi_usd | number | USD | Positions ouvertes en notionnel USD : quantité de cryptos × prix d'indice spot. Simple face. |
| rows[].call.vol_contracts_24h | number | contracts | Volume 24h en contrats, tels que la plateforme les compte. |
| rows[].call.vol_coin_24h | number | coin | Quantité échangée sur 24h en unités de la crypto sous-jacente. |
| rows[].call.vol_usd_24h | number | USD | Volume 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_24h | number|null | USD | Volume en primes sur 24h (prix de l'option × quantité) lorsque la plateforme le publie ; `null` ailleurs. Jamais ajouté au volume notionnel. |
| rows[].call.mark_price | number|null | — | Prix mark de l'option dans son unité de cotation (en crypto pour les contrats à règlement en crypto). |
| rows[].call.mark_price_usd | number|null | USD | Prix mark de l'option converti en USD. |
| rows[].call.mark_iv | number | % | Volatilité implicite au prix mark. |
| rows[].call.bid_iv | number|null | % | Volatilité implicite au meilleur bid ; `null` lorsque la plateforme ne la publie pas. |
| rows[].call.ask_iv | number|null | % | Volatilité implicite au meilleur ask ; `null` lorsque la plateforme ne la publie pas. |
| rows[].call.delta | number|null | — | Delta tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].call.gamma | number|null | — | Gamma tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].call.vega | number|null | — | Vega tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].call.theta | number|null | — | Theta tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].call.observed_at | number | ms | Horodatage attribué aux données par la source. |
| rows[].put | object | — | Contrat put à ce strike ; `null` lorsque la plateforme n'en cote aucun. |
| rows[].put.instrument | string | — | Nom du contrat tel que l'écrit la plateforme. |
| rows[].put.oi_contracts | number | contracts | Positions ouvertes en contrats, tels que la plateforme les compte. |
| rows[].put.oi_coin | number | coin | Positions ouvertes en unités de la crypto sous-jacente. |
| rows[].put.oi_usd | number | USD | Positions ouvertes en notionnel USD : quantité de cryptos × prix d'indice spot. Simple face. |
| rows[].put.vol_contracts_24h | number | contracts | Volume 24h en contrats, tels que la plateforme les compte. |
| rows[].put.vol_coin_24h | number | coin | Quantité échangée sur 24h en unités de la crypto sous-jacente. |
| rows[].put.vol_usd_24h | number | USD | Volume 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_24h | number|null | USD | Volume en primes sur 24h (prix de l'option × quantité) lorsque la plateforme le publie ; `null` ailleurs. Jamais ajouté au volume notionnel. |
| rows[].put.mark_price | number | — | Prix mark de l'option dans son unité de cotation (en crypto pour les contrats à règlement en crypto). |
| rows[].put.mark_price_usd | number | USD | Prix mark de l'option converti en USD. |
| rows[].put.mark_iv | number | % | Volatilité implicite au prix mark. |
| rows[].put.bid_iv | number|null | % | Volatilité implicite au meilleur bid ; `null` lorsque la plateforme ne la publie pas. |
| rows[].put.ask_iv | number|null | % | Volatilité implicite au meilleur ask ; `null` lorsque la plateforme ne la publie pas. |
| rows[].put.delta | number|null | — | Delta tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].put.gamma | number|null | — | Gamma tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].put.vega | number|null | — | Vega tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].put.theta | number|null | — | Theta tel que publié par la plateforme ; `null` s'il n'est pas publié. |
| rows[].put.observed_at | number | ms | Horodatage attribué aux données par la source. |
| 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. vide dans les échantillons ayant servi à générer ce tableau |
| 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 |
| coverage.field_gaps | array | — | 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[].exchange | string | — | Identifiant de la plateforme (en minuscules). |
| coverage.field_gaps[].fields | array | — | Noms des colonnes manquantes. |
| coverage.field_gaps[].fields[] | string | — | Noms des colonnes manquantes. |
| coverage.field_gaps[].kind | string | — | Famille de contrats : `inverse` (à règlement en crypto) ou `linear` (à règlement en stablecoin). |
| method | object | — | Énoncé en texte brut des formules utilisées pour cette réponse, une entrée par champ. |
| method.chain | string | — | Note de formule pour `chain`, en texte brut. |
| method.kind | string | — | Note de formule pour `kind`, en texte brut. |
| method.oi_usd | string | — | Note de formule pour `oi_usd`, en texte brut. |
| method.mark_price | string | — | Note de formule pour `mark_price`, en texte brut. |
| method.iv | string | — | Note de formule pour `iv`, en texte brut. |
| method.greeks | string | — | Note de formule pour `greeks`, en texte brut. |
| method.vol_usd_24h | string | — | Note de formule pour `vol_usd_24h`, en texte brut. |
| method.vol_premium_usd_24h | string | — | Note de formule pour `vol_premium_usd_24h`, 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/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"
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "field_gaps"
- "stale_included"
- "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"
- "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ètres | HTTP | Latence | Résultat |
|---|---|---|---|
| coin=ETH&exchange=deribit | 200 | 59 ms | Réussi STALE |
| coin=BTC&limit=5&exchange=bybit | 200 | 3 ms | Réussi STALE |
| coin=BTC | 400 | 1 ms | Ré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
L'endpoint signale une qualité de données STALE
Disponibilité, 30 derniers jours
100 % des 406 contrôles réussis
- 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 →
| 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/options/chainDégradé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.
https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okxAutres endpoints de cette catégorie
- Chaîne d'options (une plateforme) /api/sd/options/chain
- Options par échéance /api/sd/options/expiries
- Historique des options (horaire) /api/sd/options/history
- Vue d'ensemble des options (toutes plateformes) /api/sd/options/overview
- Options par strike /api/sd/options/strikes
- Synthèse des options de la page crypto /api/currency/options-summary
- Smile / structure par terme de la volatilité implicite des options /api/options/iv
- Historique de la volatilité implicite des options /api/options/iv-history
- Max pain des options /api/options/max-pain
- OI des options par échéance /api/options/oi-by-expiry
- OI des options par strike /api/options/oi-by-strike
- Vue d'ensemble des options /api/options/overview
- Répartition du volume des options /api/options/volume-dist