Errors & blockers

Invalid Scopes: is instagram_basic actually deprecated? (No — here’s what really changed)

instagram_basic is not deprecated, despite what most troubleshooting guides claim. What Meta actually retired, what to check instead, and the real old-to-new scope map for the permissions that did change.

Quick answer

No — instagram_basic is not deprecated. Per Meta's current documentation it remains the base permission of the Instagram API with Facebook Login for Business. What actually died is different: the Instagram Basic Display API was retired completely on December 4, 2024, and the unprefixed Instagram Login scopes (business_basic and siblings) were deprecated on January 27, 2025 in favor of instagram_business_-prefixed names.

You send a Meta OAuth request with instagram_basic in the scope list — copied from an old tutorial, an old codebase, or a mix of two different Instagram integration paths — and the dialog either fails outright or Meta strips the permission silently, breaking your integration downstream the first time you call an endpoint that needed it. Before you rewrite your scope list, it is worth being precise about what is actually dead here: instagram_basic itself is not the deprecated permission that most older troubleshooting guides claim it is. Confusing it with what actually got shut down is a common source of this exact error.

PostGate handles OAuth, publishing and delivery evidence for every network through one API. Start free or read the docs.

01

Two different things got confused, and only one of them is dead

There genuinely was a full shutdown: the old Instagram Basic Display API — a separate product with its own OAuth flow for read-only access to personal Instagram accounts, using permissions like user_profile and user_media — was retired completely on December 4, 2024, as widely reported at the time (see TechCrunch's coverage). That API is gone, not deprecated-but-working, and it had nothing to do with a permission called instagram_basic.

instagram_basic is a different permission entirely, and — per Meta's current Instagram Platform overview— it is not deprecated. Meta documents two parallel, both currently supported configurations for accessing business/creator Instagram accounts: "Instagram API with Instagram Login," which uses permissions prefixed instagram_business_, and "Instagram API with Facebook Login for Business," which uses instagram_basic, instagram_content_publish, instagram_manage_comments, instagram_manage_insights, and instagram_manage_messages — the Page-linked flow. Neither list is marked as replacing the other; they are two different integration models a developer chooses between, not an old-vs-new pair.

What Meta's own Instagram Platform changelog does document as deprecated is narrower than most troubleshooting guides suggest: the original, unprefixed scope names used early in the Instagram Login product — business_basic, business_content_publish, business_manage_comments, and business_manage_messages — were renamed to their instagram_business_-prefixed equivalents, with the old unprefixed names deprecated on January 27, 2025. If your "invalid scope" error traces back to a real deprecation rather than a copy-paste mix-up, this is almost certainly it.

02

What should you actually check?

Work through these in order rather than assuming which one applies:

  • Are you still calling the old Basic Display API (its own OAuth host, and permissions named user_profile/user_media) for a personal Instagram account? There is no like-for-like replacement — that surface is gone. You have to convert the account to a Business or Creator account and integrate against the Instagram Graph API instead.
  • Are you using the pre-January-2025 unprefixed scope names from the Instagram Login product? Replace them one-to-one:
    • business_basic → instagram_business_basic
    • business_content_publish → instagram_business_content_publish
    • business_manage_comments → instagram_business_manage_comments
    • business_manage_messages → instagram_business_manage_messages
  • Are you mixing permissions from the two current configurations in a single OAuth request — for example requesting instagram_basic (Facebook Login for Business) alongside instagram_business_content_publish (Instagram Login)? Meta's docs do not spell out in prose that this is rejected, but developers commonly report exactly this combination producing scope errors. Pick one configuration for a given connection flow and request only its permissions.

If none of those match, you are very likely dealing with instagram_basic and its siblings working as intended under the Facebook Login for Business configuration — in which case the fix is not a permission rename at all, but making sure the rest of your flow (Page linkage, account type, token type) matches what that configuration expects.

03

How does moving to Instagram Login change your App Review submission?

This only applies if you were on the Instagram Login product with the old unprefixed scope names — skip it if you are staying on Facebook Login for Business with instagram_basic. Meta's reviewers evaluate your screencast and use-case justification against the specific permission you are requesting, so a submission that still talks about your integration in business_basic-era language will read as stale even after you fix the scope string in code. Update your review notes and demo flow to match the current instagram_business_ permission names.

If your app was previously approved under the old unprefixed scope names, that approval does not automatically carry over. Expect to resubmit for the renamed scopes and to walk through review again.

04

Which symptoms point back to this?

Beyond an outright OAuth scope error, watch for:

  • A successful-looking login that returns a token missing the permission you expected, which then fails later with an OAuthException (commonly code 10 or code 200, Meta's permission-error family) the first time you call an endpoint that needed it.
  • Integrations that worked for existing connected accounts but fail for every new connection attempt — a strong signal that the scope itself, not the account, changed underneath you.
  • Old SDK versions or copy-pasted OAuth URLs that still hardcode the genuinely deprecated names. Grep your codebase for the unprefixed business_basic, business_content_publish,business_manage_comments, and business_manage_messages — those are the ones Meta actually retired. If instead you find instagram_basic and its siblings sitting next to instagram_business_-prefixed scopes in the same request, that mismatch between the two connection models is a more likely culprit than either name being dead.
05

How does PostGate keep you off the deprecated path?

PostGate's hosted connection flow requests the current instagram_business_ permission set on your behalf, so your integration never has to track Meta's permission renames directly — see Profiles & connections for how the hosted OAuth flow is scoped. If you connect Instagram through your own Meta app instead, PostGate's connection response and structured error envelope still surface a permission mismatch as a distinct, actionable error rather than a silent downstream failure.

Frequently asked questions

What replaced the Instagram Basic Display API?

There is no like-for-like replacement. The Basic Display API — read-only access to personal Instagram accounts via user_profile and user_media permissions — was retired completely on December 4, 2024. To keep API access, the account has to be converted to a Business or Creator account and the integration rebuilt against the Instagram Graph API instead.

What is the new name for the business_basic scope?

instagram_business_basic. Meta renamed the original unprefixed Instagram Login scopes one-to-one: business_basic became instagram_business_basic, business_content_publish became instagram_business_content_publish, business_manage_comments became instagram_business_manage_comments, and business_manage_messages became instagram_business_manage_messages. The old unprefixed names were deprecated on January 27, 2025, per Meta's Instagram Platform changelog.

Does an existing App Review approval carry over to the renamed Instagram scopes?

No. If your app was previously approved under the old unprefixed scope names, that approval does not automatically carry over — expect to resubmit for the renamed scopes and walk through review again. Update your review notes and demo screencast too: reviewers evaluate them against the specific permission requested, so business_basic-era language reads as stale.

Why does my Instagram OAuth login succeed but the token is missing permissions?

Meta can strip a problematic permission silently instead of failing the dialog. The login looks successful, but the token comes back missing the permission, and the integration fails later with an OAuthException — commonly code 10 or 200, Meta's permission-error family — the first time you call an endpoint that needed it. Integrations that work for existing connections but fail for every new one are a strong signal of a scope change.

Build it with PostGate

One API for every social platform your customers care about — sandboxed, documented, and ready today.

Start building Read the docs