Instagram Messaging API vs Graph API — diagrama de Venn que muestra la Messaging API como un subconjunto dentro de la Graph API, mapa de endpoints con permisos, matriz de decisión por caso de uso
En esta guía: La respuesta en una frase · Qué cubre la Instagram Graph API · Qué significa específicamente "Instagram Messaging API" · Mapa de todas las categorías de endpoints · Permisos para cada una · Suscripciones de webhook · La antigua API obsoleta · Matriz de decisión por caso de uso

La respuesta en una frase

✓ Respuesta directa
La "Instagram Messaging API" no es una API independiente: es un subconjunto específico de endpoints, permisos y suscripciones de webhook dentro de la Instagram Graph API enfocado exclusivamente en los mensajes directos (DM). Ambas usan la misma URL base (graph.facebook.com/v21.0), el mismo sistema de autenticación y la misma configuración de App. "Instagram Messaging API" es la etiqueta de marketing que Meta da a las capacidades específicas de DM dentro de la Graph API más amplia.

La confusión surge porque Meta comercializa diferentes capacidades de API bajo distintos nombres de producto: "Instagram Graph API" para la plataforma completa, "Instagram Messaging API" o "Messenger API for Instagram" para el subconjunto específico de DM. Las personas desarrolladoras que buscan "Instagram Messaging API" a menudo encuentran documentación que parece describir un sistema completamente distinto. No lo es. Configuras una sola Facebook App, obtienes un único conjunto de tokens y usas endpoints y permisos diferentes según lo que estés construyendo.

¿Qué es la Instagram Graph API?

La Instagram Graph API es la API oficial y completa para cuentas de Instagram Business y Creator. Es la única vía legítima para acceder de forma programática a los datos y la funcionalidad de Instagram: desde publicar contenido hasta leer analíticas o responder DMs, todo fluye a través de ella.

La Graph API cubre seis grandes áreas de capacidades:

  • Gestión de contenido — crea, publica y recupera posts, reels, historias y carruseles en nombre de una cuenta de negocio
  • Insights de medios — lee impresiones, alcance, engagement y datos de audiencia para medios individuales y métricas a nivel de cuenta
  • Comentarios — lee comentarios en posts, responde, elimina y oculta comentarios
  • Búsqueda por hashtag — busca posts públicos por hashtag (con límites de tasa importantes)
  • Menciones — detecta cuándo otras cuentas mencionan o etiquetan a tu cuenta de negocio en posts o historias
  • Mensajes directos — recibe y envía DMs, gestiona respuestas a historias y menciones en historias (este es el subconjunto de la "Messaging API")

Las seis áreas forman parte de la misma Graph API. La URL base, el sistema de autenticación, el proceso de App Review y el tipo de token son idénticos en todas ellas. Las diferencias están en qué endpoints llamas, qué permisos solicitas y a qué campos de webhook te suscribes.

¿Qué es específicamente la "Instagram Messaging API"?

Cuando Meta (y la mayoría de la documentación de terceros) se refiere a la "Instagram Messaging API" o "Messenger API for Instagram", se refiere al subconjunto de la Graph API que permite:

  • Recibir DMs — eventos de webhook cuando los usuarios envían un mensaje directo a tu cuenta de negocio
  • Enviar DMs — llamar a POST /{ig-user-id}/messages para enviar una respuesta al IGSID de un usuario
  • Respuestas a historias — eventos de webhook cuando los usuarios responden a tu historia mediante DM (llegan con message.reply_to.story)
  • Menciones en historias — eventos de webhook cuando los usuarios etiquetan a tu cuenta en su historia (llegan como un evento de referral)
  • Reacciones con emoji — eventos de webhook cuando los usuarios reaccionan a uno de tus mensajes
  • Confirmaciones de lectura — eventos de webhook cuando los usuarios leen tus mensajes

Este es un subconjunto enfocado, solo de DMs, de todo lo que puede hacer la Graph API completa. Requiere permisos de mensajería específicos (instagram_manage_messages), suscripciones de webhook específicas (messages, messaging_referrals) y su propio endpoint de envío. Pero corre sobre la misma infraestructura, la misma autenticación y la misma App que el resto.

