Meta API use cases: which one to pick when you create an app
Meta API use cases by job: Instagram publishing, Facebook Pages or Threads, with the login, API host and permissions that Meta's own sample code uses for each.
Meta API use cases are the jobs a Meta developer app is set up for, so pick yours by what the app does: publish to Instagram, publish to a Facebook Page or post to Threads. Each job has its own login, API host and permissions, and the table below maps them from Meta's own sample code on GitHub.
Two companion guides go deeper: Instagram Login or Facebook Login? and Meta App Review: the minimum rules to go live. For WhatsApp messaging, see WhatsApp Cloud API basics. Once the app exists, the build guides cover each part: publishing to Instagram, Threads API publishing, access tokens, rate limits and webhooks.
This page is built from Meta's official GitHub repositories and our own changelog entries. Those sources name one use case outright, the Threads use case. They don't give the exact names the App Dashboard shows for the others or say which use cases can share an app, so this page leaves both out rather than guess.
What this means for you
If a tool posts to your Instagram, Facebook Page or Threads account, its developer made this choice, and it changes what you see when you connect. A tool built on Instagram Login asks you to log in to Instagram. A tool built on Facebook Login asks for your Facebook account and the Page linked to your Instagram. Neither works with a personal Instagram account: you need a Business or Creator account.
The details: Meta API use cases by job
Pick by the job
| Your app's job | What it is built on | Login your users see | Host your code calls | Permissions in Meta's samples |
|---|---|---|---|---|
| Publish posts, reels and carousels to Instagram professional accounts | Instagram API with Instagram Login, or with Facebook Login | Business Login for Instagram, or Facebook Login for Business | graph.instagram.com, or graph.facebook.com | instagram_business_basic, instagram_business_content_publish |
| Moderate and reply to Instagram comments | The same two | The same two | The same two | instagram_business_basic, instagram_business_manage_comments |
| Read and answer Instagram messages | Instagram API with Instagram Login | Business Login for Instagram | graph.instagram.com | instagram_business_basic, instagram_business_manage_messages |
| Publish reels to a Facebook Page | Facebook Login with Page permissions | Facebook Login | graph.facebook.com | pages_show_list, pages_read_engagement, pages_manage_posts |
| Post to Threads | The Threads use case | Threads authorization on www.threads.com or www.threads.net | graph.threads.com or graph.threads.net | threads_basic, threads_content_publish |
| Read a personal Instagram account | Nothing in our changelog | None | None | None |
The Instagram permissions in the table are the Instagram Login names, which replaced the old scope values on January 27, 2025. The Facebook Login path uses a different set. Meta's Instagram collection lists instagram_basic, instagram_content_publish, instagram_manage_comments, pages_show_list and pages_read_engagement for it, and the login guide compares the two side by side.
The Facebook Page row comes from Meta's Facebook Reels sample, which asks for those three permissions plus two more for its A/B test feature. The Threads row lists two hosts because Meta's own sources disagree, as the section on the Threads host explains.
The last row is empty because there is no current route. The Basic Display API, which read personal Instagram accounts, has returned errors since December 4, 2024, and our changelog records no replacement for personal accounts. Both Instagram APIs serve Business and Creator accounts only.
Plain "sign in with Facebook" isn't covered by the Meta GitHub sources used for this page, so it has no row.
What a use case is
Meta's samples treat the use case as the starting point. Step 1 in Meta's Threads Postman collection is to "create a Meta app with the Threads use case", and our Threads changelog entry gives developers the same first step. For Instagram, our launch entry records that new apps add the Instagram product to use the Instagram API with Instagram Login.
A use case can have parts of its own. Meta's webhooks sample tells developers to set up Threads webhooks "as a sub use case under the Threads API main use case".
The Threads use case also carries its own credentials. The first instruction in Meta's Threads sample app is to use the app ID and secret "defined for the Threads API of your app", which it says are not the same as the app's regular app ID and secret.
Which use cases can share an app
Meta's GitHub sources don't list which use cases can be combined in one app. They also don't say whether a use case can be removed once it's added. What they do show is one app holding a Threads API section, with its own ID and secret, next to the app's regular credentials.
For Instagram, Meta's collection documents two setups side by side, the Instagram API with Instagram Login and the Instagram API with Facebook Login, without saying whether one app can use both. Check the App Dashboard before you plan several jobs into one app.
Business app type
Meta's Instagram Platform collection says that, for the purposes of its guide, "we recommend using a Business App". Nothing in the collection or the other Meta repositories used here describes the other app types.
What each path hands your code
- Instagram Login: an Instagram User access token, used on
graph.instagram.com. Since the launch on July 23, 2024, no Facebook Page is needed and Instagram messaging no longer goes through the Messenger API. - Facebook Login for Instagram: a Facebook User access token. Your app calls
/me/accountswith it, which returns the Pages the person manages, a Page access token for each and the linked Instagram account's ID. Meta's collection publishes reels with that Page token and lists a Facebook Page access token for comment replies, while insights take the Facebook User access token. - Facebook Pages: Meta's Facebook Reels sample swaps the login code for a user token, reads the Pages from
/me/accounts, then uploads and publishes reels to the Page'svideo_reelsedge with the Page token. - Threads: a short-lived Threads user token from the code exchange, swapped for a long-lived one with
grant_type=th_exchange_token. The example response in Meta's Threads collection showsexpires_inof 5,184,000 seconds, which is 60 days. That figure appears only in an example response; none of these repositories states the token's lifetime.
The Threads host: Meta's own sources disagree
Our changelog entry records graph.threads.net, introduced on June 7, 2024. On March 23, 2026, a commit titled "threads.net -> threads.com" moved Meta's Threads sample app to graph.threads.com for API calls and www.threads.com for authorization. Meta's Threads Postman collection was updated later that same day and still sets graph.threads.net and www.threads.net.
Meta's GitHub sources don't say whether both hosts work, or which one Meta's documentation now uses. Keep the host in one setting so that switching is a one-line change.
What you need before going live
Both Instagram APIs have two access levels. Meta's Instagram guides on GitHub put it like this: Standard Access if your app serves accounts "you own or manage and have added to your app in the App Dashboard", Advanced Access if it serves accounts "you don't own or manage". By that wording, a scheduler that posts for clients needs Advanced Access.
Meta's samples tie Advanced Access to App Review. The Instagram Reels sample says an app "MUST undergo App Review for Advanced Access" to the two Page Public features it uses for location tags. Meta's Instagram collection sends the Human Agent permission through App Review, Permissions and Features in the App Dashboard. The steps and their order are in Meta App Review: the minimum rules to go live.
Whichever use case you pick, the Graph API version still matters. Meta Graph API versions lists every end date, and Instagram API versions covers what replaced v1 and Basic Display.
What to do next
- Business owners: Make sure your Instagram account is a Business or Creator account. If a tool asks for a Facebook Page, it is built on Facebook Login; if it asks only for Instagram, it uses Instagram Login.
- Marketers and agencies: Ask a tool which login it was built on. The answer tells you whether clients need a linked Page, and the login guide shows which features depend on it.
- Developers: Write down every job your app will do, check in the App Dashboard that one app can hold them, keep the Threads host in config, and plan App Review for every permission you'll use on accounts you don't own. The hubs for Instagram, Facebook and Threads link each platform's changelog.
Questions people ask
What is a use case in a Meta developer app?
It is how a Meta app is set up for one job. Meta's own samples on GitHub start there: the Threads Postman collection's first step is to create a Meta app with the Threads use case, and the webhooks sample adds Threads webhooks as a sub use case under the main Threads API one. Those sources don't list every use case or give each one's exact name.
Which Meta use case do I need to post to Instagram from my app?
Meta's GitHub sources don't give the use case's exact name in the App Dashboard. They show two ways in: Business Login for Instagram on graph.instagram.com, which needs no Facebook Page, or Facebook Login for Business on graph.facebook.com, which needs a Page linked to the Instagram account. Our guide on Instagram Login or Facebook Login compares the two.
Do I need a separate Meta app for Threads?
Meta's Threads sample app talks about the app ID and secret defined for the Threads API of your app, and says they are not the same as the app's regular ID and secret. So the Threads credentials sit inside an app but are their own pair. Which other use cases can share that app isn't stated in Meta's GitHub sources.
Is the Threads API host graph.threads.net or graph.threads.com?
Meta's GitHub sources disagree. The Threads sample app switched to graph.threads.com and www.threads.com on March 23, 2026, while Meta's Threads Postman collection, updated the same day, still uses graph.threads.net. Our changelog records graph.threads.net from June 7, 2024.
Can a Meta app connect a personal Instagram account?
Not through any API in our changelog. The Basic Display API read personal accounts and has returned errors since December 4, 2024, and both current Instagram APIs serve Business and Creator accounts only.
Sources
- Meta on GitHub: Instagram Platform API Postman collection (fbsamples/messenger-platform-samples)
- Meta on GitHub: Threads API sample app (fbsamples/threads_api, src/index.js)
- Meta on GitHub: Threads API sample app README (fbsamples/threads_api)
- Meta on GitHub: Threads API Postman collection (fbsamples/threads_api)
- Meta on GitHub: Threads sample commit "threads.net -> threads.com" (fbsamples/threads_api)
- Meta on GitHub: Facebook Reels publishing sample (fbsamples/reels_publishing_apis)
- Meta on GitHub: Instagram Reels publishing sample README (fbsamples/reels_publishing_apis)
- Meta on GitHub: Graph API webhooks samples (fbsamples/graph-api-webhooks-samples)
Related
- API
LinkedIn Posts API: what you can schedule and how
LinkedIn's Posts API publishes text, images, video, documents, polls and multi-image posts but has no schedule field. How tools schedule, permissions, limits.
- Tools
Open-source social media schedulers you can self-host
Four open-source schedulers you can run yourself: Postiz, TryPost, Mixpost Lite and SkyScheduler. Licences, networks, what self-hosting takes, hosted prices.
- Tools
Free social media schedulers: all 39 free plans, verified
The best free social media scheduler for most people is Zoho Social (6 accounts) or Buffer (any 3 of 11 networks). All 39 free plans compared, with check dates.
- API
Instagram Content Publishing API: posts, reels, carousels
How the Instagram Content Publishing API works on both logins: containers, reels, carousels of up to 10, stories, and why Meta gives 100, 50 or 25 posts a day.