API REST

Sistema y metadatos

Cuatro rutas que no sirven ninguna métrica de mercado: dicen si el servicio responde, si los datos están frescos, qué activos existen y lo que cada uno puede servir realmente.

#Salud del servicio

GET/v1/healthsin clave

La sonda. Dice si el servicio está en marcha y si su base de datos responde. Es la única ruta que responde sin clave y nunca se descuenta de la cuota, lo que la convierte en el punto que un sistema de monitorización puede consultar sin consumir nada.

200
{
  "status": "ok",
  "timestamp": 1775647758094,
  "database": "connected"
}

En caso de problema, la respuesta lleva 503 y "database": "unreachable".

#Frescura de las fuentes

GET/v1/status

Para cada fuente que alimenta el núcleo de mercado: el número de filas, la última inserción, su antigüedad y un indicador is_stale calculado en el servidor según un umbral propio de esa fuente. Es la ruta que hay que consultar antes de construir un análisis: saber que un dato es antiguo es mejor que descubrirlo en un resultado.

200
{
  "status": "ok",
  "timestamp": 1775648290510,
  "tables": {
    "raw_exchange.klines_1m": {
      "count": 4881977,
      "last_insert": "2026-08-29T11:37:00+00:00",
      "age_seconds": 70.5,
      "is_stale": false,
      "stale_threshold_seconds": 180
    },
    "raw_exchange.trades_raw": {
      "count": 918964,
      "last_insert": "2026-08-29T11:38:09+00:00",
      "age_seconds": 1.5,
      "is_stale": false,
      "stale_threshold_seconds": 30,
      "per_exchange": {
        "venue_a": { "age_seconds": 1.2, "is_stale": false },
        "venue_b": { "age_seconds": 2.0, "is_stale": false }
      },
      "any_exchange_stale": false
    }
  }
}
CampoTipoDescripción
countintegerNúmero de filas disponibles.
last_insertstring | nullMarca de tiempo ISO 8601 de la última escritura.
age_secondsfloat | nullSegundos transcurridos desde entonces.
is_stalebooleanVerdadero si la antigüedad supera el umbral. Una fuente vacía que tiene umbral se marca como obsoleta: «ningún dato» es una señal más fuerte que «datos con retraso».
stale_threshold_secondsinteger | nullEl umbral aplicado. null significa que ningún umbral tiene sentido para esta fuente (un índice publicado una vez al día, por ejemplo).
per_exchangeobjectEn las fuentes multimercado: la antigüedad de cada una. Un solo mercado caído se ve ahí.
any_exchange_stalebooleanAcompaña a per_exchange. El indicador raíz se basa en la fuente más fresca: un mercado caído sería invisible mientras los demás sigan escribiendo. Este lo hace aparecer.

#Catálogo de símbolos

GET/v1/symbolsdata_type · symbols

La lista viva de los activos habilitados. Es la referencia: no codifiques la lista en un cliente, haz que la lea al arrancar.

200
{
  "status": "ok",
  "timestamp": 1775648758094,
  "data_type": "symbols",
  "data": [
    { "symbol": "BTCUSDT", "base_asset": "BTC", "name": "Bitcoin" },
    { "symbol": "ETHUSDT", "base_asset": "ETH", "name": "Ethereum" }
  ]
}
CampoTipoDescripción
symbolstringEl identificador que pasar en ?symbol=.
base_assetstringEl activo base (BTC, ETH). Es lo que las rutas de opciones reciben en ?asset=.
namestringEl nombre completo, para mostrar.

#Informe de capacidades

GET/v1/symbols/{symbol}/capabilitiesdata_type · symbol_capabilities

Lo que este activo puede servir realmente, medido en las últimas veinticuatro horas. Permite anticipar una respuesta vacía en lugar de descubrirla, y distinguir una métrica que no tiene sentido aquí de una métrica bloqueada momentáneamente.

curl -H "X-API-KEY: $BYTNODE_KEY" \
  "https://api.bytnode.com/v1/symbols/USDCUSDT/capabilities"
CampoTipoDescripción
symbolstringEl activo consultado.
asset_classstringcrypto o stablecoin.
feeds_active_last_24hobjectOcho flujos, cada uno verdadero o falso según haya producido datos en la ventana. Capacidad no es frescura: un flujo activo hace veinte horas sigue siendo verdadero.
computed_metrics_availablearrayLas métricas calculables: todos sus flujos de entrada están presentes.
computed_metrics_blockedobjectLas métricas impedidas, con los flujos que faltan y el motivo.
computed_metrics_not_applicableobjectEn una stablecoin: cada métrica derivada del mercado de futuros, con su motivo. Es intencionado, no un fallo.
stablecoin_notestringEn una stablecoin: lo que sigue disponible en spot.

Un símbolo desconocido o desactivado devuelve 400 con la lista de símbolos activos.