← Blog

·

Token permanente de la API de WhatsApp con usuario del sistema

Actualizado el 25/10/2026

El token permanente de la API de WhatsApp es un token de acceso de usuario del sistema, creado en la configuración del portafolio comercial de Meta, con los permisos whatsapp_business_messaging, whatsapp_business_management y business_management. Al generarlo, eliges si nunca vence o si dura 60 días y debe renovarse. Es el que debe ir a producción, en lugar del token temporal del panel de la app, que vence en pocas horas.

Esta guía muestra el paso a paso en el panel, los activos que el usuario del sistema necesita, cómo generar, renovar y revocar el token por API y las buenas prácticas de seguridad.

Los tres tipos de token de la API de WhatsApp

La documentación de tokens de acceso de Meta distingue tres tipos:

TipoPara quiénDuración
Token de usuario (user access token)Desarrollo y pruebas; es el que aparece en el panel «Configuración de la API» de la appVence rápido y hay que generarlo de nuevo cada pocas horas
Token de usuario del sistema (system user access token)Empresa que accede a sus propios datos, integración directaLarga duración; nunca vence o 60 días, según lo que elijas
Token de integración comercial (business integration system user)Proveedores de tecnología y socios que conectan clientes con el registro insertado (Embedded Signup)Se obtiene intercambiando el código del registro insertado

Si integras tu propia empresa directo con la Cloud API, necesitas el segundo. Cuando tu sistema empieza a devolver el error 190 (token vencido) o 0 (no se pudo autenticar) unas horas después de salir a producción, casi siempre es porque el token temporal terminó en producción. Estos códigos están en errores de la API de WhatsApp.

Antes de empezar

Necesitarás:

  • acceso de administrador al portafolio comercial (antes Business Manager);
  • una app en el panel de desarrolladores de Meta con el producto WhatsApp agregado;
  • la cuenta de WhatsApp Business (WABA) y el número ya creados en el portafolio.

Si todavía no llegaste a esa etapa, el artículo cómo obtener acceso a la API de WhatsApp cubre portafolio, app, WABA y número.

¿Quieres probar mientras lees? Crea tu cuenta en Vectalk y envía el primer mensaje por la API oficial. Crear cuenta gratis →

Paso a paso: crear el usuario del sistema y generar el token

Los pasos siguen la documentación oficial. Los nombres de los menús pueden variar un poco según el idioma y la versión de Meta Business Suite.

  1. Abre la Configuración del negocio del portafolio y haz clic en Usuarios del sistema.
  2. Haz clic en + Agregar, ponle un nombre (ej.: integracion-whatsapp-prod) y elige el rol Empleado o Administrador.
  3. Haz clic en el nombre del usuario creado y luego en Asignar activos.
  4. Selecciona tu app, otorga el permiso Administrar app y confirma.
  5. Recarga la página hasta que la app aparezca con control total. Meta advierte que la asignación puede tardar unos minutos.
  6. En el mismo usuario del sistema, haz clic en Generar token, selecciona la app y elige la preferencia de vencimiento.
  7. Marca los tres permisos: business_management, whatsapp_business_management y whatsapp_business_messaging.
  8. Haz clic en Generar token y copia el valor. Solo se muestra una vez.

No olvides dar acceso a la cuenta de WhatsApp

Generar el token con los permisos correctos no alcanza. El usuario del sistema también necesita acceso parcial o total a los activos de WhatsApp que va a consultar. Según la documentación, muchos endpoints exigen ese acceso tanto en la cuenta de WhatsApp como en la cuenta de mensajes vinculada, y sin él la API devuelve el error con código 200.

En Meta Business Suite, ve a Configuración → Cuentas, abre la cuenta de WhatsApp, entra en la pestaña Personas, haz clic en + Agregar personas, selecciona el usuario del sistema y elige el nivel de acceso. Repite para la cuenta de mensajes. Meta aclara que en Business Suite una asignación no se propaga a la otra cuenta: asigna las dos de forma explícita.

¿Empleado o administrador?

Un usuario del sistema administrador tiene acceso total a todas las cuentas del portafolio por defecto. Un empleado solo accede a lo que se le asignó. Para una integración, la opción más segura es empleado, con acceso solo a la app y a las cuentas de WhatsApp necesarias. La descripción general de usuarios del sistema recomienda crear un usuario del sistema por tipo de acceso y proteger con cuidado el token del administrador, porque un token filtrado con alcance reducido hace menos daño.

Vencimiento: «nunca» o 60 días

Al generar el token, Meta ofrece dos opciones, descritas en Install Apps, Generate, Refresh, and Revoke Tokens:

OpciónValidezRenovaciónCuándo usarla
Sin vencimientoNunca vence por tiempoNo hace faltaCuando aceptas el riesgo de filtración a cambio de no tener rutina de renovación
Vence en 60 días60 días desde la generación o la última renovaciónObligatoria dentro del plazoCuando quieres limitar el impacto de un token filtrado. Es la opción que Meta marca como recomendada

El nombre «token permanente» viene de la primera opción. Aun así, puede dejar de funcionar por otros motivos: el usuario del sistema pierde acceso a la app, se retiran los permisos o alguien revoca el token. Trata la falla de autenticación como algo que se monitorea, no como algo imposible.

Con la opción de 60 días, si el token no se renueva a tiempo, se pierde y hay que generar otro. Pon la renovación en un job programado, no en un recordatorio de calendario.

Generar, renovar y revocar por API

Todo lo que hace el panel también se puede hacer con llamadas a la Graph API, lo que sirve para automatizar la rotación.

Generar

El usuario del sistema debe tener la app instalada (POST /SYSTEM_USER_ID/applications). Después, el token se genera en el endpoint access_tokens, con set_token_expires_in_60_days=true para el token de 60 días:

