Endpoint de la API REST

GET /v1/recap

Datos de Recap, métricas resumidas y páginas principales para valores predefinidos o un rango de fechas personalizado.

Solicitud

GET https://api.nowmetrix.com/v1/recap?site=TRACKER_ID&preset=last30&limit=25

Utilice Recap cuando la integración necesite consultar datos anteriores: informes históricos, exportaciones de páginas principales, rangos de fechas personalizados o resultados filtrados mediante búsqueda.

Autenticación

Requiere una clave de API en la cabecera Authorization: Bearer nm_YOUR_KEY.

Parámetros de consulta

Nombre Tipo Obligatorio Descripción
site string obligatorio Identificador del tracker. La clave de API debe tener acceso a este tracker.
preset string opcional Valor predefinido de fecha. Puede ser today, yesterday, last7, last14, last30, last90, this_month, last_month, all_time o custom. Valor predeterminado: last30.
start date opcional Fecha de inicio para preset=custom. Formato: YYYY-MM-DD.
end date opcional Fecha de finalización para preset=custom. Formato: YYYY-MM-DD.
limit integer opcional Número máximo de páginas principales por respuesta, incluidas las respuestas paginadas. Los valores se limitan al intervalo 1–100. Valor predeterminado: 100.
q string opcional Término de búsqueda para las páginas principales. Busca coincidencias en la URL, el título o el autor. Alias: search.
search string opcional Alias de q.
offset integer opcional Inicia la paginación con offset=0. Entero de 0 a 2000. Las páginas posteriores requieren snapshot. Sin offset ni snapshot, la respuesta existente no cambia.
snapshot string opcional Utilice pagination.snapshot_id de la primera respuesta. Repita los parámetros originales site, preset, start, end y search. El tamaño de página puede cambiar. Omita snapshot para iniciar un recorrido nuevo.

Ejemplo de cURL

curl -H "Authorization: Bearer nm_YOUR_KEY" \
  "https://api.nowmetrix.com/v1/recap?site=TRACKER_ID&preset=last30&limit=25"

Ejemplo de respuesta

{
  "site": "TRACKER_ID",
  "preset": "last30",
  "timezone": "Europe/Zurich",
  "range": {
    "from": "2026-05-28",
    "to": "2026-06-26",
    "label": "Last 30 Days",
    "days": 30
  },
  "limits": {
    "min_date": "2025-03-17",
    "max_date": "2026-06-26",
    "max_days": null
  },
  "search": {
    "query": ""
  },
  "daily": [
    {
      "date": "2026-06-25",
      "pageviews": 102400,
      "visits": 12800
    },
    {
      "date": "2026-06-26",
      "pageviews": 98450,
      "visits": 12130
    }
  ],
  "summary": {
    "total_pageviews": 3158127,
    "total_visits": 388450,
    "pages_per_visitor": 8.1
  },
  "top_pages": [
    {
      "rank": 1,
      "title": "Home page",
      "author": "",
      "pubdate": "",
      "url": "/",
      "url_full": "https://example-media.test/",
      "url_id": "5dc0a5883395e2a126e5239650d9268e",
      "thumbnail": "https://realtimemetadata.fra1.cdn.digitaloceanspaces.com/thumbnails/example.jpg",
      "pageviews": 159280
    },
    {
      "rank": 2,
      "title": "Culture desk live notes",
      "author": "Alex Morgan",
      "pubdate": "2026-06-24",
      "url": "/culture/live-notes",
      "url_full": "https://example-media.test/culture/live-notes",
      "url_id": "b35c1a5f2fd0cbb7f3c13b853c2a9d2c",
      "thumbnail": "https://realtimemetadata.fra1.cdn.digitaloceanspaces.com/thumbnails/example-2.jpg",
      "pageviews": 85632
    }
  ],
  "generated_at": "2026-06-26T12:30:00Z"
}

Paginación

Añada offset=0 para activar la paginación. Cada respuesta contiene como máximo 100 artículos; la instantánea contiene como máximo 2000. Sin offset ni snapshot, el formato de respuesta y el límite existentes no cambian.

Para cada página siguiente, envíe pagination.next_offset como offset y pagination.snapshot_id como snapshot. Repita los parámetros originales site, preset, start, end y search, incluidas las fechas personalizadas. Deténgase cuando next_offset sea null. Un offset igual o superior al número disponible devuelve una matriz top_pages vacía.

El orden de los artículos, las páginas vistas, los valores diarios, el resumen y generated_at permanecen fijos entre páginas, incluso en rangos que incluyen el día actual. Las métricas de resumen abarcan todo el rango seleccionado; pagination.total solo cuenta los artículos de la instantánea limitada. Todas las solicitudes siguen requiriendo una autorización válida y cuentan para el límite de solicitudes del tracker.

Las instantáneas caducan después de 10 minutos. La lectura de las páginas no prolonga ese plazo. En HTTP 410, descarte el recorrido parcial y reinícielo con offset=0 sin snapshot. Los ejemplos siguientes muestran la primera solicitud, una continuación y el objeto de paginación adicional.