El diagrama de Venn: la Instagram Graph API es el círculo exterior grande. La Instagram Messaging API es un círculo más pequeño contenido por completo dentro del primero. Toda capacidad de la Messaging API forma parte de la Graph API. Pero la Graph API tiene muchas capacidades que no forman parte de la Messaging API (publicación de contenido, analíticas, búsqueda por hashtag, etc.).

Mapa completo de endpoints: Graph API vs Messaging API

Aquí tienes un mapa completo de los endpoints de la Instagram Graph API, etiquetados según si son exclusivos de la Graph API, exclusivos de la Messaging API (el subconjunto "Messaging API") o aplican a ambas:

📊 Analíticas / Insights — solo Graph API
GET/{ig-user-id}?fields=followers_count,media_count,...
GET/{ig-user-id}/insights?metric=impressions&period=day
GET/{media-id}/insights?metric=reach,impressions
📸 Publicación de contenido — solo Graph API
POST/{ig-user-id}/media (create container)
POST/{ig-user-id}/media_publish (publish container)
GET/{ig-user-id}/media (list posts)
💬 Comentarios — solo Graph API
GET/{media-id}/comments
POST/{media-id}/comments (reply to comment)
POST/{comment-id}?hidden=true (hide comment)
🔍 Búsqueda por hashtag — solo Graph API
GET/ig_hashtag_search?q=sunset&user_id={id}
GET/{hashtag-id}/top_media
💌 Mensajes directos — Messaging API (subconjunto de Graph API)
POST/{ig-user-id}/messages (send DM to user)
GET/{ig-user-id}/conversations (list DM threads)
GET/{conversation-id}/messages (read thread)
🔗 Información de cuenta — usados por ambas
GET/me?fields=id,name,instagram_business_account
GET/{ig-user-id}?fields=id,name,username,biography

Permisos: qué necesitas para cada capacidad

Los permisos son la forma más clara de distinguir qué requiere la "Messaging API" frente a lo que necesita el resto de la Graph API. Cada permiso requiere App Review para usarse en producción más allá de cuentas de prueba.

PermisoCategoríaQué habilita
instagram_manage_messages Messaging API Recibir eventos de webhook de DM. Enviar respuestas de DM vía /{ig-user-id}/messages. Acceder al historial de conversaciones. Requerido para toda automatización de DM.
pages_messaging Messaging API Suscribir y recibir eventos de webhook a través de la Facebook Page vinculada. Sin esto, los webhooks de DM de Instagram no se disparan, sin importar qué otros permisos tengas.
pages_read_engagement Ambas Leer información básica sobre la Facebook Page vinculada y la cuenta de Instagram. Requerido tanto por las funciones de mensajería como de Graph API para verificar la cuenta.
instagram_manage_insights Graph API Leer datos analíticos a nivel de cuenta y de medio, incluidos impresiones, alcance, engagement y demografía de seguidores. Para dashboards de analítica y herramientas de reporting.
instagram_content_publish Graph API Crear y publicar posts, reels, historias y carruseles en nombre de una cuenta de negocio. Para herramientas de programación y publicación de contenido.
instagram_manage_comments Graph API Leer, responder, ocultar y eliminar comentarios en posts. Para herramientas de gestión de comentarios y automatizaciones comment-to-DM (también necesita instagram_manage_messages para el paso de envío del DM).
instagram_basic Graph API Leer información básica de perfil y lista de posts. Suele incluirse como permiso base junto con permisos más específicos en la mayoría de casos de uso de la Graph API.

Suscripciones de webhook: mensajería vs todo lo demás

Las suscripciones a campos de webhook son donde la Messaging API y el resto de la Graph API se separan con más claridad. Todas las suscripciones pasan por la configuración de Instagram Webhooks de tu Facebook App, pero los campos a los que te suscribes determinan qué eventos recibes:

