Selecciona tu idioma:
Cómo generar correctamente un token de Instagram en Meta: guía real 2026 con los errores que nadie documenta

Cómo generar correctamente un token de Instagram en Meta: guía real 2026 con los errores que nadie documenta

Después de horas peleándonos con la interfaz de Meta Developers, esta es la guía definitiva que sí funciona hoy para obtener un token válido que permita a una plataforma de mensajería recibir y enviar mensajes de Instagram. Con los errores reales, los prefijos de token que indican problemas, y el único camino que devuelve un token utilizable.

La mayoría de guías sobre tokens de Instagram en Meta están desactualizadas. Te llevan por una pantalla llamada “API Setup” que genera tokens con prefijo IGAAQ.... Esos tokens no funcionan. La API que los emite está oficialmente muerta desde el 4 de diciembre de 2024. Pero la UI de Meta sigue permitiéndote generarlos, lo que convierte este proceso en una trampa legacy que hace perder horas a cualquiera que integre Instagram por primera vez.

Este artículo documenta el único camino que funciona hoy para obtener un token válido de Instagram vía Meta, con los errores reales que nos encontramos integrando ChatBridge (plataforma SaaS de mensajería multicanal).

La regla de oro antes de empezar:

Si tu token empieza por IGAA, está muerto. No lo uses.

Si empieza por IGQ, funciona pero con limitaciones (solo apps consumer sin Page FB).

Si empieza por EAA, es el correcto para casos empresariales.

 

El problema inicial: el token IGAA que no funciona

El camino más obvio que sigue cualquiera al empezar es este: en developers.facebook.com, en tu app, navegas a Productos → Instagram → “API Setup” (URL acabada en /instagram-business/API-Setup/). En la sección “1. Generar identificadores de acceso” pulsas el botón “Generar identificador”. Meta te devuelve un token de unos 180 caracteres que empieza por IGAAQ....

Intentas validarlo contra Graph API y recibes:

{
  "error": {
    "message": "Invalid OAuth access token - Cannot parse access token",
    "type": "OAuthException",
    "code": 190
  }
}

El token no funciona en ninguna llamada posterior. Ni GET /me, ni GET /{instagram_account_id}, ni envío de mensajes.

La causa: ese botón dentro de “API Setup” emite tokens de la Instagram Basic Display API, que Meta desactivó oficialmente el 4 de diciembre de 2024. La UI sigue permitiéndote generar el token (es una trampa legacy conocida), pero esos tokens no funcionan contra ninguna API activa.

 

Los 3 prefijos de token y qué significan

Prefijo API Estado Uso recomendado
IGAAQ... / IGAA... Instagram Basic Display API Muerta desde 04/12/2024 Nunca
IGQ... Instagram Login API (directa) Funciona con limitaciones Apps consumer sin Page FB
EAA... Facebook Graph API (Page/User Token) Correcta para empresarial Producción

Para cualquier plataforma que necesite gestionar mensajes de Instagram Business como SaaS, el camino es Instagram Graph API vía Page de Facebook con Facebook Login. El token que debes obtener tiene formato EAA....

 

Requisitos previos: sin esto nada funciona

Antes de tocar nada en Meta for Developers, verifica estos requisitos. Si falta alguno, ningún paso posterior va a funcionar por mucho que lo intentes.

1. Cuenta de Instagram Business o Creator. No Personal. En la app de Instagram: Perfil → Menú → Configuración y actividad → Tipo de cuenta y herramientas → Cambiar a cuenta profesional.

2. Instagram vinculada a una Página de Facebook. En Instagram: Configuración → Compartir en otras apps → Facebook → vincular con una Página (no un perfil personal). Si no tienes Página, crea una gratis en facebook.com/pages/create.

3. Debes ser administrador de esa Página desde tu cuenta personal de Facebook.

4. App de Meta Developers con “Facebook Login” añadido (no basta con “Instagram”). Puede ser “Facebook Login” o “Facebook Login for Business”.

5. App en modo “Live” / “En producción” (toggle arriba a la derecha en Meta for Developers) para que los webhooks reciban eventos de usuarios que no sean admins o testers.

 

Proceso paso a paso: la vía que funciona

Paso 1: Ir al Graph API Explorer

