/api/sd/quality
GETDisponible

Matriz de calidad de datos (vista del recolector)

Capa de datos propia: matriz de calidad de datos (exchange × familia de datos)

GET/api/sd/quality

Solicitud

Este endpoint no admite parámetros.

Solicitud de ejemplo

curl -s "https://www.coinboss.com/api/sd/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.

CampoTipoUnidadDescripción
successboolean—true cuando la solicitud se completó correctamente. En caso de fallo, el cuerpo es `{ success: false, code, error, request_id }`.
nownumbermsHora del servidor en el momento de generar la respuesta.
familiesarray—Familias de datos comprobadas para cada exchange, en orden de visualización.
families[]string—Id de la familia: `ticker`, `oi`, `funding`, `funding_settle`, `liquidation`, `ls`, `spot` o `sd_contracts`.
exchangesarray—Exchanges.
exchanges[]string—Exchanges.
matrixobject—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.{*}.tickerobject—Frescura de los tickers de futuros del exchange: `status`, recuentos de filas, `age_s` y las ventanas de frescura / de uso. Las claves del mapa son ids de exchange. puede faltar
matrix.{*}.ticker.statusstring—Estado. puede faltar
matrix.{*}.ticker.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.ticker.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.ticker.rows_usablenumber—Filas dentro de la ventana de uso. puede faltar
matrix.{*}.ticker.rows_orphannumber—Filas cuyo contrato ya no está listado. puede faltar
matrix.{*}.ticker.rows_invalidnumber—Filas rechazadas por la validación. puede faltar
matrix.{*}.ticker.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.ticker.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.ticker.usable_within_snumbersLos datos más antiguos que este valor no se usan en absoluto. puede faltar
matrix.{*}.oiobject—Interés abierto. puede faltar
matrix.{*}.oi.statusstring—Estado. puede faltar
matrix.{*}.oi.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.oi.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.oi.rows_usablenumber—Filas dentro de la ventana de uso. puede faltar
matrix.{*}.oi.rows_orphannumber—Filas cuyo contrato ya no está listado. puede faltar
matrix.{*}.oi.rows_invalidnumber—Filas rechazadas por la validación. puede faltar
matrix.{*}.oi.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.oi.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.oi.usable_within_snumbersLos datos más antiguos que este valor no se usan en absoluto. puede faltar
matrix.{*}.fundingobject—Bloque o valor de la tasa de financiación. puede faltar
matrix.{*}.funding.statusstring—Estado. puede faltar
matrix.{*}.funding.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.funding.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.funding.rows_usablenumber—Filas dentro de la ventana de uso. puede faltar
matrix.{*}.funding.rows_orphannumber—Filas cuyo contrato ya no está listado. puede faltar
matrix.{*}.funding.rows_invalidnumber—Filas rechazadas por la validación. puede faltar
matrix.{*}.funding.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.funding.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.funding.usable_within_snumbersLos datos más antiguos que este valor no se usan en absoluto. puede faltar
matrix.{*}.funding.rows_unknown_intervalnumbercountFilas de financiación actualizadas en las últimas 4 horas cuyo intervalo de pago es desconocido, por lo que no pueden normalizarse a 8 horas; cualquier fila de este tipo hace que la celda sea `partial`. puede faltar
matrix.{*}.funding.rows_no_next_timenumbermsMarca de tiempo. puede faltar
matrix.{*}.funding.rows_no_livenessnumbercountFilas de financiación actualizadas recientemente en contratos sin evidencia de negociación activa (retirados de cotización o sin volumen); quedan fuera del recuento de frescura. puede faltar
matrix.{*}.funding_settleobject—Frescura del historial de pagos de financiación del exchange: `status`, `age_s` del pago más reciente, `symbols` y `history_from`. puede faltar
matrix.{*}.funding_settle.statusstring—Estado. puede faltar
matrix.{*}.funding_settle.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.funding_settle.symbolsnumber—Símbolos. puede faltar
matrix.{*}.funding_settle.history_fromnumbermsRegistro más antiguo conservado. puede faltar
matrix.{*}.funding_settle.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.liquidationobject—Bloque de liquidaciones. puede faltar
matrix.{*}.liquidation.statusstring—Estado. puede faltar
matrix.{*}.liquidation.viastring—Ruta de recopilación. puede faltar
matrix.{*}.liquidation.last_event_age_snumber|nullsSegundos transcurridos desde el evento. puede faltar
matrix.{*}.liquidation.events_1hnumbercountÓrdenes de liquidación almacenadas de este exchange en la última hora; los tamaños mínimos de orden difieren según el exchange, por lo que los recuentos no son comparables. puede faltar
matrix.{*}.liquidation.events_24hnumbercountÓrdenes de liquidación almacenadas de este exchange en las últimas 24 horas; los tamaños mínimos de orden difieren según el exchange, por lo que los recuentos no son comparables. puede faltar
matrix.{*}.liquidation.ws_heartbeat_age_snumber|nullsSegundos transcurridos desde el evento. puede faltar
matrix.{*}.liquidation.judged_bystring—Marca de tiempo a partir de la cual se evaluó el estado. puede faltar
matrix.{*}.liquidation.idle_ok_snumbersIntervalo más largo sin liquidaciones que aún se considera normal para este exchange; un intervalo mayor marca el flujo de datos como `stale`. puede faltar
matrix.{*}.lsobject—Frescura de las filas de ratio largos/cortos del exchange: `status`, recuentos de filas, `age_s` y las ventanas de frescura / de uso. puede faltar
matrix.{*}.ls.statusstring—Estado. puede faltar
matrix.{*}.ls.reasonstring—Código de motivo. puede faltar
matrix.{*}.spotobject—Bloque o valor del mercado spot. puede faltar
matrix.{*}.spot.statusstring—Estado. puede faltar
matrix.{*}.spot.reasonstring—Código de motivo. puede faltar
matrix.{*}.sd_contractsobject—Frescura de las filas de contratos con margen en moneda, con margen en USDC y con vencimiento del exchange: `status`, recuentos de filas y `age_s`. puede faltar
matrix.{*}.sd_contracts.statusstring—Estado. puede faltar
matrix.{*}.sd_contracts.reasonstring—Código de motivo. puede faltar
matrix.{*}.funding_settle.reasonstring—Código de motivo. puede faltar
matrix.{*}.liquidation.reasonstring—Código de motivo. puede faltar
matrix.{*}.liquidation.notestring—Nota. puede faltar
matrix.{*}.ls.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.ls.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.ls.rows_usablenumber—Filas dentro de la ventana de uso. puede faltar
matrix.{*}.ls.rows_orphannumber—Filas cuyo contrato ya no está listado. puede faltar
matrix.{*}.ls.rows_invalidnumber—Filas rechazadas por la validación. puede faltar
matrix.{*}.ls.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.ls.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.ls.usable_within_snumbersLos datos más antiguos que este valor no se usan en absoluto. puede faltar
matrix.{*}.spot.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.spot.coinsnumber—Monedas. puede faltar
matrix.{*}.spot.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.spot.notestring—Nota. puede faltar
matrix.{*}.sd_contracts.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.sd_contracts.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.sd_contracts.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.sd_contracts.rows_without_oinumbercountFilas de contratos que no incluyen ningún valor de interés abierto en USD. puede faltar
matrix.{*}.sd_contracts.rows_oi_promotednumbercountFilas de contratos cuyo interés abierto también se cuenta en los totales de interés abierto de todo el sitio. puede faltar
matrix.{*}.sd_contracts.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.{*}object—Matriz indexada por fila y columna.
matrix.{*}.{*}.statusstring—Estado.
matrix.{*}.{*}.reasonstring—Código de motivo. puede faltar
matrix.{*}.{*}.age_snumbersSegundos transcurridos desde la última actualización de esta fila. puede faltar
matrix.{*}.{*}.coinsnumber—Monedas. puede faltar
matrix.{*}.{*}.fresh_within_snumbersVentana de frescura: los datos más recientes que este valor cuentan como frescos. puede faltar
matrix.{*}.{*}.notestring—Nota. puede faltar
matrix.{*}.oi.reasonstring—Código de motivo. puede faltar
matrix.{*}.{*}.rowsnumber—Filas del resultado. puede faltar
matrix.{*}.{*}.rows_freshnumber—Filas actualizadas dentro de la ventana de frescura. puede faltar
matrix.{*}.{*}.rows_usablenumber—Filas dentro de la ventana de uso. puede faltar
matrix.{*}.{*}.rows_orphannumber—Filas cuyo contrato ya no está listado. puede faltar
matrix.{*}.{*}.rows_invalidnumber—Filas rechazadas por la validación. puede faltar
matrix.{*}.{*}.usable_within_snumbersLos datos más antiguos que este valor no se usan en absoluto. puede faltar
matrix.{*}.ticker.deadboolean—Presente solo cuando `status` es `stale`: true cuando tampoco hay ninguna fila dentro de la ventana de uso, por lo que el exchange queda excluido de los agregados. puede faltar
matrix.{*}.funding.reasonstring—Código de motivo. puede faltar
matrix.{*}.liquidation.pipeline_last_event_age_snumbersSegundos transcurridos desde el evento. puede faltar
matrix.{*}.liquidation.node_heartbeat_age_snumbersSegundos transcurridos desde el evento. puede faltar
summaryobject—Bloque de resumen.
summary.freshnumbercountNúmero de celdas exchange × familia con estado `fresh`.
summary.partialnumber—true cuando solo está presente una parte de los datos esperados.
summary.stalenumber—Filas o indicador de datos más antiguos que la ventana de frescura.
summary.invalidnumbercountNúmero de celdas exchange × familia con estado `invalid`.
summary.unavailablenumber—Elementos para los que no hay datos disponibles, con sus motivos. Nunca se informan como 0.
sourcesarray—Fuentes de datos.
sources[]object—Fuentes de datos.
sources[].exchangestring—Id del exchange, en minúsculas (por ejemplo `binance`).
sources[].familystring—Familia de datos de la tarea de recopilación a la que pertenece el registro de salud, por ejemplo `oi`, `funding`, `ticker`.
sources[].endpointstring—Etiqueta de la llamada al origen que se supervisa: host y ruta de la API pública consultada, o el nombre de una comprobación interna.
sources[].okboolean—false cuando el intento más reciente falló, es decir, cuando el último error es posterior al último éxito.
sources[].last_ok_age_snumber|nullsSegundos transcurridos desde el evento.
sources[].last_err_age_snumber|nullsSegundos transcurridos desde el evento.
sources[].last_statusnumber—Estado HTTP de la llamada más reciente.
sources[].last_errorstring|null—Texto de error del último fallo, recortado a 160 caracteres; null cuando no hay ninguno registrado.
sources[].last_msnumbermsDuración de la llamada más reciente; null cuando no se midió.
sources[].fail_streaknumbercountLlamadas fallidas consecutivas hasta ahora; 0 tras un éxito.
sources[].ok_countnumbercountLlamadas correctas registradas en el registro de salud.
sources[].err_countnumbercountLlamadas fallidas registradas en el registro de salud.
sources[].http_429numbercountLlamadas fallidas respondidas con HTTP 429 (límite de solicitudes superado).
sources[].http_403numbercountLlamadas fallidas respondidas con HTTP 403 (prohibido).
sources[].http_5xxnumbercountLlamadas fallidas respondidas con un estado HTTP 5xx.
sources[].timeoutsnumbercountLlamadas fallidas por tiempo de espera agotado.
errorsobject—Mapa de id de familia a mensaje de error para las familias cuya propia comprobación falló; vacío cuando se ejecutaron todas las comprobaciones.
alertsarray—Alertas de la patrulla de calidad de datos que están abiertas o se resolvieron en las últimas 24 horas, las abiertas primero (200 como máximo).
alerts[]object—Una alerta: `level`, `exchange`, `family`, `code`, `detail`, horas de apertura / última observación / resolución, `hits` y `open`.
alerts[].levelstring—Nivel.
alerts[].exchangestring—Id del exchange, en minúsculas (por ejemplo `binance`).
alerts[].familystring—Familia de datos a la que se refiere la alerta.
alerts[].codestring—Código.
alerts[].detailstring—Detalle.
alerts[].opened_atnumbermsMarca de tiempo.
alerts[].last_seen_atnumbermsMarca de tiempo.
alerts[].resolved_atnumber|nullmsMarca de tiempo.
alerts[].hitsnumbercountNúmero de ejecuciones de la patrulla (una cada 5 minutos) que observaron la condición desde que se abrió la alerta.
alerts[].openboolean—Precio de apertura del periodo.
monitorobject—Salud de la propia supervisión: antigüedad de la última ejecución de la patrulla, antigüedad del latido del recolector y `patrol_ok`.
monitor.alert_job_age_snumbersSegundos transcurridos desde el evento.
monitor.collector_heartbeat_age_snumbersSegundos transcurridos desde el evento.
monitor.patrol_okboolean—true cuando la patrulla se ejecutó en los últimos 15 minutos; cuando es false, la lista `alerts` puede estar desactualizada.
legendobject—Definición en texto plano de cada estado de celda.
legend.freshstring—Definición del estado `fresh`.
legend.partialstring—true cuando solo está presente una parte de los datos esperados.
legend.stalestring—Filas o indicador de datos más antiguos que la ventana de frescura.
legend.invalidstring—Definición del estado `invalid`.
legend.unavailablestring—Elementos para los que no hay datos disponibles, con sus motivos. Nunca se informan como 0.

