← Messenger integration

Instagram Direct

Instagram Direct is not a separate integration here. The Page is still the addressable thing: the conversation tools take a platform of MESSENGER or INSTAGRAM, and the same connected Page serves both inboxes.

That means one connection, one token, and one place to look at everything a customer sent you.

Three prerequisites, and only one of them is a permission

Instagram messaging fails silently more often than it errors, because two of the three requirements live outside the API.

1. A professional account, connected to the Page. A personal Instagram account cannot be read. The account must be a professional one (business or creator) and it must be connected to the Facebook Page you connected here.

2. The permissions. These are granted during connect, alongside the Page messaging ones. If you added them to the app after connecting, reconnect: the existing token was minted before the grant existed and does not carry it.

3. Allow Access to Messages — the one that wastes an afternoon. In the Instagram app itself:

Settings > Messages and story replies > Message controls
  > Connected Tools > Allow Access to Messages

Until that toggle is on, the permission reads as granted and the inbox comes back empty. There is no error to surface, because the API answers successfully with no data. An empty Instagram inbox on an account you know has messages is this setting until proven otherwise.

Two Instagram APIs, and which one this is

Meta offers two routes to Instagram messaging, and they are not interchangeable:

Instagram API with Facebook LoginInstagram API with Instagram Login
Identitythe Facebook Pagethe Instagram account directly
Permissionsinstagram_basic, instagram_manage_messagesthe instagram_business_* family
Credentialsthe app's existing id and secreta separate Instagram app id and secret
Conversationsthe Page's endpoint, platform=INSTAGRAMInstagram's own host and endpoints

This provider uses the Facebook Login route. One connection covers Messenger and Instagram together, one App Review submission covers both, and a Page that gains an Instagram account later needs no new integration.

The Instagram Login route is a genuinely different integration rather than a setting: different credentials, different authorization, different endpoints. If you have set that up in the app console, it does not feed this provider and nothing here will use it.

Reading it

Everything works the same as Messenger, with the platform named:

  • list the threads with platform: "INSTAGRAM"
  • read one thread by id, exactly as with Messenger
  • each message names who sent it, so a reply from the account is distinguishable from a message from the customer

An account with no Instagram connected returns an error rather than an empty list. That distinction is useful: an error means no Instagram is attached, while an empty list means it is attached and something upstream — usually the toggle above — is holding the messages back.