GET https://api.nowmetrix.com/v1/recap?site=TRACKER_ID&preset=last30&limit=100&offset=0
GET https://api.nowmetrix.com/v1/recap?site=TRACKER_ID&preset=last30&limit=100&offset=100&snapshot=0123456789abcdef0123456789abcdef0123456789abcdef
{
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 2000,
    "max_results": 2000,
    "has_more": true,
    "next_offset": 100,
    "snapshot_id": "0123456789abcdef0123456789abcdef0123456789abcdef",
    "expires_at": "2026-06-26T12:40:00Z"
  }
}

Campos de la respuesta

Campo Tipo Descripción
site string Identificador del tracker utilizado para la solicitud.
preset string Valor predefinido resuelto utilizado para la respuesta.
timezone string Zona horaria del tracker utilizada para resolver las fechas locales.
range object Rango de fechas resuelto, con from, to, label y el número de días.
limits object Límites del historial disponible para el tracker.
search.query string Consulta de búsqueda normalizada utilizada para filtrar las páginas principales.
daily[] array<object> Páginas vistas y visitas diarias del rango resuelto.
summary.total_pageviews integer Total de páginas vistas en el rango resuelto.
summary.total_visits integer Total de visitas en el rango resuelto.
summary.pages_per_visitor number Páginas vistas divididas por visitas, redondeadas a un decimal.
top_pages[] array<object> Páginas principales ordenadas por páginas vistas.
top_pages[].rank integer Posición en la instantánea completa al paginar; las posiciones continúan entre páginas.
top_pages[].title string Título de la página.
top_pages[].author string Autor, si está disponible.
top_pages[].pubdate string Fecha de publicación, si está disponible.
top_pages[].url string Ruta o URL abreviada.
top_pages[].url_full string URL absoluta, si está disponible.
top_pages[].url_id string Identificador estable de la URL.
top_pages[].thumbnail string URL de la miniatura, si está disponible.
top_pages[].pageviews integer Páginas vistas en el rango resuelto.
generated_at string Marca de tiempo UTC de la generación de la carga útil.
pagination object Solo está presente en el modo de paginación. Hay como máximo 2000 artículos disponibles entre todas las páginas.
pagination.limit integer Tamaño efectivo de página, de 1 a 100.
pagination.offset integer Posición de la página solicitada, basada en cero.
pagination.total integer Número de artículos de esta instantánea, limitado a 2000. No es el número total sin límite de URL coincidentes.
pagination.max_results integer Número máximo de artículos por instantánea: 2000.
pagination.has_more boolean Indica si hay otra página disponible en esta instantánea.
pagination.next_offset integer|null Pase este valor como offset para la página siguiente. Null indica que se ha llegado al final.
pagination.snapshot_id string Identificador opaco para las solicitudes posteriores que utilicen el parámetro snapshot. Está vinculado al usuario autenticado y al tracker.
pagination.expires_at string Caducidad fija en UTC, 10 minutos después del almacenamiento. La lectura de páginas no la prolonga.

Actualización y caché

Las solicitudes sin paginación utilizan la microcaché existente de 60 segundos y el mecanismo alternativo para datos históricos. La paginación almacena una instantánea inmutable en el Stats Redis local durante 600 segundos, con caducidad automática y sin renovación deslizante. Los inicios idénticos del mismo usuario en un intervalo de 60 segundos pueden reutilizar una instantánea, por lo que debe utilizar expires_at como fecha límite. Las continuaciones nunca vuelven a generar los datos ni utilizan otra instantánea como alternativa.

Errores

HTTP Código Descripción
400 site_required Falta el parámetro site obligatorio.
401 missing_token Falta la cabecera Authorization.
401 invalid_token El token no es válido o se ha revocado.
403 site_not_authorized La clave de API no tiene acceso a este tracker.
429 rate_limit_exceeded Se ha superado el límite de solicitudes.
503 redis_unavailable El backend en tiempo real no está disponible temporalmente.
503 clickhouse_unavailable Los datos históricos no están disponibles temporalmente.
500 encoding_failed No se ha podido codificar la respuesta de Recap.
400 invalid_pagination Los parámetros de consulta de paginación deben ser valores escalares.
400 invalid_offset El offset debe ser un entero de 0 a 2000.
400 invalid_snapshot El identificador de la instantánea tiene un formato no válido.
400 snapshot_required Los offsets superiores a cero requieren un identificador de instantánea. Comience con offset=0.
400 snapshot_mismatch El valor predefinido, las fechas o la búsqueda difieren de la solicitud original.
410 snapshot_expired La instantánea ha caducado o ya no está disponible en este contexto de usuario y tracker. Reinicie con offset=0 y sin snapshot.
503 snapshot_storage_unavailable No se puede leer ni escribir el almacenamiento de instantáneas. Vuelva a intentarlo; el identificador de una instantánea existente debe permanecer sin cambios.
503 recap_unavailable No se puede crear una instantánea nueva completa en este momento. Vuelva a intentarlo en breve.
{
  "error": {
    "code": "invalid_token",
    "message": "Bearer token is invalid or revoked."
  }
}