Abre https://developers.facebook.com/tools/explorer/. Arriba a la derecha selecciona tu Meta App, deja User Token por ahora, y elige Graph API version v23.0 (o la más reciente que soporte tu app).

Paso 2: Seleccionar los permisos (scopes)

Pulsa “Add a Permission” y marca al menos estos permisos esenciales para mensajería:

pages_show_list, pages_messaging, pages_read_engagement, pages_manage_metadata, instagram_basic, instagram_manage_messages.

Opcionales útiles: instagram_content_publish (si además vas a publicar posts) y business_management (si vas a gestionar Business Managers).

Paso 3: Generar el token

Pulsa “Generate Access Token”. Se abre un popup pidiéndote confirmar tu cuenta de Facebook, elegir qué Páginas quieres dar acceso a la app, y elegir qué cuentas de Instagram (las vinculadas a esas Páginas). Revisa permisos y pulsa Continuar.

Vuelves al Explorer con un token nuevo de 200-250 caracteres que empieza por EAA. Este es el User Access Token. No es aún el Page Token que necesitas al final, pero sirve como puente.

Paso 4: Verificar el token

En el cuadro de URL pon me?fields=id,name y pulsa Submit. Si ves tu ID y nombre, el token funciona y está vinculado a tu cuenta personal.

Paso 5: Obtener las Páginas y sus Page Access Tokens

Cambia la URL a:

me/accounts?fields=id,name,access_token,instagram_business_account

La respuesta te dará algo así:

{
  "data": [
    {
      "id": "230560936975021",
      "name": "ChatBridge",
      "access_token": "EAASPZB3aftzkBROOsGC8YzrrCAKZCl...",
      "instagram_business_account": {
        "id": "17841441438297868"
      }
    }
  ]
}

Aquí hay 3 datos críticos que debes guardar:

Dato Qué es Ejemplo
id de la Página Page ID (para Messenger) 230560936975021
access_token Page Access Token (este es el bueno) EAASPZB3aftzkBRO...
instagram_business_account.id Instagram Account ID 17841441438297868

El Page Access Token es el que debes usar en la configuración del canal de Instagram, no el User Access Token del paso 3.

Paso 6: Verificar el Page Token

Vuelve al Explorer. Arriba a la derecha, en lugar de “User Token”, pega manualmente el access_token de la página. En la URL pon:

17841441438297868?fields=id,username

Si devuelve el ID y username de tu cuenta de Instagram, el Page Token funciona contra la cuenta de Instagram. Este es el token definitivo.

Paso 7: Extender el token a larga duración

Los tokens del Explorer por defecto duran 1-2 horas. Para convertirlos a larga duración (60 días): abre Access Token Debugger, pega el token, pulsa Debug, y abajo “Ampliar identificador de acceso”. Introduce tu contraseña de Facebook y Meta te genera un token extendido de 60 días.

 

Hacer el token permanente: System User

Los Page Tokens de 60 días no valen para producción seria porque caducan y hay que renovarlos manualmente. La forma profesional es generar un System User access token, que no caduca nunca.

En Meta Business Manager: Ajustes del negocio → Usuarios del sistema → Agregar. Crea uno nuevo o usa existente. Dale rol de Administrador. Asigna activos: Páginas (la vinculada a Instagram, con Control total) y Apps (tu app de Meta Developers, Control total).

Con el System User seleccionado, pulsa “Generar nuevo token”. Selecciona tu app, caducidad “Nunca”, y los mismos permisos del Paso 2. Copia el token inmediatamente: solo se muestra una vez. Este token es permanente y el que debes usar en producción. También empieza por EAA.

 

Configurar el webhook en Meta

Para que los mensajes entrantes lleguen a tu servidor, Meta tiene que enviarlos vía webhook.

En Meta for Developers → tu app → Productos → Instagram → Configuración de la API con el inicio de sesión de Facebook (NO “con el inicio de sesión de Instagram”). En la sección “Configurar Webhooks”:

URL de devolución de llamada: la URL de tu plataforma. Por ejemplo https://chatbridge.io/api/webhooks/instagram/17841441438297868.

