Historial de la base (horario)
Serie horaria de la base por exchange y como agregado entre exchanges (mediana, media, ponderada por OI) de una moneda.
/api/sd/basis/historySolicitud
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 |
| kind | string | Opcional | perp | perp, spot_perp | `perp`: precio de marca frente al precio del índice del mismo exchange. `spot_perp`: precio del perpetuo frente al precio spot del mismo exchange. |
| range | string | Opcional | 24h | 24h, 7d, 30d | Rango retrospectivo, un punto por hora. |
| exchange | string | Opcional | — | — | Un id de exchange. Por defecto: todos los exchanges. Un id desconocido devuelve 400. |
Solicitud de ejemplo
curl -s "https://www.coinboss.com/api/sd/basis/history?coin=BTC"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). |
| kind | string | — | `perp` o `spot_perp`. |
| range | string | — | Rango retrospectivo aplicado. |
| interval | string | — | Separación entre los puntos de la serie. |
| exchange | string|null | — | Id del exchange (en minúsculas). |
| aggregate | array | — | Agregado entre exchanges de la sección. |
| aggregate[] | object | — | Agregado entre exchanges de la sección. |
| aggregate[].t | number | ms | Inicio del tramo temporal. |
| aggregate[].median_pct | number | % | Mediana de la base sobre un contrato principal por exchange. |
| aggregate[].mean_pct | number | % | Media simple sobre el mismo conjunto que la mediana. |
| aggregate[].oi_weighted_pct | number | % | Base ponderada por interés abierto; las filas sin ponderación por OI quedan fuera. |
| aggregate[].n_exchanges | number | — | Exchanges incluidos en el agregado. |
| series | array | — | Una serie por exchange. |
| series[] | object | — | Una serie por exchange. |
| series[].exchange | string | — | Id del exchange (en minúsculas). |
| series[].symbol | string | — | Símbolo del contrato en el formato de almacenamiento de CoinBoss. |
| series[].primary | boolean | — | True para el contrato que representa a su exchange en la mediana y la media. |
| series[].in_aggregate | boolean | — | True cuando la fila cumple las reglas de inclusión. |
| series[].points | array | — | Pares `[hour start in ms, basis in %]`, del más antiguo al más reciente. |
| series[].points[] | array | — | Pares `[hour start in ms, basis in %]`, del más antiguo al más reciente. |
| series[].points[][] | number | — | Pares `[hour start in ms, basis in %]`, del más antiguo al más reciente. |
| history | object | — | Qué parte del rango solicitado está disponible. |
| history.requested_from | number | ms | Inicio del rango solicitado. |
| history.available_from | number | ms | Primera hora almacenada. |
| history.available_to | number | ms | Última hora almacenada. |
| history.n_hours | number | — | Horas disponibles en el rango. |
| history.expected_hours | number | — | Horas que contiene el rango cuando está completo. |
| history.complete | boolean | — | True cuando están almacenadas todas las horas del rango solicitado. |
| 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. |
| coverage.unavailable[] | object | — | Fuentes que no pudieron incluirse, cada una con su motivo. Nunca se cuentan como 0. |
| coverage.unavailable[].exchange | string | — | Id del exchange (en minúsculas). |
| coverage.unavailable[].reason | string | — | Código de motivo legible por máquina. |
| coverage.unavailable[].detail | string | — | Explicación del motivo legible por personas. |
| 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 |
| method | object | — | Enunciado en texto plano de las fórmulas utilizadas en esta respuesta, con una entrada por campo. |
| method.series.points | string | — | Nota de fórmula de `series.points`, en texto plano. |
| method.aggregate.median_pct | string | — | Nota de fórmula de `aggregate.median_pct`, en texto plano. |
| method.aggregate.oi_weighted_pct | string | — | Nota de fórmula de `aggregate.oi_weighted_pct`, en texto plano. |
| method.interval | string | — | Nota de fórmula de `interval`, 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 | null | — | 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/basis/history?coin=BTC · Respuesta real capturada 2026-11-13 03:58:08 UTC. Los arrays y mapas largos se abrevian para su visualización: series tenía 20 elementos; aggregate tenía 25 elementos; meta.source tenía 20 elementos; series[].points tenía 25 elementos; coverage.included_exchanges tenía 20 elementos.
- "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"
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&kind=spot_perp | 200 | 41 ms | Correcto FRESH |
| coin=BTC&exchange=binance | 200 | 32 ms | Correcto FRESH |
| coin=BTC&range=1y | 400 | 1 ms | Correcto devuelve el error esperado |
Comprobado 2026-11-13 03:58:08 UTC
Detalles
- Autenticación
- Ninguna. Endpoint público.
- Límite de solicitudes
- 1200 solicitudes por minuto por IP
- Caché del servidor
- 5m
- Microcaché de borde
- 10s
- Frecuencia de actualización
- Ronda del recolector cada 60 segundos; una fila es fresca durante 180 segundos. Las instantáneas horarias alimentan el historial.
- Ventana
- 24h / 7d / 30d, tramos horarios.
- Fuentes de datos
- Precio de marca, precio del índice y último precio publicados por 21 exchanges de derivados, más el precio spot del mismo exchange, recopilados y almacenados por CoinBoss (sd_px_latest, sd_px_hourly).
- Cobertura de exchanges
- 21 exchanges. Los exchanges que no publican un precio del índice o un precio de marca se listan en `coverage.unavailable`; las filas cuyos dos componentes de precio distan más de 60 segundos devuelven `null`. Las filas que quedan fuera del agregado se listan en `coverage.excluded_from_aggregate` con el motivo.
- Paginación
- Sin paginación; `range` limita el número de puntos.
- Ordenación
- Tiempo ascendente.
- Unidades
- All basis values in percent. Prices in the quote currency of the contract (USDT / USDC / USD). `oi_usd` single-sided.
- Método
- 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`.
- 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
La recopilación comenzó el 2026-11-11. La respuesta informa de `history.available_from`, de `n_hours` frente a `expected_hours` y de `complete`; las horas sin datos están ausentes, no se interpolan.
Disponibilidad, últimos 30 días
100% de 407 comprobaciones superadas
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/basis/historyParcialstring — Coin symbol, case-insensitive (for example `BTC`). Missing or malformed values return 400.
string · por defecto 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 · por defecto 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=BTCMás en esta categoría
- Base de futuros (todas las plataformas) /api/sd/basis
- Historial de la base (horario) /api/sd/basis/history
- Monedas ordenadas por base /api/sd/basis/rank
- Lista de base futuros-spot /api/derivatives/basis
- Diferencial diario del precio de BTC entre Coinbase y Kraken /api/p3/cb-kr-spread
- Índice de prima de Bitcoin de Coinbase /api/p3/coinbase-premium
- Lista del índice de prima de perpetuos /api/p3/premium-index
- Historial del índice de prima de una moneda /api/p3/premium-index/history
- Velas del índice de prima /api/p3/premium-index/klines
- Prima OTC de USDT frente a los tipos de cambio fiat /api/usdt-premium
- Lista completa de base futuros-spot /api/basis/list