Matriz de calidad de datos
Matriz exchange × familia de datos con FRESH / PARTIAL / STALE / BROKEN / UNAVAILABLE, marcas de tiempo de origen y de obtención, retraso, cobertura y el motivo de cada hueco.
/api/meta/qualitySolicitud
Parámetros de consulta
| Nombre | Tipo | Obligatorio | Valor por defecto | Valores admitidos | Descripción |
|---|---|---|---|---|---|
| exchange | string | Opcional | — | — | Devuelve solo este exchange (id en minúsculas, por ejemplo `binance`). |
| family | string | Opcional | — | — | Devuelve solo esta familia de datos (por ejemplo `oi`, `funding`, `liquidation`). |
Solicitud de ejemplo
curl -s "https://www.coinboss.com/api/meta/quality"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 del esquema de esta respuesta (`coinboss.meta.quality/1`). |
| now | number | ms | Hora del servidor en el momento de generar la respuesta. |
| families | array | — | Familias de datos evaluadas por exchange (tickers, interés abierto, financiación, liquidaciones, libros de órdenes, opciones y otras). |
| families[] | object | — | Una familia: `id`, `scope`, `title`, `what`, `table`, `cadence` y `fresh_within_s`. |
| families[].id | string | — | Identificador. |
| families[].scope | string | — | `exchange` en las familias evaluadas por exchange en `matrix`. |
| families[].title | string | — | Título para mostrar de la familia. |
| families[].what | string | — | Descripción breve de los datos que abarca la familia. |
| families[].table | string | — | Nombre del conjunto de datos interno a partir del cual se evalúa la familia; solo informativo. |
| families[].cadence | string | — | Calendario de recopilación de la familia en texto plano; null cuando no se indica. |
| families[].fresh_within_s | number | s | Ventana de frescura: los datos más recientes que este valor cuentan como frescos. |
| exchanges | array | — | Exchanges. |
| exchanges[] | string | — | Exchanges. |
| matrix | object | — | Matriz indexada por fila y columna. claves dinámicas: aster,backpack,binance,bingx,bitfinex,bitget |
| matrix.{*} | object | — | Matriz indexada por fila y columna. claves dinámicas: ticker,oi,funding,funding_settle,liquidation,ls |
| matrix.{*}.{*} | object | — | Matriz indexada por fila y columna. |
| matrix.{*}.{*}.status | string | — | Estado. |
| matrix.{*}.{*}.lag_s | number|null | s | Ahora menos la marca de tiempo de datos almacenada más reciente de ese exchange (primera clave) y esa familia (segunda clave); null cuando la familia no está disponible en él. |
| matrix.{*}.{*}.source_at | number|null | ms | Marca de tiempo. |
| matrix.{*}.{*}.fetched_at | number|null | ms | Cuándo obtuvo CoinBoss los datos de la fuente. |
| matrix.{*}.{*}.fresh_within_s | number|null | s | Ventana de frescura: los datos más recientes que este valor cuentan como frescos. |
| matrix.{*}.{*}.coverage | object|null | — | Qué se incluye y qué falta. |
| matrix.{*}.{*}.coverage.rows | number | — | Filas del resultado. puede faltar |
| matrix.{*}.{*}.coverage.rows_fresh | number | — | Filas actualizadas dentro de la ventana de frescura. puede faltar |
| matrix.{*}.{*}.coverage.rows_usable | number | — | Filas dentro de la ventana de uso. puede faltar |
| matrix.{*}.{*}.coverage.rows_orphan | number | — | Filas cuyo contrato ya no está listado. puede faltar |
| matrix.{*}.{*}.coverage.rows_invalid | number | — | Filas rechazadas por la validación. puede faltar |
| matrix.{*}.{*}.reason | string|null | — | Código de motivo. |
| matrix.{*}.{*}.coverage.rows_no_liveness | number | count | Filas de financiación en contratos sin evidencia de negociación activa (retirados de cotización o sin volumen); quedan fuera del recuento de frescura. puede faltar |
| matrix.{*}.{*}.coverage.rows_unknown_interval | number | count | Filas de financiación actualizadas recientemente cuyo intervalo de pago es desconocido, por lo que no pueden normalizarse a 8 horas. puede faltar |
| matrix.{*}.{*}.coverage.symbols | number | — | Símbolos. puede faltar |
| matrix.{*}.{*}.coverage.events_1h | number | count | Órdenes de liquidación almacenadas del exchange en la última hora; los tamaños mínimos de orden difieren según el exchange. puede faltar |
| matrix.{*}.{*}.coverage.events_24h | number | count | Órdenes de liquidación almacenadas del exchange en las últimas 24 horas; los tamaños mínimos de orden difieren según el exchange. puede faltar |
| matrix.{*}.{*}.via | string | — | Ruta de recopilación. puede faltar |
| matrix.{*}.{*}.coverage.books | number | count | Número de libros de órdenes con seguimiento. puede faltar |
| matrix.{*}.{*}.coverage.books_fresh | number | count | Número de libros de órdenes actualizados dentro de la ventana de frescura. puede faltar |
| matrix.{*}.{*}.coverage.books_reaching_2pct | number | count | Número de libros de órdenes con profundidad suficiente para cubrir ±2 % en torno al precio medio. puede faltar |
| matrix.{*}.{*}.coverage.contracts | number | — | Filas por contrato. puede faltar |
| matrix.{*}.{*}.coverage.contracts_fresh | number | count | Número de contratos actualizados dentro de la ventana de frescura. puede faltar |
| matrix.{*}.{*}.coverage.with_mark_and_index | number | count | Número de contratos que tienen tanto precio de marca como precio del índice. puede faltar |
| matrix.{*}.{*}.coverage.delivery_contracts | number | count | Número de contratos con vencimiento (con fecha). puede faltar |
| matrix.{*}.{*}.note | string | — | Nota. puede faltar |
| matrix.{*}.{*}.coverage.coins | number | — | Monedas. puede faltar |
| matrix.{*}.{*}.coverage.rows_without_oi | number | count | Filas de contratos con margen en moneda, con margen en USDC o con vencimiento que no incluyen ningún valor de interés abierto en USD. puede faltar |
| matrix.{*}.{*}.coverage.with_mark_iv | number | count | Número de contratos de opciones que tienen volatilidad implícita de marca. puede faltar |
| matrix.{*}.{*}.coverage.with_greeks | number | count | Número de contratos de opciones que tienen griegas. puede faltar |
| datasets | array | — | Comprobaciones de calidad de los conjuntos de datos que no son por exchange (por ejemplo, los datos diarios de ETF spot y de CME), cada una con estado, retraso, cobertura y motivo. |
| datasets[] | object | — | Un conjunto de datos de todo el mercado que no está ligado a un único exchange (opciones, ETF spot, CME, libros de órdenes, base). |
| datasets[].family | string | — | Id del conjunto de datos, por ejemplo `etf` o `cme`. |
| datasets[].id | string | — | Identificador. |
| datasets[].title | string | — | Nombre para mostrar del conjunto de datos. |
| datasets[].source | string | — | De dónde procede el valor. |
| datasets[].endpoint | string | — | Endpoint público que sirve el conjunto de datos. |
| datasets[].status | string | — | Estado. |
| datasets[].lag_s | number | s | Antigüedad del punto de datos más reciente cuando se generó la respuesta. |
| datasets[].source_at | number | ms | Marca de tiempo. |
| datasets[].fetched_at | number | ms | Cuándo obtuvo CoinBoss los datos de la fuente. |
| datasets[].fresh_within_s | number | s | Ventana de frescura: los datos más recientes que este valor cuentan como frescos. |
| datasets[].coverage | object | — | Qué se incluye y qué falta. |
| datasets[].coverage.funds_total | number | count | Número de fondos con seguimiento. puede faltar |
| datasets[].coverage.funds_covered | number | count | Número de fondos con una divulgación utilizable. puede faltar |
| datasets[].coverage.funds_unavailable | number | count | Número de fondos cuyo emisor no publica ninguna divulgación legible por máquina. puede faltar |
| datasets[].coverage.funds_failing | number | count | Número de fondos cuya divulgación no pudo leerse en la última ronda de recopilación. puede faltar |
| datasets[].coverage.as_of | string | — | Fecha de divulgación más reciente entre los fondos cubiertos (YYYY-MM-DD). puede faltar |
| datasets[].coverage.as_of_min | string | — | Fecha de divulgación más antigua entre los fondos cubiertos (YYYY-MM-DD). puede faltar |
| datasets[].reason | string|null | — | Código de motivo. |
| datasets[].coverage.contracts | number | — | Filas por contrato. puede faltar |
| datasets[].coverage.report_date | string | — | Fecha del informe Commitments of Traders de la CFTC más reciente (YYYY-MM-DD). puede faltar |
| datasets[].coverage.products | number | count | Número de productos de CME cubiertos. puede faltar |
| datasets[].coverage.trade_date | string | — | Fecha de negociación del informe diario de CME más reciente (YYYY-MM-DD). puede faltar |
| summary | object | — | Bloque de resumen. claves dinámicas: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| summary.{*} | number | — | Bloque de resumen. |
| by_family | object | — | Número de exchanges en cada estado, por familia. Las claves externas son ids de familia. claves dinámicas: ticker,oi,funding,funding_settle,liquidation,ls |
| by_family.{*} | object | — | Recuentos por estado de una familia, con el estado como clave (`FRESH`, `PARTIAL`, `STALE`, `BROKEN`, `UNAVAILABLE`). claves dinámicas: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| by_family.{*}.{*} | number | count | Número de exchanges con ese estado para esa familia. |
| alerts | array | — | Alertas de la patrulla de calidad de datos que están abiertas o se resolvieron en los últimos 7 días, las abiertas primero; filtradas por los parámetros de la solicitud. |
| alerts[] | object | — | Una alerta: `level`, `exchange`, `family`, `code`, `detail`, horas de apertura / última observación / resolución, `hits` y `open`. |
| alerts[].level | string | — | Nivel. |
| alerts[].exchange | string | — | Id del exchange, en minúsculas (por ejemplo `binance`). |
| alerts[].family | string | — | Familia de datos a la que se refiere la alerta. |
| alerts[].code | string | — | Código. |
| alerts[].detail | string | — | Detalle. |
| alerts[].opened_at | number | ms | Marca de tiempo. |
| alerts[].last_seen_at | number | ms | Marca de tiempo. |
| alerts[].resolved_at | number|null | ms | Marca de tiempo. |
| alerts[].hits | number | count | Número de ejecuciones de la patrulla (una cada 5 minutos) que observaron la condición desde que se abrió la alerta. |
| alerts[].open | boolean | — | Precio de apertura del periodo. |
| monitor | object | — | Salud de la propia supervisión: hora y antigüedad de la última ejecución de la patrulla, `patrol_ok` y la antigüedad del latido del recolector. |
| monitor.patrol_last_run_at | number | ms | Marca de tiempo. |
| monitor.patrol_age_s | number | s | Segundos transcurridos desde el evento. |
| monitor.patrol_ok | boolean | — | true cuando la patrulla se ejecutó en los últimos 15 minutos; cuando es false, la lista `alerts` puede estar desactualizada, mientras que la matriz sigue en vivo. |
| monitor.collector_heartbeat_age_s | number | s | Segundos transcurridos desde el evento. |
| errors | null | — | Mapa de id de familia a un código de error para las familias cuya propia comprobación de calidad falló; null cuando se ejecutaron todas las comprobaciones. |
| legend | object | — | Definición en texto plano de cada estado de celda. claves dinámicas: FRESH,PARTIAL,STALE,BROKEN,UNAVAILABLE |
| legend.{*} | string | — | Definición del estado indicado por la clave (`FRESH`, `PARTIAL`, `STALE`, `BROKEN`, `UNAVAILABLE`). |
| method | object | — | Notas sobre la fórmula / el método. |
| method.status | string | — | Estado. |
| method.lag_s | string | — | Enunciado en texto plano de cómo se calcula `lag_s`. |
| method.source_at | string | — | Cadena de fecha y hora. |
| method.fetched_at | string | — | Cadena de fecha y hora. |
| meta | object | — | Envoltorio de esta respuesta: id del esquema, sistema que la produce, marcas de tiempo, duración de la caché y frescura. |
| meta.schema | string | — | Id del esquema de esta respuesta; el mismo valor que el `schema` de nivel superior. |
| meta.source | array | — | De dónde procede el valor. |
| meta.source[] | object | — | De dónde procede el valor. |
| meta.source[].system | string | — | Sistema que produjo los datos; siempre `coinboss` en los endpoints del centro de desarrolladores. |
| meta.source[].component | string | — | Componente del que proceden los datos: la sonda de endpoints y la patrulla de calidad de datos. |
| meta.observed_at | null | — | Marca de tiempo. |
| meta.received_at | number | ms | Marca de tiempo. |
| meta.fetched_at | number | ms | Cuándo obtuvo CoinBoss los datos de la fuente. |
| meta.window | string | — | Ventana. |
| meta.cache_ttl_s | number | s | Duración de la caché del lado del servidor para esta respuesta. |
| meta.quality | string | — | Normalmente `FRESH`; `PARTIAL` cuando la patrulla de calidad no se ha ejecutado en los últimos 15 minutos (solo se ve afectada la lista de alertas). |
| meta.is_stale | boolean | — | true cuando la fila es más antigua que la ventana de frescura; las filas desactualizadas no se usan en los totales. |
| meta.fallback | string | — | Nota en texto plano sobre lo que devuelve este endpoint cuando sus datos de entrada están desactualizados o faltan. |
Generada 2026-11-11 23:01 UTC a partir de 3 respuestas reales.
Respuesta de ejemplo
/api/meta/quality · Respuesta real capturada 2026-11-13 03:53:46 UTC. Los arrays y mapas largos se abrevian para su visualización: alerts tenía 11 elementos; legend tenía 5 elementos; matrix tenía 30 elementos; summary tenía 5 elementos; datasets tenía 12 elementos; families tenía 12 elementos.
- "success"true
- "schema""coinboss.meta.quality/1"
- "now"1794542026126
- "families"
- "exchanges"
- "aster"
- "backpack"
- "binance"
- "bingx"
- "bitfinex"
- "bitget"
- "bitstamp"
- "bitunix"
- "matrix"
- "aster"
- "backpack"
- "datasets"
- "summary"
- "FRESH"161
- "PARTIAL"7
- "by_family"
- "ticker"
- "oi"
- "alerts"
- "monitor"
- "patrol_last_run_at"1794541745827
- "patrol_age_s"281
- "patrol_ok"true
- "collector_heartbeat_age_s"36
- "errors"null
- "legend"
- "FRESH""newest stored data point is inside the fresh window for this family"
- "PARTIAL""some contracts / rows are outside the fresh window or miss a required field"
- "method"
- "status""judged from data timestamps in CoinBoss storage every request (30 s in-process cache); a running collector process is not treated as evidence"
- "lag_s""now − newest stored data timestamp for the exchange / family"
- "source_at""newest stored data timestamp (exchange timestamp when the exchange provides one, otherwise collector receive time)"
- "fetched_at""last successful upstream call recorded by the collector health log; null for WebSocket feeds and collectors that do not log per-call health"
- "meta"
- "schema""coinboss.meta.quality/1"
- "source"
- "observed_at"null
- "received_at"1794542026978
- "fetched_at"1794542026126
- "window""latest"
- "cache_ttl_s"20
- "quality""FRESH"
- "is_stale"false
- "fallback""matrix is always computed from storage; when the 5-minute patrol itself stops (monitor.patrol_ok=false) only the alerts list may be outdated"
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 |
|---|---|---|---|
| exchange=binance | 200 | 1 ms | Correcto FRESH |
| family=funding | 200 | 1 ms | Correcto FRESH |
Comprobado 2026-11-13 03:29:27 UTC
Detalles
- Autenticación
- Ninguna. Endpoint público.
- Límite de solicitudes
- 1200 solicitudes por minuto por IP
- Caché del servidor
- 20s
- Microcaché de borde
- 10s
- Frecuencia de actualización
- Se evalúa bajo demanda a partir de la marca de tiempo más reciente de los datos de cada par exchange × familia.
- Fuentes de datos
- Tablas en bruto de CoinBoss (marcas de tiempo de la última fila), registro de salud de los recolectores. Un proceso en ejecución nunca se cuenta como datos en buen estado.
- 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
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/meta/qualityDisponiblestring — Return only this exchange (lower-case id, for example `binance`).
string — Return only this data family (for example `oi`, `funding`, `liquidation`).
https://www.coinboss.com/api/meta/qualityMás en esta categoría
- Matriz de calidad de datos (vista del recolector) /api/sd/quality
- Catálogo de la API /api/meta/catalog
- Registro de cambios y política de versionado /api/meta/changelog
- Documentación de un endpoint /api/meta/endpoint
- Documento OpenAPI /api/meta/openapi
- Matriz de calidad de datos /api/meta/quality
- Estado del servicio /api/meta/status
- Comprueba si la plataforma conoce un símbolo de moneda /api/coin-exists
- Mapa de símbolo de moneda a ruta del icono alojado localmente /api/coin-icons
- Resumen agregado de la página de moneda /api/content/coin
- Resumen de secciones de todo el sitio /api/content/summary
- Tabla de tipos de cambio fiat /api/currency/fx
- Mapa de id de exchange a ruta del icono alojado localmente /api/exchange-icons
- Comprobación de actividad /api/health
- Estadísticas de la página de investigación /api/research/stats