Errors & blockers

instagram_basic vs. instagram_business_basic

The real difference between these two similarly-named Instagram permissions, and which one your integration actually needs.

Quick answer

instagram_basic and instagram_business_basic are the base identity permissions of two different, currently-supported login products: instagram_basic belongs to Instagram API with Facebook Login for Business (connected via a linked Facebook Page), while instagram_business_basic belongs to Instagram API with Instagram Login (no Facebook Page required). Neither replaces the other — request the one matching your OAuth flow, never both.

instagram_basic and instagram_business_basic are two permissions with almost the same name, granting almost the same access, that belong to two entirely different login products. Request the wrong one for the flow you are actually building and you will not get a clean rejection — you will get an OAuth dialog that behaves oddly, or a token that looks valid but cannot do what your code expects. This post is about that specific confusion. For whether instagram_basic itself is deprecated (it is not), see Invalid Scopes: is instagram_basic actually deprecated?.

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

01

Two login products, two permission naming schemes

Meta's Instagram Platform overview documents two parallel, currently-supported ways to connect a Business or Creator Instagram account:

  • Instagram API with Facebook Login for Business. The account is connected through a linked Facebook Page, using the OAuth surface Facebook Login has always used. Its base identity permission is instagram_basic.
  • Instagram API with Instagram Login. The account authenticates directly against Instagram's own login flow, with no Facebook Page or Facebook Login step required. Its base identity permission is instagram_business_basic.

Neither is a newer replacement for the other — they are two different integration models a developer picks between based on how they want the OAuth flow to look and whether a Facebook Page is already part of the customer's setup. Meta's naming convention gives each product family its own prefix: unprefixed names (instagram_basic, instagram_content_publish, instagram_manage_comments, instagram_manage_insights, instagram_manage_messages) belong to Facebook Login for Business, and instagram_business_-prefixed names (instagram_business_basic, instagram_business_content_publish, instagram_business_manage_comments, instagram_business_manage_messages) belong to Instagram Login.

02

What does each permission actually grant?

Functionally, the two are close counterparts of each other — both are the base, lowest-tier identity permission in their respective product, required before any of that product's other permissions are useful:

  • instagram_basic (Facebook Login for Business) grants read access to the connected Instagram professional account's profile info and media list, and is a prerequisite for the other unprefixed publish/comment/insights/message permissions in that product. It does not by itself grant publishing, comment management, or messaging — those are separate permissions layered on top.
  • instagram_business_basic (Instagram Login) grants the equivalent read access — profile identity and media metadata — for an account connected through Instagram Login, and is the prerequisite for instagram_business_content_publish, instagram_business_manage_comments, and instagram_business_manage_messages in that product.

Neither permission grants publishing on its own. If your integration needs to post, you also need instagram_content_publish (Facebook Login for Business) or instagram_business_content_publish (Instagram Login) — matching whichever base permission you requested.

03

Which one does your integration actually need?

This comes down to which login product your OAuth flow is built against, not a feature comparison — both products can publish, read comments, and read insights. Pick based on your actual flow:

  • If your app already asks customers to log in with Facebook, or you need access to a linked Facebook Page alongside the Instagram account, use Facebook Login for Business and request instagram_basic.
  • If you want a login flow that stays entirely within Instagram — no Facebook account or Facebook Page required from the customer — use Instagram Login and request instagram_business_basic.

What you should not do is request both base permissions in the same OAuth call, or mix an unprefixed permission from one product with a prefixed permission from the other in a single request. Meta's docs do not spell out in prose that this fails, but developers commonly report scope errors from exactly this kind of cross-product mixing — pick one login product for a given connection flow and request only its permission family.

04

How does this show up when you get it wrong?

Requesting instagram_business_basic through a Facebook Login for Business flow (or the reverse) does not usually produce a clean, descriptive rejection. More often you will see:

  • An OAuth dialog that completes but returns a token missing the permission you expected, surfacing later as a permission error (commonly Graph API code 10 or 200) the first time you call an endpoint gated on it.
  • A connection that succeeds for identity but cannot be used for any of the operations your product actually needs, because the publish/comment/message permission you also requested belongs to the other product family and never actually granted.

See Instagram Graph API error codes: the complete index for the full picture of what those downstream errors look like.

05

How does PostGate handle this?

PostGate's hosted connection flow picks the login product and requests the matching permission family on your behalf — see Profiles & connections — so your integration never has to decide between instagram_basic and instagram_business_basic directly. If you connect Instagram through your own Meta app instead, keep the two permission families separate in your own OAuth requests using the guidance above.

Frequently asked questions

Does instagram_basic let me publish posts to Instagram?

No. instagram_basic only grants read access to the connected Instagram professional account's profile info and media list. Publishing requires a separate permission layered on top: instagram_content_publish in Facebook Login for Business, or instagram_business_content_publish in Instagram Login. The same applies to comment management, insights, and messaging — each is its own permission.

Can I request instagram_basic and instagram_business_basic in the same OAuth request?

You should not. Each belongs to a different login product — unprefixed permissions to Facebook Login for Business, instagram_business_-prefixed ones to Instagram Login. Meta's docs do not spell out in prose that mixing fails, but developers commonly report scope errors from cross-product mixing. Pick one login product per connection flow and request only its permission family.

What happens if I request the wrong Instagram permission for my login flow?

You usually do not get a clean, descriptive rejection. More often the OAuth dialog completes but returns a token missing the permission you expected, which surfaces later as a permission error (commonly Graph API code 10 or 200) the first time you call an endpoint gated on it — or a connection that works for identity but cannot publish, comment, or message.

Do I need a Facebook Page to use the Instagram API?

Only for one of the two integration models. Instagram API with Facebook Login for Business connects the account through a linked Facebook Page. Instagram API with Instagram Login authenticates directly against Instagram's own login flow, with no Facebook account or Facebook Page required from the customer. Both products support publishing, comments, and insights.

Build it with PostGate

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

Start building Read the docs