Visión general del flujo

LICENSE_BASE_URL del .env del producto (predeterminado: https://license.evolutionfoundation.com.br).
Paso 1 — Iniciar el registro
Cuando la instancia detecta que no hayapi_key guardada localmente, llama:
Respuesta (200):
Paso 2 — Mostrar la URL al operador
La instancia muestraregister_url al operador. Patrones aceptados:
- Web UI / Manager — botón “Activar Licencia” abre el link en el navegador
- Terminal / CLI — imprime la URL y queda esperando
- QR Code — en despliegues headless, genera un QR para escanear
Paso 3 — Qué ocurre en el navegador
El servidor de licencia renderiza la página de registro con la identidad visual de Evolution. El operador elige entre:- Magic Link — informa nombre + email, recibe link de confirmación por email
- Google OAuth — login con cuenta Google
- GitHub OAuth — login con cuenta GitHub
authorization_code interno. Este flujo es transparente para la instancia — solo necesita hacer polling.
Paso 4 — Polling del estado
Mientras el operador resuelve el login, la instancia hace polling:- Intervalo de polling entre 3 y 5 segundos (no más rápido)
- Timeout total de 30 minutos
- Al recibir
completed, persistirapi_keyen ubicación segura (config cifrada, secret manager, etc.)
Paso 5 — Activar la instancia
Con laapi_key en mano, la instancia llama al endpoint de activación:
La geolocalización (
operator_country, operator_city) es detectada automáticamente desde la IP de la request. La instancia no envía esa información.Paso 6 — Heartbeat periódico
Tras la activación, la instancia envía heartbeats cada 5 minutos:telemetry_bundle es JSON libre. Los campos extraídos automáticamente por el servidor están detallados en Telemetría.
Paso 7 — Desactivación (opcional)
En apagado controlado (uninstall, container stop intencional), se recomienda:Autenticación HMAC
Todas las llamadas a/v1/activate, /v1/heartbeat y /v1/deactivate requieren el header X-Signature con HMAC-SHA256 del body.
Algoritmo:
- Serializar el body como JSON
- Calcular
HMAC-SHA256(body, api_key) - Convertir a hexadecimal
- Enviar en el header
X-Signature
Ejemplo Python
Ejemplo Node.js
Ejemplo Go
Códigos de error
Checklist de integración
Para quien implementa la activación en un fork o producto derivado:- Generar y persistir
instance_id(UUID v4) en la primera ejecución - Implementar
POST /v1/register/initcuando no hayapi_key - Mostrar
register_urlal operador (UI, terminal o QR) - Polling
GET /v1/register/statuscada 3–5s - Persistir
api_keyen ubicación segura (no en texto plano) - Implementar HMAC-SHA256 para todas las llamadas firmadas
-
POST /v1/activateal iniciar el servicio -
POST /v1/heartbeatcada 5min conmessages_sent+features -
POST /v1/deactivateen apagado controlado - Manejar errores (token expirado, key suspendida, límite de instancias)
- Backoff exponencial en fallos transitorios de red
Modo offline y degradación
Si el servidor de licencia es inaccesible:- La instancia sigue funcionando normalmente
- Los heartbeats fallan silenciosamente (sin romper la aplicación)
- Tras reconectarse, el siguiente heartbeat retoma el ciclo