Instagram webhook subscription fields — messaging vs graph
// ── MESSAGING API WEBHOOK FIELDS ───────────────────────────────────────── messages // DMs received, story replies, quick replies, media DMs messaging_referrals // Story mentions (user tags your account in their story) messaging_optins // Opt-in events for recurring notification widgets // ── NON-MESSAGING GRAPH API WEBHOOK FIELDS ─────────────────────────────── mentions // When your account is @mentioned in another account's caption/comment comments // Comments on your posts (for comment management + comment-to-DM triggers) live_comments // Comments on live videos story_insights // Story analytics events // ── CRITICAL DISTINCTION ───────────────────────────────────────────────── // Story REPLIES (user DMs a reply to your story) → "messages" field // Story MENTIONS (user tags you in their story) → "messaging_referrals" field // @mentions in captions/comments → "mentions" field (non-messaging)

El solapamiento más confuso: los eventos relacionados con historias se reparten entre dos campos de webhook distintos. Un usuario que responde a tu historia es un evento de mensajería (campo messages). Un usuario que etiqueta a tu cuenta en su propia historia es un evento de referral (campo messaging_referrals). Una cuenta que te menciona en un pie de foto es un evento ajeno a mensajería (campo mentions). Tres campos de webhook distintos para tres interacciones aparentemente similares.

La antigua Instagram API obsoleta: qué era y por qué importa

La pregunta de Stack Overflow de 2019 que suele aparecer en esta búsqueda comparaba dos cosas que ya no existen en su forma actual: la "Instagram API" (hoy totalmente obsoleta) y la "Instagram Graph API" (la vigente). Entender esta historia explica por qué tantas respuestas en línea están equivocadas.

La Legacy Instagram API quedó totalmente obsoleta en marzo de 2020. Cualquier integración que aún la use lleva años rota. Cualquier tutorial o respuesta de Stack Overflow anterior a 2020 que compare la "Instagram API" con la "Instagram Graph API" describe una comparación que ya no existe. El estado actual: solo existe la Instagram Graph API (con la Messaging API como subconjunto). No hay una "Instagram API" separada con la que compararla.
Timeline: Instagram API history
// 2012 — Instagram API launched (the "old" API) // Base URL: api.instagram.com, OAuth-based, allowed personal account access // Could: read posts, search hashtags, get followers (for your own account) // 2018 — Instagram Graph API launched as replacement // Base URL: graph.facebook.com, uses Facebook OAuth, business accounts only // Added: analytics, content publishing, comments management // 2020 (March) — Legacy Instagram API fully shut down // All api.instagram.com endpoints stopped working // Only graph.facebook.com works from this point forward // 2020 (ongoing) — Instagram Messaging API (Messenger API for Instagram) // DM endpoints added to the Graph API // Uses graph.facebook.com/v21.0/{ig-user-id}/messages // Today: One API. graph.facebook.com. Multiple capability subsets. // "Messaging API" = DM subset. "Graph API" = all capabilities including DMs.

Matriz de decisión: qué usar según tu caso de uso

Chatbot de DM / respondedor automático
Recibe DMs vía webhook, envía respuestas, gestiona respuestas y menciones en historias. Permisos: instagram_manage_messages, pages_messaging. Campos de webhook: messages, messaging_referrals.
Messaging API
Dashboard de analítica
Lee impresiones a nivel de cuenta, alcance, número de seguidores y rendimiento de los medios. Permisos: instagram_manage_insights, instagram_basic.
Graph API
Programador / publicador de contenido
Crea y publica posts, reels e historias de forma programática. Permisos: instagram_content_publish, instagram_basic.
Graph API
Herramienta de gestión de comentarios
Lee y responde comentarios en posts, oculta spam. Campo de webhook: comments. Permisos: instagram_manage_comments.
Graph API
Automatización comment-to-DM
Detecta un comentario con palabra clave y luego envía un DM a la persona que comentó. Necesita AMBAS: webhook de comentarios (Graph API) + envío de mensajería (Messaging API). Permisos: instagram_manage_comments + instagram_manage_messages.
Ambas
Plataforma de gestión completa de Instagram
Todas las capacidades: publicación, analíticas, DMs, comentarios, búsqueda por hashtag. Todos los permisos. Múltiples campos de webhook.
Ambas
Automatización de DM para e-commerce
Recibe DMs con intención de compra, envía enlaces de productos y respuestas con seguimiento de pedidos. Caso de uso puro de la Messaging API.
Messaging API
Recolección de UGC (menciones en historias)
Detecta cuándo los usuarios mencionan tu marca en sus historias y descarga el contenido. Messaging API para el webhook de mención + Graph API para los medios.
Ambas

