API key
Toda llamada a la API requiere un headerAuthorization: Bearer <API_KEY> donde <API_KEY> es la llave plana que se entregó una sola vez al crearla.
mvk_ seguido de ~96 bits de entropía (32 caracteres base64url). Cada llave es bound a UNA cuenta empresarial y NO es transferible.
Generar una llave
- Iniciá sesión en consola.mouvlatam.com
- Navegá a API keys en el menú lateral
- Click Generar nueva llave
-
Ingresá un label descriptivo (ej.
production-server,staging,reporting-readonly) -
Elegí el scope:
READ(solo lectura) oWRITE(lectura + operaciones financieras)SWAP(solo la Conversión COP→USDT) está disponible únicamente si Mouv habilitó el servicio para tu empresa; si no, la creación responde403 SWAPS_NOT_ENABLED.
-
Opcional: define
allowedIps(string[]), la lista de IPs desde las que se puede usar la llave. Si la defines, una petición desde otra IP recibe403 IP_NOT_ALLOWED. Es recomendado para llavesSWAP: usa las IPs de salida de tus servidores. Si no la defines, la llave funciona desde cualquier IP. Acepta IPs sueltas o rangos CIDR (hasta/24en IPv4 y/48en IPv6), máximo 20 entradas; una lista inválida responde400 INVALID_ALLOWED_IPS. -
Opcional, solo para llaves
SWAP: marca Gestionar billeteras (canManageSwapWallets: trueen la API del dashboard) para que la llave pueda registrar y eliminar billeteras por API. Reglas:- Requiere
allowedIps(si faltan:400 IP_ALLOWLIST_REQUIRED). - Solo con scope
SWAP(otro scope:400 INVALID_SCOPE_COMBINATION). - Requiere que Mouv habilite la función para tu empresa (
403 WALLET_API_NOT_ENABLED). - Máximo 2 llaves vigentes con el permiso por empresa (
409 WALLET_API_KEY_LIMIT; el body traeactiveCountycap). - Las llaves
SWAPy las que tienen este permiso se crean con tu código 2FA. La respuesta de creación incluyecanManageSwapWallets. - Si un administrador marca No la reconozco sobre una billetera registrada por la llave, la llave se revoca.
- Requiere
- La llave plana se muestra una sola vez. Copiala y guardala en tu secret manager — Mouv solo almacena un hash bcrypt, no podemos recuperarla
Almacenamiento seguro
✅ Recomendado
AWS Secrets Manager · HashiCorp Vault · GCP Secret Manager · environment variables en deploy pipelines
❌ Evitá
Repos públicos · Slack messages ·
.env committeado · Frontend bundles · Logs sin redacciónRotación
Recomendamos rotar API keys cada 90 días como mínimo:- Generá una nueva llave con el mismo scope
- Actualizá tu sistema a la nueva llave
- Verificá que las requests funcionan
- Revocá la llave vieja desde el dashboard
Revocación
Click en Revocar sobre cualquier llave en el dashboard. La revocación es instantánea (cero cache de auth, DB read cada request). Una llave revocada retorna401 INVALID_API_KEY.
Auditoría
Cada llave tiene:lastUsedAt— actualizado async en cada request exitosocreatedAt/createdByUserId— quién la generórevokedAt/revokedByUserId— quién la revocó (si aplica)- Audit trail por transacción: el
apiKeyIdqueda persistido en cadaTransactionque la llave originó
Modelo multi-tenant
Tu llave solo puede acceder a datos de tu cuenta. Mouv NO tiene endpoints cliente que retornen datos cross-company, y la API key NO puede ser usada para administrar otras cuentas.
- Cada llave tiene un
companyIdbaked-in (no transferible) - Todos los queries downstream filtran por
companyIdautomáticamente - API keys NO pueden crear otras API keys (anti-privilege-escalation)
- Si tu cuenta es suspendida, la llave retorna
401 COMPANY_INACTIVEaunque sea válida técnicamente