Guaranteed 100% Facebook, Instagram and WhatsApp Approvals & App Review
Quick Transfer Ready to use app available for Facebook, Instagram and WhatsApp
Guaranteed 100% Facebook, Instagram and WhatsApp Approvals & App Review
Quick Transfer Ready to use app available for Facebook, Instagram and WhatsApp
Instagram API · App Review
You built a scheduler, a social dashboard, or a SaaS that posts to Instagram for your clients. In testing it works. Then you try to publish to an account you do not own — and Instagram blocks the call. That wall is the instagram_content_publish permission, and Meta does not hand it over after a one-line form. This guide explains what the permission really involves, why so many submissions are rejected, and where professional approval support saves weeks of back-and-forth.

What instagram_content_publish actually unlocks

The content publishing permission lets your app create and publish single images, videos, reels and multi-item carousel posts directly to an Instagram professional account through the Graph API — no manual posting in the app. Meta exposes it under two different login setups, and the exact permission name depends on which one you build on.

instagram_content_publish

Content publishing scope when you build on Facebook Login for Business (the Instagram account is linked to a Facebook Page).

instagram_business_content_publish

The equivalent scope when you build on Business Login for Instagram, where users sign in with Instagram credentials directly.

instagram_basic / instagram_business_basic

Base dependency. Content publishing will not function without the matching base permission also granted.

Professional account + Page link

The target account must be an Instagram professional (business or creator) account, and for the Facebook-login setup it must be connected to a Facebook Page the user can manage.

Why Meta makes this permission hard to get

The reason most teams get stuck is the gap between Standard Access and Advanced Access. By default your app only has Standard Access, which can publish to your own account or to test users added in the App Dashboard. The moment you want to publish on behalf of real clients you do not own or manage, you need Advanced Access — and that is gated behind both Meta App Review and Business Verification.

Advanced Access is mandatory for real clients

Serving accounts you do not own requires Advanced Access, which can only be granted through a successful App Review submission. There is no shortcut and no self-serve toggle. Learn more in our guide to Meta Advanced Access.

Business Verification comes first

Advanced Access also requires a verified Meta Business portfolio. If your business is not verified, the permission cannot be approved no matter how good the app is. This step has its own document checks and is a frequent stall point — see our walkthrough of Meta Business Verification.

Reviewers must see it work with a test user

Meta does not approve content publishing from a written description. A reviewer connects a test account and expects to watch your app actually create and publish a post end to end. A flow they cannot reproduce is an automatic rejection.

The screencast has to prove the exact scope

Each permission needs a screencast that shows the full journey: login, the consent screen requesting that scope, and the scope being used. Generic product demos that never show the permission in action are the single most common reason content publishing submissions fail. Threads publishing permissions follow a review model much like Instagram, so read why Threads API permissions get rejected before you submit.

How the approval process runs

At a high level, getting instagram_content_publish approved follows a fixed sequence. Each stage has to be correct before the next one matters — this is the part we handle end to end.

1

Confirm the right login setup and permission set for your use case, and map every dependency so nothing is missing from the submission.

2

Complete Meta Business Verification and prepare the app's privacy policy, data handling and use-case description to match what reviewers expect.

3

Stand up a reviewer-ready environment with a working publish flow and test users, so the exact scope can be demonstrated cleanly.

4

Record a precise screencast for the permission and write the justification that ties the scope to a real, visible action in the app.

5

Submit, monitor the review, and if anything comes back, fix the exact rejection reason and resubmit — without breaking the rest of the approved scopes.

What approval looks like on the other side

Advanced Access granted for content publishing, so the app can post for client accounts at scale
The publish flow goes live in production instead of being limited to test users
Image, video, reel and carousel publishing all work through the API
A clean, reviewer-tested submission that holds up if scopes are expanded later

One practical note: even after approval, Instagram caps API publishing to a fixed number of posts per account in a rolling 24-hour window (carousels count as one), which you can check through the account's publishing-limit endpoint. Planning around that limit is part of building a stable integration. And if your tool also reports post performance to clients, the instagram_manage_insights approval guide covers the analytics permission that usually rides along in the same submission.

Common reasons content publishing submissions get rejected

Requesting Advanced Access before Business Verification is complete
A screencast that never clearly shows the consent screen and the scope being used
Reviewers cannot reproduce the publish flow with a test user
Missing base or dependency permissions in the same submission
Use-case description that does not match what the app actually does
Privacy policy or data-handling details that are incomplete or inconsistent