Generada 2026-11-11 23:01 UTC a partir de 1 respuestas reales.

Respuesta de ejemplo

/api/sd/quality · Respuesta real capturada 2026-11-13 03:53:45 UTC. Los arrays y mapas largos se abrevian para su visualización: alerts tenía 3 elementos; matrix tenía 29 elementos; sources tenía 262 elementos; exchanges tenía 29 elementos.

  • {
    • "success": true,
    • "now": 1794542017525,
    • "families": [
      • "ticker",
      • "oi",
      • "funding",
      • "funding_settle",
      • "liquidation",
      • "ls",
      • "spot",
      • "sd_contracts"
      ],
    • "exchanges": [
      • "aster",
      • "backpack",
      • "binance",
      • "bingx",
      • "bitfinex",
      • "bitget",
      • "bitstamp",
      • "bitunix"
      ],
    • "matrix": {
      • "aster": { … 8 },
      • "backpack": { … 8 }
      },
    • "summary": {
      • "fresh": 123,
      • "partial": 7,
      • "stale": 1,
      • "invalid": 0,
      • "unavailable": 101
      },
    • "sources": [
      • { … 16 },
      • { … 16 }
      ],
    • "errors": {},
    • "alerts": [
      • { … 10 },
      • { … 10 }
      ],
    • "monitor": {
      • "alert_job_age_s": 280,
      • "collector_heartbeat_age_s": 35,
      • "patrol_ok": true
      },
    • "legend": {
      • "fresh": "data timestamps within the fresh window",
      • "partial": "some rows outside the fresh window or missing a required field",
      • "stale": "no row within the fresh window (dead=true: also outside the usable window, excluded from aggregates)",
      • "invalid": "more than half of usable rows fail sanity checks",
      • "unavailable": "no public source or not collected; shown as —, never 0"
      }
    }

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
la matriz se calcula bajo demanda (memo en proceso de 20 s); tarea de alertas cada 5 min
Ventana
último estado; alertas abiertas o resueltas en las últimas 24 h
Fuentes de datos
Matriz de frescura de los datos (exchange x familia de datos) calculada internamente a partir de las marcas de tiempo de las tablas recopiladas por el propio CoinBoss.
Cobertura de exchanges
todas las plataformas presentes en cualquier familia recopilada; las fuentes ausentes se informan como no disponibles con un motivo
Paginación
alertas limitadas a 200
Unidades
status per cell: fresh | partial | stale | invalid | unavailable; ages in seconds
Método
fresh = >= 90% of live rows inside the family's freshness window (tickers 5 min, OI 15 min / cme 36 h, funding 15 min, long/short 90 min); liquidation feeds judged by WebSocket heartbeat or time since last event; funding settlements fresh within 9 h; spot snapshots within 30 min
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

