Cadena de opciones (una plataforma)
Call y put lado a lado para cada precio de ejercicio de un vencimiento en una plataforma: interés abierto, volumen, precio de marca, IV de marca / compra / venta y griegas tal como las publica la plataforma.
/api/sd/options/chainSolicitud
Parámetros de consulta
| Nombre | Tipo | Obligatorio | Valor por defecto | Valores admitidos | Descripción |
|---|---|---|---|---|---|
| coin | string | Obligatorio | — | — | Símbolo de la moneda, sin distinción entre mayúsculas y minúsculas (por ejemplo `BTC`). Los valores ausentes o mal formados devuelven 400. Ejemplo: BTC |
| exchange | string | Obligatorio | — | deribit, binance, bybit, okx, gate, coincall | Id de la plataforma. Aquí no se acepta `all`: una cadena pertenece a una sola plataforma. Ejemplo: okx |
| expiry | string | Opcional | — | — | Fecha de vencimiento UTC en formato `YYYY-MM-DD`. Por defecto: el vencimiento más cercano. No se acepta `all`. |
| kind | string | Opcional | — | inverse, linear | Familia de contratos cuando la plataforma lista tanto opciones liquidadas en moneda (`inverse`) como liquidadas en stablecoin (`linear`). Por defecto: la familia con mayor interés abierto para ese vencimiento. |
| limit | integer | Opcional | 100 | ≥ 1 · ≤ 500 | Precios de ejercicio por página (una fila = un precio de ejercicio con su call y su put). |
| offset | integer | Opcional | 0 | ≥ 0 · ≤ 100000 | Número de precios de ejercicio que se omiten. |
Solicitud de ejemplo
curl -s "https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okx"Campos de la respuesta
La tabla de campos se genera a partir de respuestas reales, por lo que recoge exactamente lo que devuelve el endpoint. Las rutas usan a[] para los elementos de un array y {*} para los objetos cuya clave es un nombre dinámico, como una moneda o un exchange.
| Campo | Tipo | Unidad | Descripción |
|---|---|---|---|
| success | boolean | — | true cuando la solicitud se completó correctamente. En caso de fallo, el cuerpo es `{ success: false, code, error, request_id }`. |
| schema | string | — | Id de esquema de esta respuesta. Solo cambia cuando un campo existente cambia de significado o de tipo. |
| now | number | ms | Hora del servidor en el momento de generar la respuesta. |
| coin | string | — | Símbolo de la moneda (en mayúsculas). |
| exchange | string | — | Id del exchange (en minúsculas). |
| expiry | string | — | Fecha de vencimiento (UTC), `YYYY-MM-DD`, o `all`. |
| expiry_ts | number | ms | Hora de vencimiento. |
| days_left | number | days | Días hasta el vencimiento. |
| kind | string | — | Familia de contratos: `inverse` (liquidados en moneda) o `linear` (liquidados en stablecoin). |
| kinds_available | array | — | Familias de contratos que la plataforma lista para este vencimiento. |
| kinds_available[] | string | — | Familias de contratos que la plataforma lista para este vencimiento. |
| expiries_available | array | — | Fechas de vencimiento que actualmente tienen contratos. |
| expiries_available[] | string | — | Fechas de vencimiento que actualmente tienen contratos. |
| underlying | string | — | Subyacente de la familia de contratos. |
| settle | string | — | Moneda de liquidación de la familia de contratos. |
| contract_size | number | coin | Cantidad de la moneda subyacente por contrato. |
| underlying_price | number | USD | Precio forward / del subyacente publicado por la plataforma para este vencimiento. |
| index_price | number | USD | Precio del índice spot usado para la conversión a USD (en los agregados, la mediana de los precios del índice propios de las plataformas). |
| total_strikes | number | — | Precios de ejercicio disponibles para este vencimiento antes de paginar. |
| limit | number | — | Límite de filas aplicado. |
| offset | number | — | Filas omitidas. |
| returned | number | — | Precios de ejercicio devueltos en esta página. |
| rows | array | — | Una fila por precio de ejercicio con su call y su put. |
| rows[] | object | — | Una fila por precio de ejercicio con su call y su put. |
| rows[].strike | number | USD | Precio de ejercicio. |
| rows[].call | object | — | Contrato call a este precio de ejercicio; `null` cuando la plataforma no lista ninguno. |
| rows[].call.instrument | string | — | Nombre del contrato tal como lo escribe la plataforma. |
| rows[].call.oi_contracts | number | contracts | Interés abierto en contratos, tal como los cuenta la plataforma. |
| rows[].call.oi_coin | number | coin | Interés abierto en unidades de la moneda subyacente. |
| rows[].call.oi_usd | number | USD | Interés abierto como nocional USD: cantidad de monedas × precio del índice spot. Por un solo lado. |
| rows[].call.vol_contracts_24h | number | contracts | Volumen de 24h en contratos, tal como los cuenta la plataforma. |
| rows[].call.vol_coin_24h | number | coin | Cantidad negociada en 24h en unidades de la moneda subyacente. |
| rows[].call.vol_usd_24h | number | USD | Volumen nocional de 24h: cantidad de monedas negociada × precio actual del índice spot. No es el volumen de primas. |
| rows[].call.vol_premium_usd_24h | number|null | USD | Volumen de primas de 24h (precio de la opción × cantidad) donde la plataforma lo publica; `null` en el resto. Nunca se suma al volumen nocional. |
| rows[].call.mark_price | number|null | — | Precio de marca de la opción en su unidad de cotización (moneda en los contratos liquidados en moneda). |
| rows[].call.mark_price_usd | number|null | USD | Precio de marca de la opción convertido a USD. |
| rows[].call.mark_iv | number | % | Volatilidad implícita al precio de marca. |
| rows[].call.bid_iv | number|null | % | Volatilidad implícita a la mejor compra; `null` cuando la plataforma no la publica. |
| rows[].call.ask_iv | number|null | % | Volatilidad implícita a la mejor venta; `null` cuando la plataforma no la publica. |
| rows[].call.delta | number|null | — | Delta tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].call.gamma | number|null | — | Gamma tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].call.vega | number|null | — | Vega tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].call.theta | number|null | — | Theta tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].call.observed_at | number | ms | Marca de tiempo que la fuente asigna a los datos. |
| rows[].put | object | — | Contrato put a este precio de ejercicio; `null` cuando la plataforma no lista ninguno. |
| rows[].put.instrument | string | — | Nombre del contrato tal como lo escribe la plataforma. |
| rows[].put.oi_contracts | number | contracts | Interés abierto en contratos, tal como los cuenta la plataforma. |
| rows[].put.oi_coin | number | coin | Interés abierto en unidades de la moneda subyacente. |
| rows[].put.oi_usd | number | USD | Interés abierto como nocional USD: cantidad de monedas × precio del índice spot. Por un solo lado. |
| rows[].put.vol_contracts_24h | number | contracts | Volumen de 24h en contratos, tal como los cuenta la plataforma. |
| rows[].put.vol_coin_24h | number | coin | Cantidad negociada en 24h en unidades de la moneda subyacente. |
| rows[].put.vol_usd_24h | number | USD | Volumen nocional de 24h: cantidad de monedas negociada × precio actual del índice spot. No es el volumen de primas. |
| rows[].put.vol_premium_usd_24h | number|null | USD | Volumen de primas de 24h (precio de la opción × cantidad) donde la plataforma lo publica; `null` en el resto. Nunca se suma al volumen nocional. |
| rows[].put.mark_price | number | — | Precio de marca de la opción en su unidad de cotización (moneda en los contratos liquidados en moneda). |
| rows[].put.mark_price_usd | number | USD | Precio de marca de la opción convertido a USD. |
| rows[].put.mark_iv | number | % | Volatilidad implícita al precio de marca. |
| rows[].put.bid_iv | number|null | % | Volatilidad implícita a la mejor compra; `null` cuando la plataforma no la publica. |
| rows[].put.ask_iv | number|null | % | Volatilidad implícita a la mejor venta; `null` cuando la plataforma no la publica. |
| rows[].put.delta | number|null | — | Delta tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].put.gamma | number|null | — | Gamma tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].put.vega | number|null | — | Vega tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].put.theta | number|null | — | Theta tal como la publica la plataforma; `null` cuando no se publica. |
| rows[].put.observed_at | number | ms | Marca de tiempo que la fuente asigna a los datos. |
| coverage | object | — | Qué se incluye y qué no en las cifras. Conviene revisarlo antes de comparar totales con otra fuente. |
| coverage.included_exchanges | array | — | Fuentes cuyos datos frescos se incluyen. |
| coverage.included_exchanges[] | string | — | Fuentes cuyos datos frescos se incluyen. |
| coverage.unavailable | array | — | Fuentes que no pudieron incluirse, cada una con su motivo. Nunca se cuentan como 0. vacío en las muestras usadas para generar esta tabla |
| coverage.stale_excluded | array | — | Filas excluidas porque su última actualización está fuera de la ventana de frescura. vacío en las muestras usadas para generar esta tabla |
| coverage.field_gaps | array | — | Columnas que una plataforma no publica; son `null` para esa plataforma. |
| coverage.field_gaps[] | object | — | Columnas que una plataforma no publica; son `null` para esa plataforma. |
| coverage.field_gaps[].exchange | string | — | Id del exchange (en minúsculas). |
| coverage.field_gaps[].fields | array | — | Nombres de las columnas ausentes. |
| coverage.field_gaps[].fields[] | string | — | Nombres de las columnas ausentes. |
| coverage.field_gaps[].kind | string | — | Familia de contratos: `inverse` (liquidados en moneda) o `linear` (liquidados en stablecoin). |
| method | object | — | Enunciado en texto plano de las fórmulas utilizadas en esta respuesta, con una entrada por campo. |
| method.chain | string | — | Nota de fórmula de `chain`, en texto plano. |
| method.kind | string | — | Nota de fórmula de `kind`, en texto plano. |
| method.oi_usd | string | — | Nota de fórmula de `oi_usd`, en texto plano. |
| method.mark_price | string | — | Nota de fórmula de `mark_price`, en texto plano. |
| method.iv | string | — | Nota de fórmula de `iv`, en texto plano. |
| method.greeks | string | — | Nota de fórmula de `greeks`, en texto plano. |
| method.vol_usd_24h | string | — | Nota de fórmula de `vol_usd_24h`, en texto plano. |
| method.vol_premium_usd_24h | string | — | Nota de fórmula de `vol_premium_usd_24h`, en texto plano. |
| meta | object | — | Linaje y frescura de esta respuesta. |
| meta.schema | string | — | Id de esquema de esta respuesta. Solo cambia cuando un campo existente cambia de significado o de tipo. |
| meta.source | array | — | Endpoints públicos de origen de los que se recopilaron los datos. |
| meta.source[] | object | — | Endpoints públicos de origen de los que se recopilaron los datos. |
| meta.source[].exchange | string | — | Id del exchange (en minúsculas). |
| meta.source[].endpoint | string | — | Endpoint público de la fuente que lee el recolector (se muestra por linaje; los clientes nunca lo llaman). |
| meta.observed_at | number | ms | Marca de tiempo que la fuente asigna a los datos. |
| meta.received_at | number | ms | Hora en que el recolector de CoinBoss recibió los datos. |
| meta.fetched_at | number | ms | Hora en que se compuso esta respuesta. |
| meta.window | string | — | Ventana temporal que cubren las cifras. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN o UNAVAILABLE, según las marcas de tiempo de los datos y la cobertura. |
| meta.is_stale | boolean | — | True cuando los datos son más antiguos que su ventana de frescura. |
| meta.cache_ttl_s | number | s | Tiempo de vida en caché de esta respuesta. |
| meta.fallback | string | — | Qué devuelve el endpoint cuando falla el recolector o una fuente. |
Generada 2026-11-11 23:00 UTC a partir de 3 respuestas reales.
Respuesta de ejemplo
/api/sd/options/chain?coin=BTC&exchange=okx · Respuesta real capturada 2026-11-13 03:52:54 UTC. Los arrays y mapas largos se abrevian para su visualización: rows tenía 45 elementos; expiries_available tenía 12 elementos.
- "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…"
Muestras verificadas
Además del ejemplo anterior, la sonda llama a este endpoint con estos parámetros y comprueba el esquema en cada ocasión.
| Parámetros | HTTP | Latencia | Resultado |
|---|---|---|---|
| coin=ETH&exchange=deribit | 200 | 59 ms | Correcto STALE |
| coin=BTC&limit=5&exchange=bybit | 200 | 3 ms | Correcto STALE |
| coin=BTC | 400 | 1 ms | Correcto devuelve el error esperado |
Comprobado 2026-11-13 03:28:17 UTC
Detalles
- Autenticación
- Ninguna. Endpoint público.
- Límite de solicitudes
- 1200 solicitudes por minuto por IP
- Caché del servidor
- 60s
- Microcaché de borde
- 10s
- Frecuencia de actualización
- Ronda del recolector cada 10 minutos; una plataforma es fresca durante 25 minutos tras su última ronda correcta.
- Ventana
- Última instantánea de un vencimiento.
- Fuentes de datos
- Endpoints REST públicos de opciones de Deribit, Binance, Bybit, OKX, Gate y Coincall, recopilados y almacenados por CoinBoss (sd_opt_latest, sd_opt_summary_hourly). No interviene ningún agregador externo.
- Cobertura de exchanges
- Seis plataformas de opciones. Una moneda sin opciones listadas en las plataformas seleccionadas devuelve HTTP 200 con campos null, `meta.quality = "UNAVAILABLE"` y el motivo en `coverage.unavailable`. Las plataformas sin un feed público de opciones también se listan ahí.
- Paginación
- Basada en offset: `limit` (máx. 500) y `offset`; `total_strikes` y `returned` están en la respuesta.
- Ordenación
- Precio de ejercicio ascendente.
- Unidades
- 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étodo
- 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`.
- Marcas de tiempo
- Milisegundos de época Unix (UTC), salvo que la descripción del campo indique otra cosa
- Formato de respuesta
- json
- Estabilidad
- Estable
- Disponible desde
- 2026-11-11
Estado en vivo
El endpoint informa de una calidad de datos STALE
Disponibilidad, últimos 30 días
100% de 406 comprobaciones superadas
- Devuelto pero no documentado: coverage.stale_included, coverage.stale_included[], coverage.stale_included[].exchange, coverage.stale_included[].age_s
Errores
Las llamadas fallidas tienen la misma estructura en todos los endpoints. La lista completa está en la página de errores. Errores y límites de solicitudes →
| Código | HTTP | Significado | Qué hacer |
|---|---|---|---|
| INVALID_PARAM | 400 | Falta un parámetro obligatorio o un valor no se acepta. `param` indica el nombre del parámetro cuando se conoce. | No reintente sin cambios; corrija la solicitud. |
| UNAUTHORIZED | 401 | Se envió la cabecera `CB-API-KEY`, pero la clave es desconocida o está revocada. Los datos públicos no necesitan clave: elimine la cabecera o use una clave válida. | No reintente sin cambios. |
| FORBIDDEN | 403 | La ruta no forma parte de la API pública (interna o solo para cuentas). | No reintente. |
| NOT_FOUND | 404 | Ruta desconocida, o la moneda / el exchange / el fondo solicitado no existe. | No reintente; compruebe la ruta y los identificadores en el catálogo. |
| RATE_LIMITED | 429 | Más solicitudes que el límite por minuto. `Retry-After` indica los segundos de espera. | Espere el tiempo de `Retry-After` y después reintente con espera progresiva. |
| INTERNAL | 500 | Error inesperado del servidor. El mensaje es genérico por diseño; cite `request_id` al informar del error. | Reintente una vez tras unos segundos; si persiste, infórmelo con el ID de solicitud. |
| UPSTREAM_FAILED | 503 | La fuente de datos de este endpoint no respondió a tiempo. No se devuelven cifras desactualizadas ni sustitutas en su lugar. | Reintente con espera progresiva; consulte la página de estado. |
| UNAVAILABLE | 501 / 503 | El conjunto de datos no está listo temporalmente (calentamiento de la caché) o el endpoint aún no tiene una fuente pública lícita. | Reintente más tarde; el catálogo marca los endpoints que no están disponibles por diseño. |
| REQUEST_FAILED | 200 | Algunos endpoints antiguos responden HTTP 200 con `success: false`. Compruebe siempre `success`, no solo el estado HTTP. | Depende del mensaje; trátelo como una solicitud fallida. |
Pruébelo
/api/sd/options/chainDegradadostring — 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 · por defecto 100 · mín. 1 · máx. 500 — Strikes per page (one row = one strike with its call and put).
integer · por defecto 0 · mín. 0 · máx. 100000 — Number of strikes to skip.
https://www.coinboss.com/api/sd/options/chain?coin=BTC&exchange=okxMás en esta categoría
- Cadena de opciones (una plataforma) /api/sd/options/chain
- Opciones por vencimiento /api/sd/options/expiries
- Historial de opciones (horario) /api/sd/options/history
- Resumen de opciones (todas las plataformas) /api/sd/options/overview
- Opciones por precio de ejercicio /api/sd/options/strikes
- Resumen de opciones de la página de moneda /api/currency/options-summary
- Sonrisa / estructura temporal de la volatilidad implícita de opciones /api/options/iv
- Historial de la volatilidad implícita de opciones /api/options/iv-history
- Max pain de opciones /api/options/max-pain
- OI de opciones por vencimiento /api/options/oi-by-expiry
- OI de opciones por precio de ejercicio /api/options/oi-by-strike
- Resumen de opciones /api/options/overview
- Distribución del volumen de opciones /api/options/volume-dist