<!-- Generated from the canonical OpenPost public page. Do not edit this build artifact. -->

Title: Instagram
Description: Connect a Page-linked Instagram professional account through Meta OAuth.
Canonical: https://docs.openpo.st/self-hosting/integrations/instagram
Source: [https://docs.openpo.st/self-hosting/integrations/instagram](https://docs.openpo.st/self-hosting/integrations/instagram)

# Instagram

OpenPost uses the Instagram API with Facebook Login. It connects an Instagram Business or Creator account linked to a Facebook Page. It does not connect a personal Instagram account through Instagram-only login.

## Before you start

- Set `OPENPOST_APP_URL` to your instance's public HTTPS origin and `OPENPOST_MEDIA_URL` to a public HTTPS media address. Meta must fetch media before it can publish it.
- Switch the target Instagram account to **Business** or **Creator** and link it to a Facebook Page. The person connecting it must be able to manage that Page.
- Have access to a [Meta developer app](https://developers.facebook.com/apps/) and plan for app review and business verification where Meta requires them. App-role testing in development mode does not grant access to other users.

## Configure the Meta app

1. In the [Meta for Developers dashboard](https://developers.facebook.com/apps/), create or open an app with **Facebook Login** and the Instagram API with Facebook Login. This is the Page-linked integration, not Instagram Login for standalone accounts.
2. In **Facebook Login → Settings**, add this **Valid OAuth Redirect URI**:

   ```text
   https://post.example.com/api/v1/accounts/instagram/callback
   ```

3. Request `business_management`, `instagram_basic`, `instagram_content_publish`, `instagram_manage_comments`, `instagram_manage_messages`, `instagram_manage_insights`, `pages_show_list`, and `pages_read_engagement`. OpenPost requests this set during consent. Obtain the permissions and review level needed for your intended users and features.
4. Copy **App ID** and **App Secret** from **App settings → Basic**. Confirm the Instagram professional account is linked to the Page returned for your test user.

Meta's [Instagram API documentation](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login/) describes the Page-linked account model and permissions. Its [Content Publishing guide](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-facebook-login/content-publishing/) describes media requirements.

![Meta app creation with Facebook Login among the available use cases](https://docs.openpo.st/assets/screenshots/integrations/meta-use-cases.png)

Use the Page-linked Facebook Login flow for OpenPost. Your Instagram account must be linked to a Facebook Page. [Screenshot from Postiz's guide](https://docs.postiz.com/self-host/providers/instagram). Portal layouts may change.

## Save the app in OpenPost

Use this provider entry when [saving your app credentials](https://docs.openpo.st/self-hosting/integrations#save-your-provider-credentials). Replace the example domain with your OpenPost address.

```json
[
  {
    "provider": "instagram",
    "client_id": "your-meta-app-id",
    "client_secret": "your-meta-app-secret",
    "redirect_uri": "https://post.example.com/api/v1/accounts/instagram/callback"
  }
]
```

## Connect and test

1. In **Settings → Workspace → Social accounts**, select **Instagram**. Sign in with the Facebook identity that manages the linked Page and grant access to it.
2. Select the Instagram professional account returned by Meta.
3. Publish one image with a short caption. Confirm the result in OpenPost and on Instagram. Test Reels, carousels, and Stories separately if you need them. OpenPost does not support text-only Instagram posts. Optional Comments and replies, Direct messages, and Analytics start disabled per account.

## If it does not work

- **No Instagram account appears:** Verify it is Business or Creator, linked to a Page the signed-in person can manage, and that the Page and Instagram permissions were granted. Check Business Portfolio access if applicable.
- **Media creation fails:** Fetch a specific uploaded file URL under `OPENPOST_MEDIA_URL` from outside your network. It must be public HTTPS and return the correct file and media type.
- **Permission or redirect error:** Check app review, the scopes granted in consent, and the exact redirect URI. Reconnect after changing permissions.
