Instagram Ads

Communicate with your existing customers and to reach new ones. Learn more about Instagram's ads products and achieve your advertising goals.

You need a Instagram account to create and run ads on Instagram, see Ad Account. Your Instagram account needs to have a profile image and cannot be a Private Account. There are three ways to make an Instagram account:

  • Business Manager: If you have an Instagram account or create an account, use Business Manager to claim the ownership of that account, then use the Business Manager or Facebook Marketing APIs to assign agency or to assign ad accounts. If you have more than one Instagram accounts, this is the best choice.
  • Page's Instagram Account: You can connect an Instagram account to a Facebook Page using Page UI. This is a simple option for small businesses.
  • Page Backed Instagram Account: If you do not have an Instagram account and do not want to create one for organic content, and you have a Facebook Page, you can create a "shadow" Instagram account. It is based on that Page using Marketing APIs to run ads. Nobody can log in to that Instagram account though.

Here are the options for each kind of Instagram account.

Requirements Manage with BM Manage with Page Page+IG Account

Advertiser needs to have an IG account

Yes

Yes

No

Advertiser needs to have Business Manager set up

Yes

No

No

Require some manual steps on Facebook interfaces

Yes, to claim an IG account to BM.

Yes, to claim an IG account to Page.

No

Can add post (media)

Yes, with App

Yes, with App

No

Can comment as the Instagram profile

Yes, with App or Marketing APIs

Yes, with App or Marketing APIs

No

Can read or delete comments for ad posts (media) using APIs

Yes

Yes

Yes

Can run ads with an ad account owned by a user

No

Yes

Yes

Can run ads with an ad account owned by a business

Yes

Yes

Yes

Business Manager owned Accounts

We recommended this method, because you can run ads with it and maintain your presence on Instagram with organic content. Once you login to Instagram, you can add non-advertising posts, reply to comments as that Instagram profile, and so on.

If you own the Instagram account, claim it as an asset in Business Manager. If the Instagram account is owned by someone else, the owner should claim it to their own business first, then assign your business as an agency.

Claim Accounts

To claim an Instagram account for a business, you need the username and password of the account. In Business Manager claim the Instagram account.

Assign Agency

If an advertiser owns an Instagram account and a third party wants to run ads on its behalf, assign it as an agency by clicking on the "Assign Agency" button and entering the agency's business ID.

Assign Ad Accountss

Once you have access to an Instagram Account in Business Manager you can assign one or more ad accounts to it. After assigning an Ad Account all users of the business who can run ads for that account can run ads on the Instagram account. Click Add Ad Accounts and select which ad accounts you want to associate.

You can also do this API by sending a POST. The business and account_id parameters are required. You must be at least an ADMIN of the business. The ad account needs to be owned by this business, or accessible by this business while being owned by the business that owns the Instagram account.

For example, if your business gets access to an ad account and an Instagram account from a client, you can assign them together within your business. But you cannot assign an ad account belonging to one client's business to an Instagram account belonging to another business, even if your business have admin access to both of them.

curl \
-F "access_token=<ACCESS_TOKEN>"\
-F "business=<BUSINESS_ID>"\
-F "account_id=<AD_ACCOUNT_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

To remove an account from an Instagram's association, send a DELETE with the same permissions as above:

curl -X DELETE -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "business=<BUSINESS_ID>"\
-F "account_id=<AD_ACCOUNT_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

You can see which ad accounts for a given business are associated with an Instagram account. You must provide the business parameter and must be at least an EMPLOYEE of this business. We only return ad accounts of the given business and those accounts associated with the given Instagram account. If this Instagram account is associated with ad accounts of other businesses, you won't get them in the response. You can send a GET request:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "business=<BUSINESS_ID>"\
"https://graph.facebook.com/<API_VERSION>/<INSTAGRAM_ACCOUNT_ID>/authorized_adaccounts"

Get Associated Accounts

To check all the Instagram accounts that are owned by a business or that can be accessed by a business, make an GET request:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/instagram_accounts"

The access token is associated with an app. In order to call this API you need:

  • STANDARD access level for the app, or
  • The business you are querying for should own that app

To check all the Instagram accounts associated with an Ad Account, make an HTTP GET call to:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/act_<ADACCOUNT_ID>/instagram_accounts"

The response of these two API calls contains an array of Instagram accounts, each may contain the following fields:

Field Name Description Type

id

The Instagram account id, required for creating ads

numeric string

username

The Instagram user name

string

profile_pic

A URL pointing to the profile picture of this Instagram account

string

For example:

{
  "data": [
    {
      "username": "jaspersmarket",
      "profile_pic": "https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11311930_826942667396992_856534255_a.jpg",
      "id": "1023317097692584"
    }
  ],
  "paging": {
    "cursors": {
      "before": "MTM4OTY1MDkwNzkyMTE4NQ==",
      "after": "MTAyMzMxNzA5NzY5MjU4NA=="
    }
  }
}

