Rastreo de API
Rastree el uso de endpoints API, latencia, tasas de error y patrones de uso con middleware Express o llamadas manuales.
import { BetterMeter } from "@bettermeter/node";
import express from "express";
const bm = new BetterMeter({
siteId: "my-api",
apiKey: "bm_...",
});
const app = express();
// Auto-track all requests
app.use(bm.expressMiddleware());bm.trackApi({
method: "POST",
endpoint: "/api/users", // Use patterns, not actual paths with IDs
statusCode: 201,
durationMs: 45,
});Qué se rastrea
Método HTTP, patrón de endpoint, código de estado y duración. Los cuerpos de solicitud/respuesta, encabezados, parámetros de consulta y parámetros de ruta nunca se envían. Use patrones de endpoint (/api/users/:id) no rutas reales (/api/users/abc123).
Referencia de API
Todos los endpoints de analíticas aceptan solicitudes GET con parámetros de consulta. Autentíquese con Authorization: Bearer <api_key>.
Ingestión de eventos
POST /api/eventIngerir un evento (web, CLI, MCP o API). Devuelve 202.Los eventos web deben referenciar un sitio registrado y la URL del evento debe coincidir con el dominio del sitio. Los eventos CLI, MCP y API requieren Authorization: Bearer [api_key]; los encabezados forwarded user-agent y client-IP solo se confían después de validar esa clave para el sitio.
{
"site_id": "example.com",
"event_name": "pageview", // or "cli.command", "mcp.tool", "api.request"
"event_source": "web", // "web" | "cli" | "mcp" | "api"
"url": "https://example.com/page",
"pathname": "/page",
"hostname": "example.com",
"referrer": "https://google.com",
"screen_width": 1920,
"timezone": "America/New_York",
"user_id": "optional_user_id",
"properties": { "key": "value" }
}Interés de registro
POST /api/waitlistCapturar inscripciones públicas y enviar un correo a farbour@paraito.ca por cada nuevo contacto. La alerta incluye indicios claramente identificados sobre el nombre y la organización derivados de la dirección, el estado de la cuenta, el interés del mismo dominio y un enlace al registro administrativo. Los duplicados no generan otra alerta.Tiempo real y heartbeat
GET /api/analytics/live?activity=1&cursor=…Conteo de visitantes en vivo. Añade activity=1 para eventos humanos recientes, identificadores de visitantes activos, objetivos y un cursor reutilizable. Acepta ?siteId=...POST /api/heartbeatRecibir heartbeats del navegador para rastreo de visitantes en vivoPOST /api/hAlias sigiloso para /api/heartbeat (resistente a bloqueadores de anuncios)Endpoints de consulta
Todos aceptan ?siteId=...&from=YYYY-MM-DD&to=YYYY-MM-DD. Los endpoints de lista también aceptan limit=all cuando necesita el conjunto completo para paginación o búsqueda.
Los endpoints de tráfico humano excluyen por defecto el tráfico automatizado conocido y detectado con alta confianza. Usa includeBots=true para obtener totales sin filtrar. La respuesta de resumen incluye trafficFilter para que la exclusión sea auditable.
Analíticas web
GET /api/analytics/overviewVisitantes, vistas de página, sesiones + % de cambio y hasPreviousPeriodData para ventanas de comparación vacíasGET /api/analytics/pages?limit=allPáginas por número de visitantes. Agregue limit=all para devolver la lista completa y buscable.GET /api/analytics/sources?limit=allFuentes de tráfico con detección de IAGET /api/analytics/timeseriesTendencia diaria de visitantes/vistas de páginaGET /api/analytics/ai-trafficDesglose de referencias de IA por plataformaGET /api/analytics/bots?limit=allTráfico de bots/rastreadoresGET /api/analytics/countries?limit=allVisitantes por paísGET /api/analytics/devicesDesglose por tipo de dispositivoGET /api/analytics/browsers?limit=allDesglose por navegadorGET /api/analytics/visitors?limit=allLista de visitantes con actividadGET /api/analytics/visitors/[visitorId]Perfil con primera atribución, sesiones, ciclo de vida y cronologíaPATCH /api/analytics/visitors/[visitorId]Actualizar identidad y ciclo de vida (Editor o Administrador)GET /api/analytics/visitors/[visitorId]/propertiesLeer todas las propiedades clave/valor de un visitante, con la fuente que escribió cada unaPATCH /api/analytics/visitors/[visitorId]/propertiesEscribir o eliminar propiedades del visitante; un valor null elimina la clave (Editor o Admin)POST /api/visitor-propertiesEndpoint público usado por setProperties() del tracker; el visitante se deriva de la petición, nunca lo aporta quien llamaGET /api/analytics/events?limit=allEventos personalizadosGET /api/analytics/campaigns?limit=allAtribución automática de URL de campaña (UTM + IDs de clic)GET /api/analytics/campaigns/[campaign]Detalle de una campaña individual — calidad de las visitas (tasa de rebote, duración media, puntuación de calidad frente a la media del sitio), rendimiento de variantes y palabras clave, desgloses por dispositivo, navegador y país, patrón horario, eventos personalizadosGET /api/analytics/campaigns/[campaign]/visitorsLas personas que trajo una campaña, con la página de destino, la variante, el dispositivo, el país y la actividad tras el clic de cada unaGET /api/analytics/keywords?limit=allPalabras clave (utm_term) agregadas por campaña con calidad de las visitas (tasa de rebote, duración media) y atribución de campaña/origenGET /api/analytics/marketingRendimiento de marketing: campañas, páginas de destino, mezcla de canales, tráfico de campaña frente al restoGET /api/analytics/channelsDesglose por canalGET /api/analytics/session-statsEstadísticas de sesionesGET /api/analytics/sessions?limit=allLista de sesionesAnalíticas de CLI
GET /api/analytics/cli-overviewInvocaciones, usuarios, tasa de éxitoGET /api/analytics/cli-commands?limit=allComandos más usadosGET /api/analytics/cli-timeseriesActividad diaria de CLIAnalíticas de MCP
GET /api/analytics/mcp-overviewInvocaciones, usuarios, tasa de éxitoGET /api/analytics/mcp-tools?limit=allHerramientas más usadasGET /api/analytics/mcp-clients?limit=allDesglose por clienteGET /api/analytics/mcp-timeseriesActividad diaria de MCPAnalíticas de API
GET /api/analytics/api-overviewInvocaciones, usuarios, tasa de errorGET /api/analytics/api-endpoints?limit=allEndpoints más usadosGET /api/analytics/api-timeseriesActividad diaria de APIConversion Goals
GET /api/analytics/goalsList all conversion goals with conversions, unique converters, and conversion ratesPOST /api/analytics/goalsCreate a new conversion goal (pageview URL, custom event, outbound link, or download)GET /api/analytics/goals/[goalId]Get human-only current/prior evolution, stable converters, first-touch acquisition, exposed-visitor efficiency, and momentum; includeBots=true opts into automationPATCH /api/analytics/goals/[goalId]Update a conversion goal definitionDELETE /api/analytics/goals/[goalId]Delete a conversion goalGET /api/analytics/goals/suggestAnalyze traffic patterns and suggest high-value conversion targetsBuilder
GET /api/builders/dashboardsListar dashboards personalizados guardados de un sitio y su menú lateral de dashboardsPOST /api/builders/dashboardsCrear un dashboard personalizadoGET /api/builders/dashboards/[dashboardId]Obtener un dashboard personalizadoPATCH /api/builders/dashboards/[dashboardId]Actualizar un dashboard personalizadoDELETE /api/builders/dashboards/[dashboardId]Eliminar un dashboard personalizadoGET /api/builders/reportsListar plantillas de reporte guardadasPOST /api/builders/reportsCrear una plantilla de reporteGET /api/builders/reports/[reportId]Obtener una plantilla de reportePATCH /api/builders/reports/[reportId]Actualizar una plantilla de reporteDELETE /api/builders/reports/[reportId]Eliminar una plantilla de reportePOST /api/builders/reports/previewPrevisualizar el esquema de un reportePosicionamiento en búsqueda y visibilidad IA
GET /api/analytics/brandReporte de visibilidad en posicionamiento de búsquedaGET /api/analytics/brand/historyDatos históricos de posicionamientoGET /api/analytics/brand/compareComparación con competidoresGET /api/analytics/brand/alertsReglas de alerta de posicionamientoGET /api/analytics/brand/exportExportar datos de posicionamientoGET /api/analytics/backlinksPerfil de backlinksGET /api/analytics/ai-mentionsMenciones de marca por chatbots de IAGET /api/analytics/ai-mentions/historyHistorial de menciones de IAPulse AI
GET /api/pulse/insightsAnomalías, tendencias, oportunidades y cambios por dominioGET /api/pulse/healthPuntuación de salud del producto (0-100)GET /api/pulse/briefingBriefing diario o semanalGET /api/pulse/forecastPronóstico de tráfico/usoGET /api/pulse/compareComparación de períodosGET /api/pulse/alertsListar alertas de monitoreoPOST /api/pulse/alertsCrear regla de alertaDELETE /api/pulse/alertsEliminar regla de alertaGET /api/pulse/notificationsObtener notificacionesPATCH /api/pulse/notificationsMarcar notificaciones como leídasPOST /api/pulse/chatChat de Pulse en streaming con respuestas adaptativas vinculadas a visitantesGET /api/pulse/conversationsListar tus hilos de conversación de Pulse para un sitioPOST /api/pulse/conversationsIniciar un nuevo hilo de conversación de PulseGET /api/pulse/conversations/[id]Un hilo con todo su historial de mensajesPATCH /api/pulse/conversations/[id]Renombrar un hilo de conversaciónDELETE /api/pulse/conversations/[id]Eliminar una conversación y sus mensajesGET /api/pulse/screenshotCapturar una página de destino de tu sitio como imagen autenticada del mismo origenGET /api/analytics/ad-spendGasto de campaña junto al tráfico medidoGET /api/integrations/adsListar las cuentas publicitarias conectadas de un sitioPOST /api/integrations/adsConectar una cuenta publicitaria de Meta con un token de usuario del sistemaPOST /api/integrations/ads/syncTraer el gasto ahora en lugar de esperar la sincronización nocturna