curl -X POST "https://graph.facebook.com/vXX.X/SYSTEM_USER_ID/access_tokens" \
  -d "business_app=APP_ID" \
  -d "scope=business_management,whatsapp_business_management,whatsapp_business_messaging" \
  -d "set_token_expires_in_60_days=true" \
  -d "appsecret_proof=APPSECRET_PROOF" \
  -d "access_token=TOKEN_ACTUAL"

El appsecret_proof es el HMAC-SHA256 del token, con la clave secreta de la app como llave. Demuestra que la llamada sale de tu servidor:

import crypto from 'node:crypto';

const appsecretProof = crypto
  .createHmac('sha256', process.env.META_APP_SECRET)
  .update(process.env.META_ACCESS_TOKEN)
  .digest('hex');

Renovar

La renovación usa el endpoint oauth/access_token con grant_type=fb_exchange_token. La respuesta trae el nuevo access_token y expires_in en segundos:

curl -G "https://graph.facebook.com/vXX.X/oauth/access_token" \
  -d "grant_type=fb_exchange_token" \
  -d "client_id=APP_ID" \
  -d "client_secret=APP_SECRET" \
  -d "set_token_expires_in_60_days=true" \
  -d "fb_exchange_token=TOKEN_ACTUAL"

Revocar

curl -G "https://graph.facebook.com/vXX.X/oauth/revoke" \
  -d "client_id=APP_ID" \
  -d "client_secret=APP_SECRET" \
  -d "revoke_token=TOKEN_ANTERIOR" \
  -d "access_token=TOKEN_NUEVO"

La respuesta exitosa es {"success":"true"}. La app del client_id debe ser la misma de los dos tokens.

Rotación sin cortar la integración

Meta describe una rotación sin tiempo de inactividad en tres pasos:

  1. Renovar: genera el token nuevo. El anterior sigue válido hasta que vence.
  2. Publicar: actualiza el token en el gestor de secretos y haz el deploy o recarga la configuración.
  3. Revocar: solo después de confirmar que todo usa el token nuevo, revoca el anterior. La revocación es inmediata.

Un job semanal que revisa la antigüedad del token y lo renueva cuando pasa de, por ejemplo, 45 días deja margen para deploys fallidos.

Buenas prácticas de seguridad

  • Guárdalo en un gestor de secretos o variable de entorno. Nunca en un repositorio, planilla o mensaje de chat.
  • No interpretes el formato del token. Meta pide tratarlo como un valor opaco y guardarlo en un campo de longitud variable, sin tamaño máximo fijo.
  • Envíalo en el encabezado Authorization: Bearer, nunca en la URL, donde termina en los logs.
  • Alcance mínimo. Un usuario del sistema empleado por integración, con acceso solo a las cuentas necesarias.
  • Protege la clave secreta de la app. Con ella y un token se pueden renovar y revocar tokens.
  • Revisa el token en el depurador de tokens de acceso de Meta, que muestra permisos y vencimiento.

El artículo seguridad de la cuenta business de WhatsApp cubre el PIN, los accesos al portafolio y las estafas.

Cómo funciona con Vectalk

En Vectalk no necesitas crear un usuario del sistema ni administrar el token de Meta. Al conectar el número con el registro insertado, Vectalk importa el phone_number_id, el waba_id y el token de acceso, según la guía rápida. Tu aplicación usa un token de Vectalk:

  • Token de organización: accede a todas las instancias y exige phone_number_id al enviar.
  • Token de instancia: limitado a un número, necesario para multimedia y plantillas.

Según la documentación de tokens, los tokens de Vectalk no vencen automáticamente, valen hasta que se revocan, se muestran una sola vez y se guardan como hash. También se pueden crear y revocar por API, con POST /api/auth/api-tokens y DELETE /api/auth/api-tokens/{id}, descritos en Autenticación. La misma rutina de rotación aplica: crea el nuevo, publica, revoca el anterior.

Para empezar, crea tu cuenta en apps.vectalk.com.br/register. El siguiente paso natural es enviar tu primer mensaje.

Preguntas frecuentes

¿Sirve el token temporal del panel de la app para producción?

No. Es un token de usuario pensado para pruebas y vence en pocas horas. Para producción, usa un token de usuario del sistema.

¿El token permanente de WhatsApp realmente nunca vence?

Si eliges la opción sin vencimiento, no vence por tiempo. Pero puede invalidarse si el usuario del sistema pierde el acceso a la app o a los permisos, o si se revoca.

¿Qué permisos necesita el token?

business_management, whatsapp_business_management y whatsapp_business_messaging. Además, el usuario del sistema necesita acceso a la cuenta de WhatsApp y a la cuenta de mensajes.

¿Por qué recibo el error 200 con el token correcto?

Normalmente porque el usuario del sistema no recibió acceso parcial o total a los activos de WhatsApp. Asigna la cuenta de WhatsApp y la cuenta de mensajes al usuario del sistema.

Perdí el token. ¿Puedo verlo de nuevo?

No. El token solo aparece al generarlo. Genera uno nuevo y revoca el anterior.


Fuentes oficiales consultadas el 25/10/2026: Access tokens (WhatsApp Business Platform), Install Apps, Generate, Refresh, and Revoke Tokens, Descripción general de usuarios del sistema, Códigos de error de la Cloud API, Guía rápida de Vectalk, Documentación de Vectalk: tokens, Documentación de Vectalk: autenticación.

Prueba hoy la API oficial de WhatsApp

Crea tu cuenta, genera el token y envía el primer mensaje con la guía de la documentación. Los mismos payloads y webhooks de la Cloud API de Meta.