Instagram Messaging API · error code

Instagram error 10: Application does not have permission for this action

ConfigurationHTTP 403Permissions & app review

Last verified against Meta for Developers - Messenger Platform error codes

What Instagram returns
(#10) Application does not have permission for this action

What error 10 means

Bare code 10 - no subcode, or a subcode other than the window family - means the Graph API refused the call because the token you presented was never granted the permission this endpoint requires, or your app holds the permission at the wrong access level. For Instagram messaging on the Messenger Platform route the critical scope is instagram_manage_messages on a Page access token; on the Instagram Login route it is instagram_business_manage_messages. Mixing the two routes produces exactly this error: an Instagram-Login token used against Page-based endpoints has none of the Page-route permissions, and vice versa.

Access level matters as much as the grant. Standard Access - what every app has before review - only works for people with a role on the app. Serving the public requires Advanced Access for the messaging permission, which means App Review and, for most apps, Business Verification. An app that works for its developers and returns (#10) or silence for customers is almost always still at Standard Access or in Development mode (that variant usually surfaces as code 200).

Read the message string before fixing anything: code 10 with subcode 2534022 is the 24-hour window, a different problem with a different fix. The permission form never mentions hours.

What it looks like

{
  "error": {
    "message": "(#10) Application does not have permission for this action",
    "type": "OAuthException",
    "code": 10,
    "fbtrace_id": "AxY9zW7vU5tS"
  }
}

Why it happens

  • The login dialog was built with an older scope list, so the user never granted instagram_manage_messages (or instagram_business_manage_messages on the Instagram Login route).
  • The user unticked the messaging permission on the consent screen, and your app stored the token anyway.
  • The app has the permission at Standard Access only, and the recipient has no role on the app.
  • A token from the Instagram Login route is being used against Messenger Platform endpoints, or the reverse.
  • The call needs a companion permission you did not request, such as pages_manage_metadata for webhook subscription calls.

How to fix Instagram error 10

  1. 1Paste the token into the Access Token Debugger (developers.facebook.com/tools/debug/accesstoken) and read the Scopes line; confirm the messaging permission is present.
  2. 2If the scope is missing, re-run the login flow requesting the full permission list, and replace the stored token - old tokens do not gain new scopes.
  3. 3In App Dashboard > App Review > Permissions & Features, check the access level next to the messaging permission; request Advanced Access if you serve users without app roles.
  4. 4Confirm you are calling the endpoints that match your token's route: /{page-id}/messages with a Page token, or the Instagram-Login messaging endpoints with an Instagram token.
  5. 5Retest with a real non-admin account after Advanced Access is granted, because admin accounts mask the problem.

How to stop it recurring

Pin the scope list in one place in code and assert on the granted scopes at connect time: inspect the token immediately after login and refuse to store it if the messaging permission is absent, so the failure happens during onboarding instead of on the first customer message. Keep the two API routes strictly separated in configuration. The full permission matrix and access-level requirements are covered in section 5 of the Instagram troubleshooting guide, and the account prerequisites in the limits reference.

Official reference: Meta for Developers - Messenger Platform error codes. See all Instagram error codes or the Instagram limits and quotas.

Related codes

Error 10 - quick answers

What does Instagram error 10 mean?

Bare code 10 - no subcode, or a subcode other than the window family - means the Graph API refused the call because the token you presented was never granted the permission this endpoint requires, or your app holds the permission at the wrong access level.

How do I fix Instagram error 10?

1. Paste the token into the Access Token Debugger (developers.facebook.com/tools/debug/accesstoken) and read the Scopes line; confirm the messaging permission is present. 2. If the scope is missing, re-run the login flow requesting the full permission list, and replace the stored token - old tokens do not gain new scopes. 3. In App Dashboard > App Review > Permissions & Features, check the access level next to the messaging permission; request Advanced Access if you serve…

Stop debugging Instagram by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.