# Instagram API with Unified Login: The 3 Logins Compared

What Meta's Instagram API with Unified Login is, how it differs from Instagram Login and Facebook Login for Business, and how to fix its most common errors.

Canonical page: https://www.tryadeli.com/blog/instagram-api-unified-login
Last updated: 2026-11-02

By Nick Reyes, Co-founder and CTO, Adeli. Published 2026-11-02.

## The short answer

The Instagram API with Unified Login is Meta's newest Instagram API setup. A business connects its Instagram professional account by logging in with Instagram or Facebook, no Facebook Page needed, and your app gets one system-user token from the business portfolio and calls graph.facebook.com. Meta ships new Instagram features only on Unified Login. Adeli connects every Instagram account through it.

The Instagram API with Unified Login is the Instagram API setup Meta now recommends for new integrations: a business connects its Instagram professional account by logging in with **either Instagram or Facebook**, needs **no Facebook Page**, and your app receives one **Business Integration System User Access Token** that calls `graph.facebook.com`. Meta's overview says plainly why it matters: "New Instagram API features are released only for this setup."

Developers often meet Unified Login the hard way. They create a new Meta app to use the Instagram API with Instagram Login, and the tab isn't there:

> "the option "API setup with Instagram login" does not appear in any newly created app. Only "API setup with Facebook login" is offered."
>
> — [a developer on the Meta Developer Community](https://developers.facebook.com/community/threads/1078182901510168/), October 2026

That isn't a bug. Meta's [migration guide](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-instagram-login/migration-guide) says **"Newly created apps can't set up the Instagram API with Instagram Login."** Below is how the three setups relate, how the Unified Login flow works, and what we changed when Adeli moved to it.

## What is the Instagram API with Unified Login?

**The Instagram API with Unified Login is a Facebook Login for Business configuration that also offers Instagram sign-in.** You create the configuration in the App Dashboard, put its login URL behind a button, and Meta returns a token that belongs to your client's business portfolio rather than to the person who logged in.

What changes for your app:

- **One login, two sign-in options.** The client picks Instagram or Facebook on Meta's screen, then picks a business portfolio and the Instagram account to share.
- **No Facebook Page.** The Instagram account is shared directly from the portfolio.
- **One token per client.** The [Business Integration System User Access Token](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/authentication) covers every asset the client shared, and it keeps working if the person who logged in leaves the business.
- **One host.** Every call goes to `graph.facebook.com`, with the Instagram account ID in the path.
- **One integration for content, messaging and ads.** Meta lists messaging, publishing, comment moderation, and, with ads permissions in the configuration, the Marketing API and the Conversions API.

Meta's [permissions page](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/permissions) lists what the setup supports: comment moderation, content publishing, hashtag search, insights, mentions, messaging, product tagging, and partnership ads.

## How does Unified Login compare with the other two Instagram logins?

**The Instagram Platform has three setups, and they differ in who logs in, which token you get, and which host you call.** This table merges Meta's [overview](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login) and [migration](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/migration) comparisons.

| | Unified Login | Instagram Login | Facebook Login for Business |
|---|---|---|---|
| **Client logs in with** | Instagram or Facebook | Instagram | Facebook |
| **Facebook Page** | Not required | Not required | Required |
| **Business portfolio** | Required | Not required | Depends on configuration |
| **Access token** | Business Integration System User Access Token | Instagram User access token, refreshed every 60 days | Facebook User or Page access token |
| **API host** | `graph.facebook.com` | `graph.instagram.com` | `graph.facebook.com` |
| **Request object** | Instagram account ID | Instagram account ID or `/me` | Facebook Page ID or `/me` |
| **Permissions** | `instagram_*` | `instagram_business_*` | `instagram_*` plus Page permissions |
| **Set up in new apps** | Yes | No | Yes |

**In short, Unified Login is Facebook Login for Business** with an Instagram sign-in option and no Page requirement. It keeps Facebook Login's host and permission names.

## What is the Instagram API with Instagram Login?

**The Instagram API with Instagram Login is the setup where users sign in with Instagram only, and your app gets an Instagram User access token for `graph.instagram.com`.** It uses the `instagram_business_*` permissions and an Instagram app ID and secret, separate from your Meta app's.

**Existing Instagram Login apps keep working.** Meta's migration guide says "There is no end date yet" and that any change will be announced in the [Instagram Platform changelog](https://developers.facebook.com/documentation/instagram-platform/changelog). Two things have changed, though:

1. **New apps can't add it.** That explains the forum threads about the missing tab. Another developer asked the question directly in October 2026:

   > "Is “API setup with Instagram login” still available for newly created Meta apps?"
   >
   > — [a developer on the Meta Developer Community](https://developers.facebook.com/community/threads/4350826515209606/), October 2026

   And on the first thread, three weeks later: "Same issue here as of 29 October 2026." The answer is no, so build new integrations on Unified Login.

2. **New features skip it.** Meta ships them only on Unified Login.

Our [access token guide](https://www.tryadeli.com/blog/instagram-api-access-token) covers the 60-day Instagram User token and its refresh, if you still maintain an Instagram Login integration.

## What is the Instagram API with Facebook Login for Business?

**The Instagram API with Facebook Login for Business is the older setup where a business signs in with Facebook and your app reaches the Instagram account through the Facebook Page linked to it.** You call `graph.facebook.com` with a Page or User token and request the `instagram_*` permissions plus Page permissions.

Unified Login is built on the same foundation. Meta's [authentication page](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/authentication) says Unified Login "is built on Facebook Login for Business". Three practical consequences:

- **Your Advanced Access carries over.** If your app already has Advanced Access to the `instagram_*` permissions from Facebook Login, Meta says you don't request them again.
- **The App Dashboard tab only appears for apps on Facebook Login for Business.** An app still on classic Facebook Login has to switch first, per the [get started guide](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/get-started).
- **An existing configuration can work.** A Facebook Login for Business configuration with the **Instagram Login Compatible** label can serve as your Unified Login configuration.

The [Instagram API permissions guide](https://www.tryadeli.com/blog/instagram-api-permissions) lists the Facebook Login scopes one by one.

## Which permissions does Unified Login use?

**Unified Login uses the `instagram_*` permissions, the same names as Facebook Login, plus any other Facebook Login for Business permission your configuration needs.** An Instagram Login app maps each permission one to one:

| Instagram Login permission | Unified Login permission |
|---|---|
| `instagram_business_basic` | `instagram_basic` |
| `instagram_business_content_publish` | `instagram_content_publish` |
| `instagram_business_manage_comments` | `instagram_manage_comments` |
| `instagram_business_manage_insights` | `instagram_manage_insights` |
| `instagram_business_manage_messages` | `instagram_manage_messages` |

**Watch the default configuration.** Meta's **Create new configuration** button requests `instagram_basic` and `instagram_manage_messages` (both required), plus `instagram_manage_comments`, `instagram_content_publish`, `ads_management` and `ads_read`, and an optional ad account. If your product doesn't touch ads, edit them out before you submit for review. `instagram_manage_insights` isn't in the default, so add it if you read insights.

**Saving the configuration gives you Standard Access**, enough to test with people who have a role on your app. Connecting anyone else takes Advanced Access through App Review and an app in Live mode. When we put ads permissions through Meta's review, all three passed on the first submission. We followed Meta's instructions for each permission as written, and every claim in the use-case description matched the screencast.

## How does the Unified Login flow work?

**The Unified Login flow is a standard OAuth code exchange followed by two lookups, because the token's `/me` is a system user, not the Instagram account.** These are the steps from Meta's get started guide:

1. **Send the client to the login URL.** It's the Facebook Login for Business dialog with your `config_id`. Add `prompt=login` so a client already signed in to Facebook still sees the Instagram option.

   ```text
   https://www.facebook.com/dialog/oauth?client_id=<META_APP_ID>&config_id=<CONFIG_ID>&redirect_uri=<REDIRECT_URI>&response_type=code&prompt=login
   ```

2. **Exchange the code on your server,** with the Meta app ID and secret, not the Instagram app's.

   ```bash
   curl -G https://graph.facebook.com/v26.0/oauth/access_token \
     -d client_id=<META_APP_ID> \
     -d client_secret=<META_APP_SECRET> \
     -d code=<CODE>
   ```

3. **Read and store the client's business ID.** You need it later to manage or refresh the token.

   ```bash
   curl -G https://graph.facebook.com/v26.0/me \
     -d fields=client_business_id \
     -d access_token=<ACCESS_TOKEN>
   ```

4. **List the Instagram accounts the client shared.** This needs `instagram_basic`, and one token can cover several accounts.

   ```bash
   curl -G https://graph.facebook.com/v26.0/me/assigned_instagram_accounts \
     -d fields=id,username \
     -d access_token=<ACCESS_TOKEN>
   ```

5. **Subscribe each account to webhooks.** Subscriptions from an Instagram Login integration don't carry over.

   ```bash
   curl -X POST "https://graph.facebook.com/v26.0/<IG_USER_ID>/subscribed_apps?subscribed_fields=messages,comments" \
     -H "Authorization: Bearer <ACCESS_TOKEN>"
   ```

From there, every call uses `graph.facebook.com/<IG_USER_ID>/...`. Publishing is `POST /<IG_USER_ID>/media`, and conversations are `GET /<IG_USER_ID>/conversations`. **Don't reuse stored message IDs from an Instagram Login integration**, because Meta changed their format.

## Why is /me/assigned_instagram_accounts empty?

**Meta documents two reasons an Instagram account doesn't show up for a Unified Login client: it's a personal account, or it belongs to a different business portfolio from the one selected at login.** The fix for each is to switch the account to Business or Creator, or to log in again and pick the portfolio that owns it.

Developers are also reporting a third case Meta hasn't answered. In two Meta Developer Community threads from late October and early November 2026, the account was shared in the dialog and the token looked right, yet the list came back empty:

> "The returned token passes app ID, SYSTEM_USER type, scope and client_business_id checks, but GET /me/assigned_instagram_accounts?fields=id,username returns data:[]."
>
> — [a developer on the Meta Developer Community](https://developers.facebook.com/community/threads/2091801151454102/), October 2026

> "So the asset assignment is recorded in Business Manager, but it is not exposed to the system user token."
>
> — [a developer on the Meta Developer Community](https://developers.facebook.com/community/threads/1683224160005163/), November 2026

Both apps were in Development mode, and in the second the app and the Instagram account sat in the same portfolio. **Neither thread had an answer from Meta when we checked on November 2, 2026**, and Meta's docs don't cover that case. What Meta does document:

- **Test users aren't supported.** Use a real Instagram professional account, invited as an Instagram Tester.
- **Collect this before contacting support:** your Meta app ID, the `config_id`, the time of the attempt with its time zone, the step where onboarding stopped, whether the client logged in with Instagram or Facebook, whether they saw the expected portfolio and account, and the error they saw. Never include tokens or secrets.

**Other errors from Meta's [troubleshooting table](https://developers.facebook.com/documentation/instagram-platform/instagram-api-with-unified-login/eligibility-and-troubleshooting):**

| Error or symptom | Cause | Fix |
|---|---|---|
| No **API setup with Unified login** tab | App isn't owned by a business portfolio | Connect the app to a portfolio |
| No Instagram option on the login screen | Configuration isn't Instagram Login Compatible, or the client is already signed in to Facebook | Pick a compatible configuration, or add `prompt=login` |
| `(#10) Access is denied because the instagram account type is not business or creator.` | Personal account | Switch to Business or Creator, then reconnect |
| `(#200) The account owner has disabled access to Instagram Direct Messaging Outside of Instagram App.` | **Allow access to messages** is off | The client turns it on in Instagram's settings |
| Access token error | Client removed the app or moved the account to another portfolio | Stop retrying and ask the client to connect again |

## Do I have to migrate to Unified Login?

**No, an existing Instagram Login or Facebook Login integration doesn't have to move yet.** Meta's migration docs announce no retirement date. The reasons to move anyway are that new features ship only on Unified Login and that new apps can't set up Instagram Login at all.

**Check what Unified Login doesn't support yet.** Meta's migration guide lists four gaps at launch:

- **The Handover Protocol**
- **Switching a personal account to professional during login.** Clients switch in the Instagram app first.
- **Logging in through the Instagram app.** Instagram sign-in opens in the browser, so clients need their password.
- **The App Dashboard's API integration helper**

**Plan for one reconnect per client.** Instagram User tokens don't work with Unified Login, so every client connects once more. Meta suggests moving clients in small groups, and keeping the old token and webhook subscription until one API call and one webhook succeed on the new connection. Expect duplicate messaging webhooks while a client is connected both ways.

## What changed when Adeli moved to Unified Login?

**Adeli moved every new Instagram connection to Unified Login on October 30, 2026.** Customers now see one **Connect with Instagram** button, and Meta's dialog offers both sign-in options. Decisions an implementer will face, and what we chose:

- **Token expiry.** We set our configuration to issue a token that **doesn't expire**, so there's no refresh job. A token error marks the account for reconnection instead of retrying, as Meta advises.
- **Several shared accounts.** A client can share many Instagram accounts in one dialog, and an Adeli profile holds one. We never guess: one shared account is connected, and among several, the one the profile already holds wins. Otherwise the connection fails with `multiple_instagram_accounts` and asks the customer to share only the account they want.
- **Upgrading old connections in place.** Reconnecting an account made with the older logins upgrades it without changing its `accountId`, so API clients holding that ID keep working. Its stored Instagram messages reload, because Meta changes message IDs between logins.
- **Business Discovery.** Reading other public business accounts now works for every Unified Login connection, because every call goes through `graph.facebook.com`.

The [Connect docs](https://www.tryadeli.com/docs/api/connect) describe the API side: `authMethod` is `unified_login` for every new Instagram connection, and the older values are accepted as deprecated aliases.

## How does Adeli fit in?

**Adeli is a unified social media API that holds the Meta app, the Unified Login configuration and the review for you.** Your customers click one button in your product, and you call [Adeli's Instagram API](https://www.tryadeli.com/product/instagram) to publish, read and reply to comments, send DMs, and read insights, with no `config_id` or system-user tokens on your side.

Building Unified Login yourself makes sense when Instagram is your whole product. When Instagram is one network of several, Adeli's [social media posting API](https://www.tryadeli.com/social-media-posting-api) covers it alongside the others. If you're building comment-to-DM flows on top, the [Instagram private replies guide](https://www.tryadeli.com/blog/instagram-private-replies-api) covers the one-message-per-comment rule.

## Frequently asked questions

### Do my clients need a Facebook account to use Unified Login?

No. Meta's migration guide says clients can log in with Instagram. They still need an Instagram professional account and access to the business portfolio that owns it, and Instagram sign-in opens in the browser, so they need their Instagram password.

### Does the Unified Login access token expire?

It depends on the configuration you create in the App Dashboard. Meta lets you choose the expiration there, and the configuration preview shows it. Even a token set to never expire stops working when the client removes your app from their business portfolio or moves the Instagram account to another portfolio.

### Do I need to pass App Review again to switch to Unified Login?

Only for permissions your app doesn't already hold. Unified Login uses the instagram_* permissions. An app with Advanced Access to them from the Instagram API with Facebook Login doesn't request them again. An Instagram Login app has to request the instagram_* equivalents of its instagram_business_* permissions.

### Why does the API integration helper say my token is invalid?

The App Dashboard's API integration helper only works with Instagram User access tokens from the Instagram API with Instagram Login. Meta's troubleshooting page says to call the API directly with the Business Integration System User Access Token instead.

## Related Adeli pages

- [Instagram API for Developers](https://www.tryadeli.com/product/instagram.md): Publish, schedule, and read analytics for Instagram through one API. Adeli owns the Instagram developer app, token refresh, and Meta review. Free to start.
- [Social Media Posting & Scheduling API](https://www.tryadeli.com/social-media-posting-api.md): Adeli's social media posting and scheduling API publishes to Instagram, TikTok, YouTube, Facebook, X, and Bluesky in one request, now or at a set time. Free to start.
- [Social Media Messaging API](https://www.tryadeli.com/social-media-messaging-api.md): Read Instagram, Facebook, and WhatsApp messages and reply to Instagram and Facebook DMs through the same API you publish with. No outbound or unsolicited messaging.
- [All posts on the Adeli blog](https://www.tryadeli.com/blog.md)

## About the author

Nick Reyes is the CTO behind Adeli and builds its API, its platform integrations, and the docs. He is a product engineer with 10 years of experience at Phantom, Airbnb, and Google.