Preguntas frecuentes

¿La Instagram Messaging API es una API separada de la Instagram Graph API?
No. La Instagram Messaging API es un subconjunto de endpoints, permisos y suscripciones de webhook dentro de la Instagram Graph API. Ambas usan la misma URL base (graph.facebook.com/v21.0), el mismo sistema de autenticación y la misma configuración de Facebook App. "Instagram Messaging API" es el nombre de producto de Meta para las capacidades específicas de DM dentro del marco más amplio de la Graph API.
¿Qué permisos necesito para los DMs de Instagram vs para las analíticas de Instagram?
DMs (Messaging API): instagram_manage_messages + pages_messaging + pages_read_engagement. Analíticas (Graph API): instagram_manage_insights + instagram_basic. Publicación de contenido (Graph API): instagram_content_publish + instagram_basic. Comentarios (Graph API): instagram_manage_comments. Todos requieren App Review para uso en producción.
¿Qué era la antigua Instagram API y sigue disponible?
La antigua Instagram API (Legacy Instagram API) se lanzó en 2012 y usaba la URL base api.instagram.com. Permitía el acceso a cuentas personales y usaba un OAuth específico de Instagram. Se apagó por completo en marzo de 2020 y ya no funciona. Todas las integraciones actuales de Instagram deben usar la Instagram Graph API (graph.facebook.com). Cualquier tutorial que mencione "api.instagram.com" describe un sistema roto y obsoleto.
¿A qué campos de webhook me suscribo para los DMs de Instagram?
Para DMs y respuestas a historias: campo messages. Para menciones en historias (cuando los usuarios etiquetan tu cuenta en su historia): campo messaging_referrals. Para @menciones en pies de foto o comentarios de posts: campo mentions (ajeno a mensajería, Graph API). Para comentarios en posts: campo comments (Graph API). Suscríbete a todos los campos que necesites en la configuración de Instagram Webhooks de tu Facebook App.
¿Necesito dos Facebook Apps distintas para las funciones de mensajería frente al resto de la Graph API?
No: una sola Facebook App gestiona todas las capacidades de la Instagram Graph API. Solicitas permisos diferentes para distintas funciones (instagram_manage_messages para DMs, instagram_manage_insights para analíticas, etc.), pero es la misma configuración de App. Usarás un único App Secret para la verificación HMAC, una URL de webhook para todos los eventos de Instagram y un conjunto de Page Access Tokens por cuenta. La diferencia está puramente en qué permisos solicitas y qué endpoints llamas.
¿Cuál es el endpoint Send API de Instagram para DMs?
El endpoint es POST /v21.0/{ig-user-id}/messages llamado contra graph.facebook.com. El ig-user-id es el ID numérico de tu Instagram Business Account (también el valor entry[0].id en los webhooks entrantes). El cuerpo de la petición: {"recipient": {"id": "USER_IGSID"}, "message": {"text": "your reply"}}. Autenticado con un Page Access Token que tenga el permiso instagram_manage_messages.

La capa del webhook de la Messaging API,
resuelta por ti.

Ahora que sabes que la Messaging API es un subconjunto de la Graph API, el siguiente paso es recibir esos eventos en tu servidor. SocialHook se encarga de la verificación HMAC, del parseo del payload crudo y de la normalización de eventos: cada DM, respuesta a historia y mención en historia llega como JSON limpio a tu endpoint.

Sin tarjeta de crédito · 50 $/mes tras la prueba · Instagram + Messenger + WhatsApp