{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"id":"meta/instagram-graph","name":"Instagram Platform API (Graph API for professional accounts)","vendor":"Meta","status":"researched","last_verified":null,"last_researched":"2026-10-25","summary":"Publish media, manage comments and messages and read insights for Instagram professional (business or creator) accounts. Free to call, but serving accounts you do not own needs Advanced Access, which needs App Review and Business Verification.","account_model":{"summary":"A Meta developer account creates a Business-type app, connected to a Business Portfolio that has passed Business Verification. Each Instagram account the app serves must be a professional (business or creator) account. With the Facebook Login setup, that Instagram account is also linked to a Facebook Page the user can administer.","accounts":[{"name":"Meta developer account","kind":"developer","owned_by":"the person","required":true,"note":"Holds a developer or admin role on at most 15 apps."},{"name":"Meta Business Portfolio (verified)","kind":"organisation","owned_by":"the business","required":true,"note":"Must have completed Business Verification before the app can be published."},{"name":"Business-type Meta app with the Instagram product","kind":"project","parent":"Meta Business Portfolio (verified)","required":true},{"name":"Instagram professional account","kind":"other","owned_by":"the account holder (you, or each client business)","required":true,"note":"Business or creator account. Test accounts added to the app must be public."},{"name":"Facebook Page","kind":"other","owned_by":"the account holder","parent":"Instagram professional account","required":false,"note":"Only for the Instagram API with Facebook Login setup; the user must be able to do admin-equivalent tasks on it."}],"notes":["Two setups. Instagram Login (graph.instagram.com, instagram_business_* scopes) needs no Page but has no hashtag search, product tagging, ads or tagging. Facebook Login (graph.facebook.com, instagram_* plus pages_* scopes) needs a Page-linked account. An app uses one or the other, not both. Meta recommends Unified Login for new integrations.","Standard Access (default) works only for accounts with a role on the app, i.e. your own accounts. Serving other people's accounts needs Advanced Access per permission."]},"prerequisites":[{"entry":"meta/developer-app","note":"A Business-type app (use case Other) is required to add the Instagram product."},{"entry":"meta/business-portfolio"},{"entry":"meta/business-verification","note":"Needed before publishing and for Advanced Access to serve accounts you do not own."},{"entry":"meta/app-review","note":"Only for Advanced Access (tech providers serving other businesses)."},{"entry":"meta/facebook-login","note":"Only if you choose the Facebook Login (Page-linked) setup."}],"identity_requires":["legal_name","website","privacy_policy_url","support_email","app_icon_url"],"have_ready":[{"kind":"other","description":"An Instagram professional (business or creator) account set to public, for testing","why":"Tester accounts assigned to the app must be public professional accounts","needed_for":["testers-and-tokens"],"auto_check":"none","source_url":"https://developers.facebook.com/documentation/instagram-platform/create-an-instagram-app.md"},{"kind":"other","description":"A Facebook Page linked to the Instagram account, with admin-equivalent access (Facebook Login setup only)","why":null,"needed_for":["choose-setup"],"auto_check":"none","source_url":"https://developers.facebook.com/docs/instagram-platform/overview"},{"kind":"app_privacy_policy_url","description":"Public privacy policy URL that explains how users request deletion of their data","why":null,"needed_for":["app-settings"],"auto_check":"website_live","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md"},{"kind":"app_icon","description":"App icon, 1024 x 1024 pixels","why":null,"needed_for":["app-settings"],"auto_check":"none","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md"},{"kind":"domain_email","description":"Business contact email; it receives App Review results and developer alerts","why":null,"needed_for":["app-settings"],"auto_check":"domain_email_mx","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md"},{"kind":"live_website","description":"A web app reviewers can load and test from outside your network, with a visible Instagram login button, plus HTTPS redirect, deauthorize and data-deletion URLs","why":"Web is currently the only platform for Instagram API with Instagram Login; untestable submissions are rejected","needed_for":["business-login-settings","app-review"],"auto_check":"website_live","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md"},{"kind":"demo_video","description":"One screencast per requested permission showing the end-to-end user flow (English UI, captions)","why":null,"needed_for":["app-review"],"auto_check":"none","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md"},{"kind":"other","description":"Test login credentials for your app that do not hit 2FA or email-verification walls","why":null,"needed_for":["app-review"],"auto_check":"none","source_url":"https://bundle.social/blog/meta-app-review-20-days"}],"steps":[{"id":"professional-account","title":"Make sure each Instagram account is a professional account","summary":"The account you will publish or read for must be an Instagram business or creator account. For testing it must also be public. You switch this in the Instagram app settings yourself.","route":"guided","gate":"human_login","human_only":true,"gate_label":"You sign in","depends_on":[],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"choose-setup","title":"Choose Instagram Login or Facebook Login","summary":"Pick one. Instagram Login needs no Facebook Page and covers publishing, comments, messages and insights. Pick Facebook Login if you need hashtag search, product tagging or Page-linked features, and link the Instagram account to a Facebook Page you administer. You cannot use both in one app.","route":"guided","gate":"none","human_only":false,"gate_label":null,"depends_on":["professional-account"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"create-app","title":"Create a Business-type app and add the Instagram product","summary":"In the App Dashboard create an app, connect your business portfolio, choose use case Other and app type Business, enter a name and contact email, then press Set up on the Instagram product. There is no official API to create apps.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["choose-setup"],"optional":false,"url":"https://developers.facebook.com/apps/","lead_time":null,"preflight":[],"captures":null},{"id":"app-settings","title":"Fill in App settings > Basic","summary":"Add the privacy policy URL, a 1024x1024 icon, an app category and a business email. Copy the App ID; the App Secret stays secret.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["create-app"],"optional":false,"url":"https://developers.facebook.com/apps/","lead_time":null,"preflight":["privacy_policy_reachable","app_icon_present"],"captures":null},{"id":"testers-and-tokens","title":"Add your Instagram account as a tester and generate a test token","summary":"Under Instagram > API setup, assign your public professional account. The account holder accepts the tester invite and logs in; a token is generated for testing API calls and webhooks. This token works without App Review for accounts with a role on the app (Standard Access).","route":"guided","gate":"human_login","human_only":true,"gate_label":"You sign in","depends_on":["app-settings"],"optional":false,"url":"https://developers.facebook.com/apps/","lead_time":{"official":null,"reported":null,"typical_minutes":10},"preflight":[],"captures":"INSTAGRAM_ACCESS_TOKEN"},{"id":"business-login-settings","title":"Set up business login (redirect, deauthorize and data-deletion URLs)","summary":"Add your OAuth redirect URL plus deauthorize callback and data deletion request URL in the business login settings. Optionally configure webhooks with a callback URL and verify token.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["app-settings"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"business-verification","title":"Complete Business Verification for the connected portfolio","summary":"Needed before you can publish the app and for Advanced Access. Follow the meta/business-verification entry. Only needed if you will serve Instagram accounts that do not have a role on your app.","route":"guided","gate":"third_party_review","human_only":true,"gate_label":"The provider reviews it","depends_on":["create-app"],"optional":true,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"app-review","title":"Request Advanced Access through App Review","summary":"Only for apps that serve other businesses' accounts. For each permission (for example instagram_business_basic, instagram_business_content_publish), make at least one successful API call, describe the use case step by step, upload a screencast and give test credentials. Request only permissions the app visibly uses.","route":"guided","gate":"third_party_review","human_only":true,"gate_label":"The provider reviews it","depends_on":["business-login-settings","business-verification","testers-and-tokens"],"optional":true,"url":"https://developers.facebook.com/apps/","lead_time":{"official":{"text":"Meta's Instagram App Review page gives no review time [to verify in the App Dashboard at submission]","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md","source_title":"Instagram Platform – App Review"},"reported":{"text":"Community reports range from a few days to about three weeks; one Instagram submission sat 13 days with no feedback, and a July 2026 third-party write-up describes roughly 20 days. Each resubmission restarts the wait.","source_url":"https://developers.facebook.com/community/threads/3459359287566790/","source_title":"Meta developer community – App Review stuck at 13 days (instagram_business_basic + instagram_business_manage_messages)"},"typical_minutes":null},"preflight":[],"captures":null},{"id":"go-live","title":"Switch the app to Live and exchange long-lived tokens","summary":"After approval, publish the app. In production, exchange each authorization code (valid 1 hour) for a short-lived token (1 hour), then a long-lived token (60 days), stored server-side and refreshed before expiry.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["app-review"],"optional":true,"url":null,"lead_time":null,"preflight":[],"captures":null}],"gates":[{"step":"professional-account","gate":"human_login","label":"You sign in"},{"step":"create-app","gate":"human_submit","label":"You press submit"},{"step":"app-settings","gate":"human_submit","label":"You press submit"},{"step":"testers-and-tokens","gate":"human_login","label":"You sign in"},{"step":"business-login-settings","gate":"human_submit","label":"You press submit"},{"step":"business-verification","gate":"third_party_review","label":"The provider reviews it"},{"step":"app-review","gate":"third_party_review","label":"The provider reviews it"},{"step":"go-live","gate":"human_submit","label":"You press submit"}],"lead_times":[{"step":"app-review","what":"Request Advanced Access through App Review","official":{"text":"Meta's Instagram App Review page gives no review time [to verify in the App Dashboard at submission]","source_url":"https://developers.facebook.com/documentation/instagram-platform/app-review.md","source_title":"Instagram Platform – App Review"},"reported":{"text":"Community reports range from a few days to about three weeks; one Instagram submission sat 13 days with no feedback, and a July 2026 third-party write-up describes roughly 20 days. Each resubmission restarts the wait.","source_url":"https://developers.facebook.com/community/threads/3459359287566790/","source_title":"Meta developer community – App Review stuck at 13 days (instagram_business_basic + instagram_business_manage_messages)"}}],"outputs":[{"name":"INSTAGRAM_APP_ID","description":"Instagram app ID shown under the Instagram product API setup (Instagram Login), or the Meta App ID for the Facebook Login setup","secret":false,"example_format":"1234567890123456","environments":null},{"name":"INSTAGRAM_APP_SECRET","description":"Instagram app secret (server-side only)","secret":true,"example_format":"32 hex characters","environments":null},{"name":"INSTAGRAM_ACCESS_TOKEN","description":"Instagram User access token (long-lived, 60 days, refreshable) for your own professional account","secret":true,"example_format":"IG…","environments":["development","production"]},{"name":"INSTAGRAM_USER_ID","description":"Id of the Instagram professional account (IG User id) used in API paths","secret":false,"example_format":"17841400000000000","environments":null}],"renewals":[{"what":"Long-lived Instagram User access token (refresh when at least 24 hours old and before expiry)","every":"60 days","every_days":60,"source_url":"https://developers.facebook.com/documentation/instagram-platform/reference/refresh_access_token.md"},{"what":"Data Use Checkup for apps with Advanced Access","every":"1 year","every_days":365,"source_url":"https://developers.facebook.com/blog/post/2020/09/10/data-use-checkup-rolling-out-broadly-facebook-platform-developers/"}],"estimated_minutes":10,"guide_url":"https://verapli.com/guides/meta/instagram-graph"}