DisponibleComprobado 2026-11-13 03:53:45 UTCHTTP 2004 msEl esquema coincideAntigüedad del dato más reciente: 5m

Disponibilidad, últimos 30 días

100% de 407 comprobaciones superadas

Desviación del esquema detectada por la última sonda
  • Devuelto pero no documentado: matrix.{*}.{*}.rows_unknown_interval, matrix.{*}.{*}.rows_no_next_time, matrix.{*}.{*}.rows_no_liveness, matrix.{*}.{*}.symbols, matrix.{*}.{*}.history_from, matrix.{*}.{*}.via, matrix.{*}.{*}.last_event_age_s, matrix.{*}.{*}.events_1h, matrix.{*}.{*}.events_24h, matrix.{*}.{*}.ws_heartbeat_age_s, matrix.{*}.{*}.judged_by, matrix.{*}.{*}.idle_ok_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ódigoHTTPSignificadoQué hacer
INVALID_PARAM400Falta 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.
UNAUTHORIZED401Se 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.
FORBIDDEN403La ruta no forma parte de la API pública (interna o solo para cuentas).No reintente.
NOT_FOUND404Ruta desconocida, o la moneda / el exchange / el fondo solicitado no existe.No reintente; compruebe la ruta y los identificadores en el catálogo.
RATE_LIMITED429Má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.
INTERNAL500Error 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_FAILED503La 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.
UNAVAILABLE501 / 503El 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_FAILED200Algunos 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

GET/api/sd/qualityDisponible
Parámetros

Sin parámetros.

URL de la solicitudhttps://www.coinboss.com/api/sd/quality
Elija un endpoint y pulse «Enviar solicitud». Aquí aparecerán la respuesta, las cabeceras y los tiempos.