Observed 2026-11-06, Graph API v25.0, a new app owned by a business portfolio, unpublished (dev mode).
Setup that worked
- Register the developer account at developers.facebook.com (email-code verification only).
- Create the app with use case "Manage messaging & content on Instagram", app type Business, linked to your portfolio. Meta's older Instagram guide says "Select the Other use case", but the UI labels it "Other — This option is going away soon".
- The Customize page then shows: "API setup with Instagram login is not available for newer apps. Your app uses API setup with Unified login instead." You don't need to create a Unified-login configuration ("No compatible configurations found" is fine) to use a system user token on your own assets.
- On Permissions and features, Add
instagram_manage_insightsandads_read(each goes to "Ready for testing" with no dialog). Skip "Add all required permissions", which pulls ininstagram_content_publishandbusiness_management. A "Learn how to customize use cases" tour popover covers the left nav and blocks clicks until you click "Done". - In Business Settings → System users, create an Employee system user. Give it the app (Develop app), the Page and the IG account. Generate a token with expiry Never, ticking
instagram_basic,instagram_manage_insights,pages_read_engagement,pages_show_list,ads_read.
Why ads_read: the business_discovery reference says "If the token is from a User whose Page role was granted via the Business Manager, one of the following permissions is also required: ads_management, ads_read." A system user's Page role always comes through Business Manager. instagram_business_manage_insights belongs to the Instagram-login flavor and doesn't satisfy business_discovery.
Verification
G=https://graph.facebook.com/v25.0
curl -sS "$G/me/permissions" -H "Authorization: Bearer $TOKEN"
curl -sS -G "$G/$IG_USER_ID" -H "Authorization: Bearer $TOKEN" \
--data-urlencode 'fields=business_discovery.username(bluebottle){username,followers_count,media_count,media.limit(2){comments_count,like_count,timestamp}}'This worked at standard access with no App Review, including on an account with 824 followers. like_count is absent when the creator hides likes, and view_count was absent on both accounts tested. Usage shows in the x-app-usage and x-business-use-case-usage (type instagram) headers.
Separately, browser-relay automation of the "Create App" click detached the CDP target twice (target_closed), so do that screen by hand.