GoZap Analytics

API v1

Conecta tu punto de venta en una tarde

Tres llamadas y ya estás acreditando puntos: ping para saber que tu llave sirve, fan/resolve para saber quién trae el QR, y tx para registrar la venta. Todo con curl y nada más.

Esta API nunca crea fans. El alta es siempre el portal cautivo — es lo que hace que el Fan ID tenga un solo origen. Un socio resuelve, referencia y registra; nunca inventa una identidad. Si fan/resolve devuelve fan_no_encontrado, lo correcto en la caja es invitar a la persona a conectarse al WiFi.

Quickstart de 5 minutos

1 Pide una llave de prueba

Escríbenos desde contacto diciendo qué vas a integrar. Te mandamos una llave gz_test_…, que guarda las transacciones para que veas que llegaron pero no mueve el ledger: integrar un viernes no debe poder ensuciarle los saldos a nadie.

Guárdala en el entorno, nunca en el código:

export GZ_KEY=gz_test_ehyjhn45u7d34uk7zq7qc4ugbaskjmt5

2 Comprueba que sirve

curl -X POST https://app.gzanalytics.com/api/v1/ping \
  -H "Authorization: Bearer $GZ_KEY" \
  -H "Content-Type: application/json"

Te contesta quién eres, a qué programa apuntas y qué puedes hacer:

{
  "ok": true,
  "data": {
    "integracion": "Punto de venta",
    "programa": "Fan Pass · Estadio Metropolitano",
    "modo": "vivo",
    "permisos": [
      "fan:leer",
      "tx:escribir"
    ],
    "hora": "2026-08-21T05:15:22.282Z"
  }
}

Si ves "modo": "prueba", estás donde debes. Nadie debería descubrir a media integración que llevaba rato escribiendo en producción.

3 Resuelve al fan

Manda lo que sea que te dio el escáner — Fan ID, token del QR, la URL completa, un código de cupón o el correo. Nosotros lo desciframos.

curl -X POST https://app.gzanalytics.com/api/v1/fan/resolve \
  -H "Authorization: Bearer $GZ_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fan":"GZM26-2T69D"}'

4 Registra la venta

curl -X POST https://app.gzanalytics.com/api/v1/tx \
  -H "Authorization: Bearer $GZ_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id_externo":"TICKET-9001","fan":"GZM26-2T69D","importe":"1,500.50"}'

id_externo es tu identificador de la venta y es obligatorio. Es también la llave de idempotencia: mándalo dos veces y la segunda te contesta "duplicado": true con cero puntos, no un error que tendrías que aprender a interpretar. Cómo funciona.

5 Revisa la bitácora, y pasa a vivo

Cada llamada queda registrada con ruta, código, latencia y un resumen, visible en el panel del venue (⚙️ Configuración → 🔌 Integraciones). Cuando digas "se los mandamos y no llegó", la respuesta está ahí en cinco segundos.

Cuando todo cuadre, pídenos la llave gz_live_…. Tu código no cambia: solo la variable de entorno.

Qué hay disponible hoy

EndpointQué haceEstado
POST /api/v1/ping ¿mi llave sirve? En producción
POST /api/v1/fan/resolve el momento de la venta En producción
POST /api/v1/tx venta cerrada En producción
POST /api/v1/redeem cupón quemado En producción
GET /api/v1/promos qué promociones hay En producción
POST /api/v1/codes depositar inventario En producción
GET /api/v1/roster espejo del padrón En producción

Todo lo de arriba responde hoy — no hay nada diseñado que aún no esté expuesto. Si te falta algo para tu integración, dinos: lo que pidan los socios es lo que decide qué se construye después.