Atención: en algunos flujos Meta sustituye el ID por el app_id de Instagram (no el instagram_business_account.id). Tu backend debe resolver el canal por entry[0].id del payload JSON, no solo por el path.

Identificador de verificación: un string aleatorio que tú eliges y guardas también en tu backend (es el que tu servidor valida en el GET de verificación de Meta). Pulsa “Verificar y guardar”. No marques “Asociar certificado de cliente” (es para mTLS enterprise, no aplica a integraciones normales).

En “Campos de webhook” pulsa “Suscribirse” en al menos: messages, messaging_postbacks, messaging_seen y message_reactions.

Puedes probar el webhook con el botón “Test” al lado de messages. Meta envía un payload simulado a tu URL. Si no llega, revisa que tu URL responde HTTP 200 y que el verify token coincide.

 

7 errores comunes y cómo evitarlos

Error 1: Pensar que “API Setup” y “API Setup with Facebook Login” son lo mismo

Son dos pantallas distintas dentro del apartado Instagram de Meta for Developers:

Pantalla URL acabada en Token Funciona
“API Setup” (sin FB Login) /API-Setup/ IGAA... (Basic Display) API muerta
“API Setup with Facebook Login” /API-Setup-with-Facebook-login/ EAA... vía proceso distinto Correcta
“API Setup with Instagram Login” /API-Setup-with-Instagram-login/ IGQ... (IG Login API) Solo apps sin FB Page

Siempre usa “API Setup with Facebook Login” para casos empresariales con Página de Facebook vinculada.

Error 2: Usar User Access Token para enviar mensajes

El User Token sirve para verificar tu identidad y listar tus Páginas con /me/accounts, pero no sirve para enviar mensajes en nombre de una Página. Para enviar mensajes hay que usar el Page Access Token (el que se obtiene dentro de me/accounts en el campo access_token).

Error 3: Almacenar un token IGAA y esperar que funcione

Si tu plataforma recibe como input un token IGAA..., rechaza la entrada con error claro. Ningún camino recupera esos tokens. Son residuos de una API muerta.

Error 4: No suscribirse a los campos del webhook

Configurar la URL del webhook no es suficiente. Hay que también suscribirse explícitamente a los campos (messages, etc.) y asociar la cuenta de Instagram concreta a esa suscripción. Si no, la URL está verificada pero nunca llega nada.

Error 5: Intentar usar graph.instagram.com con un token EAA

Los tokens EAA (Page / User) van contra graph.facebook.com, no contra graph.instagram.com. Llamar al endpoint equivocado da “Cannot parse access token” aunque el token sea válido.

Prefijo token Endpoint correcto
EAA https://graph.facebook.com/v23.0/...
IGQ https://graph.instagram.com/v23.0/...

Error 6: App en modo Desarrollo esperando webhooks de cualquier usuario

En modo desarrollo, los webhooks solo funcionan para usuarios con rol en la app. Para recibir eventos de cualquier usuario público, la app tiene que estar en “En producción” / “Live”.

Error 7: Confundir app_id con instagram_account_id

Son tres IDs totalmente distintos:

ID Qué es Ejemplo
app_id Identifica la app en Meta 1284210096584505
instagram_account_id Identifica tu cuenta de IG 17841441438297868
page_id Identifica la Página de FB 230560936975021

Meta en algunos flujos usa uno y en otros otro. Tu backend debe poder resolver el canal correcto aunque Meta te mande el webhook con un identificador inesperado. Recomendación: identifica el canal por entry[0].id del payload JSON además de por el path.

 

App Review y siguientes pasos para producción

Una vez configurado el webhook, cuando un usuario real escribe a tu cuenta de Instagram, debería llegar al inbox de tu plataforma. Si intentas responder desde tu plataforma y recibes este error:

{
  "error": {
    "message": "(#3) Application does not have the capability to make this API call.",
    "code": 3
  }
}

Es normal en modo desarrollo / Standard Access. Significa que instagram_manage_messages solo puede responder a usuarios que son Administrador, Desarrollador o Tester de tu app. Para responder a usuarios públicos, necesitas Advanced Access vía App Review.

Requisitos para App Review

