Resumen

API REST de solo lectura para extraer metricas de campanas, push, codigos, puntos, ranking, tiers, journeys y marketplace.

La API de Metricas permite a sistemas externos (BI, data warehouses, dashboards propios) extraer de forma programatica las metricas de tu organizacion. Es de solo lectura y vive bajo el namespace /api/v1/metrics/**.

Base URL

https://southgames.ai/api/v1/metrics

Autenticacion y permisos

Como el resto de la API, requiere los headers Authorization: Bearer <api_key> y X-Org-Id. Ademas, la API key debe tener el scope metrics:read (o ser una key de acceso completo).

Crea una key de solo metricas en Configuracion > Desarrollador > API Keys, eligiendo el permiso "Solo metricas". Una key de metricas no puede llamar endpoints de escritura (p. ej. /points/spend, /games/play).

Ver Autenticacion para mas detalles sobre keys y scopes.

Rate limiting

Cada API key tiene un limite de 120 solicitudes por minuto (ventana fija). Las respuestas exitosas incluyen headers informativos:

HeaderDescripcion
X-RateLimit-LimitMaximo de solicitudes por ventana
X-RateLimit-RemainingSolicitudes restantes en la ventana actual
X-RateLimit-ResetMomento (epoch en segundos) en que se reinicia la ventana

Al superar el limite la API responde 429 con codigo RATE_LIMITED.

Rango de fechas

La mayoria de los endpoints aceptan un rango de fechas comun:

ParametroTipoDescripcion

El rango maximo es de 366 dias. Un rango invalido (from posterior a to, fecha no parseable, tz invalida o rango excedido) devuelve 400 con codigo VALIDATION_ERROR.

Frescura de los datos

Hay dos clases de endpoints:

FrescuraEndpointsDetalle
En vivocampaigns/*, points/summary, tiers/distribution, ranking/leaderboard, storeLeen agregados/contadores ya materializados; reflejan el estado actual.
Rollup diario (freshness: "daily-rollup")points/timeseries, codes/summary, push/summary, journeys/summary, marketplace/summarySe consolidan en un rollup nocturno; pueden tener hasta ~24h de retraso. Los buckets son dias UTC.

Formato de respuesta

Las respuestas exitosas devuelven el objeto de datos directamente (sin envoltorio success), con HTTP 200 y los headers X-RateLimit-*:

{
  "range": { "from": "2026-05-17T00:00:00.000Z", "to": "2026-06-16T00:00:00.000Z" },
  "totals": { "sessions": 12840, "winRate": 40 }
}

Los errores devuelven { error, code } con el HTTP correspondiente:

{ "error": "Limite de solicitudes excedido. Intenta de nuevo mas tarde.", "code": "RATE_LIMITED" }

Codigos de error

CodigoHTTPDescripcion
VALIDATION_ERROR400Parametros de query invalidos (rango/fecha/tz)
INSUFFICIENT_SCOPE403La API key no tiene el scope metrics:read
FEATURE_NOT_AVAILABLE403La funcionalidad no esta en tu plan (p. ej. metricas de tienda)
RATE_LIMITED429Limite de solicitudes excedido

Tambien aplican los errores de autenticacion comunes (MISSING_API_KEY, INVALID_API_KEY, etc.).

Endpoints

MetodoRutaDescripcion
GET/metrics/campaigns/summaryTotales de sesiones/juego del periodo + tendencia
GET/metrics/campaigns/timeseriesSerie diaria de sesiones
GET/metrics/campaigns/detailStats historicas de una campana
GET/metrics/points/summaryEconomia de puntos (emitidos/gastados/saldo)
GET/metrics/points/timeseriesSerie diaria de puntos emitidos/gastados
GET/metrics/codes/summaryCodigos emitidos vs canjeados + tasa
GET/metrics/push/summaryEntregas push (delivered/failed/clicks)
GET/metrics/tiers/distributionDistribucion de clientes por tier
GET/metrics/ranking/leaderboardLeaderboard (top-N o "mi ranking")
GET/metrics/journeys/summaryInscripciones diarias a journeys
GET/metrics/marketplace/summaryCompras y revenue del marketplace
GET/metrics/storeMetricas de tienda (instalaciones, rating, etc.)