You cannot grant permissions to someone directly from an Instagram account. Instead you should grant someone permissions to the Page or business which is connected to the Instagram account. Anyone in your business who has permission to run ads using an ad account linked to an Instagram account can also run ads for that Instagram account.

Use the access token of a user or system user who can access the associated Ad Account to create ad units below.

Page-Connected Instagram Accounts

If the advertiser has an Instagram account, the account owner can use Facebook Page Manager to connect the account to a Facebook Page. Then anyone with the advertiser role on this Page can run ads for the account.

Connect Account with Pages

First conenct your account with your Facebook page. Your Instagram account needs to have a profile image and cannot be a Private Account.

  • In Facebook, select the Settings tab. On the left, you see an Instagram Ads link.
  • Click Instagram Ads.
  • Under Connect an Instagram Account for Advertising, click Add an Account.

Now you can either claim the Instagram account of yours by entering the name and password, or create a new Instagram account.

Each page can have only one Instagram account connected. After you connect an account, Add an Account disappears. Instead you can only click Remove Account. Note there is no API call to perform this step.

Get Your Account ID

Once you connect an Instagram account to a Page, you can see the connection at the Page Setting UI, but you cannot see the Instagram account ID. To get the Instagram account ID and then create ads, call the Page Instagram Accounts API:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=id,username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/instagram_accounts"

The result contains one Instagram account as described above.

Create Ads

You can use any ad accounts, either owned by an individual or by a business, as far as you have access, to create ads on the page-connected Instagram accounts.

  • You need to have at least an advertiser role on the Page. You do not need permission on the Instagram account.
  • When you provide ad creative, you should provide an instagram_actor_id and a page_id. If instagram_actor_id is the Instagram account id of a page-connected Instagram account, you must use the page's ID as page_id. You cannot use a page-connected account with another page in ad creative.

A page can have at most one Page-backed Instagram account, as well as at most one page-connected Instagram account.

Page-backed Instagram Account

You typically create Instagram accounts to run ads with these accounts, post or comment with that profile, and build your community organically. Some advertisers do not want to create and maintain Instagram accounts for simplicity, or they may want to deliver ads and organic content by different Instagram accounts.

In this case, use Page-backed Instagram accounts (PBIA). You can create these accounts with the API and use them to create ads on Instagram. This method looks like running ads from a Facebook Page, however we create a shadow Instagram account for the Facebook Page.

Creating

To create a PBIA with a Facebook Page,

  • You need to have at least an ADVERTISER role on this page. MANAGER or CONTENT_CREATOR also work.
  • Your Page should not have a PBIA, as each page can only have one PBIA. You can use the existing PBIA. Anyone who has access to the page can also access the PBIA. You may want to check whether a page has a PBIA before you create one.

To create a PBIA, send a POST request to:

curl \
-F "access_token=<ACCESS_TOKEN>"\
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/page_backed_instagram_accounts"

This returns an Instagram account ID on success, or an error, if a page has a PBIA.

Reading

To see if a Facebook Page has a PBIA, send GET request:

curl -G \
-d "access_token=<ACCESS_TOKEN>"\
-d "fields=username,profile_pic" \
"https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/page_backed_instagram_accounts"

This returns an Instagram account object, as described if there is one, or empty response otherwise.

Using in Ad Creative

Once a PBIA is created, you can use its ID as the instagram_actor_id in your ad creative as you do with other types of Instagram accounts. You do not need to assign ad accounts to the PBIA. When you provide ad creative using a PBIA, you can use any ad accounts that you have access to, and you need to have at least the ADVERTISER role on the Page backing this PBIA.

Note too that the page_id of your ad creative must be for page associated with this PBIA.

A page can have only one PBIA and only one Page-connected Instagram account.

When you use an ad account not owned by a business via Business Manager, if a page has a page-connected Instagram account, you cannot use its PBIA to create ads. You must use that page-connected Instagram account. When you create ads for an ad account owned by a business, this restriction does not apply.

This Instagram account has the same name and profile picture as the page. If someone changes the page name or profile picture, we automatically update this Instagram account.

You cannot login to this Instagram account to manage posts. To see or manage “comments” and “likes” of your ad posts, you can

  • Get the instagram_permalink_url from your ad creative, then view the ad post. You cannot add post or comment with this PBIA profile.
  • Use Ads Manager to see comments and delete comments of the ad post.
  • Use Instagram Ads Post Moderation API to get comments and delete comments of the ad post. You cannot add post or comment with this API.

Connection Objects

Once you create an Instagram account, you cannot use Connection Objects to view these accounts. You should use {business_id}/{assets} endpoints over connectionobjects. The act_adaccount_id/connectionobjects endpoint includes user-based and ad account-based objects, and may be confusing. For Instagram, use {business_id}/instagram_accounts, act_{adaccount_id}/instagram_accounts, and {page id}/instagram_accounts endpoints.

Resources