App en modo Live, política de privacidad pública accesible vía HTTPS sin login, términos de servicio públicos, URL de eliminación de datos, vídeo de 3-5 minutos demostrando el flujo completo (usuario envía mensaje → tu app lo recibe → agente responde → usuario recibe respuesta). Puede ser en español con subtítulos en inglés quemados en el vídeo (no .srt externo, no auto-generados).

También: justificación escrita de 200-500 palabras en inglés explicando uso real, test credentials funcionales para el reviewer (cuenta + workspace preconfigurado). Tiempo de revisión: 3-7 días laborables. Tasa de rechazo en primer intento: 60-70%. Motivos comunes de rechazo: vídeo sin subtítulos en inglés, política detrás de login, reviewer no puede reproducir el flujo.

Business Verification

En Business Manager → Centro de seguridad. Documentos necesarios: escrituras de empresa, DNI admin, dominio web verificado (DNS TXT), dirección física. Proceso: 1-3 días. Obligatorio para producción seria y para desbloquear límites altos de API.

Endpoint de envío de mensajes

POST https://graph.facebook.com/v23.0/{instagram_business_account_id}/messages
Authorization: Bearer {Page_Access_Token}
Content-Type: application/json

{
  "recipient": {"id": ""},
  "message": {"text": "Hola"},
  "messaging_type": "RESPONSE"
}

Arquitectura multi-cliente para SaaS

Si ofreces esto como SaaS, en lugar de que cada cliente pase por todo este proceso manualmente, implementa OAuth Facebook Login en tu plataforma. El cliente pulsa un botón “Conectar con Facebook”, flujo OAuth estándar de Meta, tu backend intercambia code por access_token, llama a /me/accounts para listar las Páginas, el cliente elige cuál conectar, y suscribes el webhook automáticamente desde backend con POST /{page_id}/subscribed_apps. Resultado: onboarding de 2 minutos para el cliente. Es lo que hacen Manychat, Chatfuel y el resto.

 

Por qué Meta lo puso así: el contexto histórico

Meta tiene un ecosistema con múltiples APIs solapadas por razones históricas. La Instagram Basic Display API (2019-2024) estaba pensada para apps de consumo que mostraban fotos, ya muerta. La Instagram Graph API (2018-hoy) está pensada para empresas con Páginas de FB, es la que hay que usar. La Instagram Login API / Messaging API (2024+) es una API directa sin necesidad de Page FB para apps consumer con messaging, más moderna pero con limitaciones. Y la WhatsApp Cloud API (2022-hoy) está completamente separada con su propio sistema de onboarding (Embedded Signup) y facturación (pay-per-conversation).

La UI de Meta for Developers no distingue claramente cuál estás usando cuando pulsas un botón, y eso es la causa del 90% de los quebraderos de cabeza. La regla de oro para empresarial: usa siempre Graph API vía Facebook Login.

 

Resumen final en tabla

Elemento Valor correcto Valor que NO sirve
Prefijo token EAA... IGAA...
API Instagram Graph API vía Page FB Instagram Basic Display
Endpoint envío graph.facebook.com/v23.0 graph.instagram.com (con EAA)
Pantalla configuración “API Setup with Facebook Login” “API Setup” a secas
Cuenta IG requerida Business o Creator + vinculada a Page FB Personal o no vinculada
Token para producción System User token (nunca caduca) User token (caduca 60d)
Modo app “En producción” / “Live” “En desarrollo”
Responder a público Advanced Access vía App Review Solo Standard Access

El camino real resumido:

Graph Explorer → seleccionar permisos → Generate Token → EAA (User)

→ /me/accounts → obtener Page Access Token → EAA (Page)

→ Extender a 60d en el Debugger (o mejor: generar System User token permanente)

→ Configurar webhook (URL + verify token + suscribir campos)

→ Solicitar App Review para responder a usuarios públicos

 

Última verificación: 16 de abril de 2026. La interfaz de Meta Developers está sujeta a cambios: si algún nombre de pantalla ha cambiado, el proceso conceptual sigue siendo el mismo: Graph API Explorer → Facebook Login → Page Access Token → webhook suscrito → App Review para producción pública.

Comentarios (0)

No hay comentarios todavía.

Dejar un Comentario

Tu email se usa para moderación anti-spam y no se muestra públicamente.
Guías Integraciones