Appearance
Get Started
Updated: Dec 12, 2025
With Marketing API you can create, measure, and optimize ads on Instagram in the main Stream, in Stories, the Explore tab, and in Reels. To create your ads:
- Step 1: Get Instagram account ID
- Step 2: Create campaign
- Step 3: Create ad set - Pick a
placementthat includes Instagram. Include both Facebook and Instagram so the system automatically delivers ads to the best audiences on both platforms. - Step 4: Provide ad creative
- Step 5: Schedule Delivery
Be aware that:
- Instagram ads do not support all Facebook ads objectives.
- Not all creative formats supported by Facebook work on Instagram.
To use Instagram and Facebook posts as ads, see Use Posts as Instagram Ads.
Step 1: Get Instagram account ID
You need to know your Instagram account's ID before you start creating ads. Depending on your account's type, you have different ways of getting an account ID:
| Type of Instagram Account | How To Find Account ID |
|---|---|
| Business Manager Instagram Account (Recommended) - Implementation Guide | See Set Up Instagram Accounts On Business Manager, Get Associated Accounts. Save the ID to use in your ads. |
| Page-Connected Instagram Accounts - Implementation Guide | See Set Up Instagram Accounts With Pages, Get Account ID. Save the ID to use in your ads. |
| Page-Backed Instagram Account - Implementation Guide | See Set Up Instagram Accounts With Pages, Read PBIA. Save the ID to use in your ads. |
Step 2: Create Ad Campaign
Creating ad objects for Instagram is the same as it is for Facebook ads. To start, create a Facebook Ad Campaign and specify your objective.
Instagram compatible objectives vary according to your chosen ad placement:
| Ad Placement | Compatible Objectives |
|---|---|
| Ads in Explore | BRAND_AWARENESS, REACH, LINK_CLICKS, POST_ENGAGEMENT, APP_INSTALLS, VIDEO_VIEWS, LEAD_GENERATION, MESSAGES, CONVERSIONS, and PRODUCT_CATALOG_SALES |
| Ads in Instagram Explore home | BRAND_AWARENESS, REACH, LINK_CLICKS, APP_INSTALLS, VIDEO_VIEWS, LEAD_GENERATION, MESSAGES and CONVERSIONS. |
| Ads in Instagram profile feed | BRAND_AWARENESS, REACH, LINK_CLICKS, POST_ENGAGEMENT, APP_INSTALLS, VIDEO_VIEWS, MESSAGES, CONVERSIONS, and STORE_TRAFFIC |
| Ads in Instagram search results | BRAND_AWARENESS, REACH, LINK_CLICKS, POST_ENGAGEMENT, APP_INSTALLS, VIDEO_VIEWS, LEAD_GENERATION, CONVERSIONS, and PRODUCT_CATALOG_SALES |
| Reels ads | BRAND_AWARENESS, REACH, LINK_CLICKS, APP_INSTALLS, VIDEO_VIEWS, MESSAGES and CONVERSIONS |
| Story ads | BRAND_AWARENESS, REACH, LINK_CLICKS, APP_INSTALLS, VIDEO_VIEWS, LEAD_GENERATION, MESSAGES, CONVERSIONS, PRODUCT_CATALOG_SALES, and STORE_TRAFFIC |
| Stream ads | BRAND_AWARENESS, REACH, LINK_CLICKS, POST_ENGAGEMENT, APP_INSTALLS, VIDEO_VIEWS, LEAD_GENERATION, MESSAGES, CONVERSIONS, PRODUCT_CATALOG_SALES, and STORE_TRAFFIC |
The minimum spend budget on Instagram is the same as the one for Facebook self-serve ads, with different limits per currency and limits based on bid_amount.
Learn about default placements for your ads and instagram_positions.
For Reach And Frequency campaigns, see Instagram Reach And Frequency.
Step 3: Create Ad Set
Create an ad set with the desired:
- Optimization Goal: Your goal options depend on the objective set at the campaign level. Check our validation rules.
- Targeting Options: You can use all Facebook targeting options for Instagram campaigns, including Facebook's native basic targeting options, Custom Audiences, and Lookalike Audiences.
- Budget
- Billing Event: The
billing_eventdepends on whichoptimization_goalyou choose. Check our validation rules. - Schedule
For APP_INSTALLS and CONVERSIONS campaigns, a promoted_object is also required at the ad set level.
If you create a Reach and Frequency ad set, set rf_prediction_id. The destination_ids of the Reach Frequency Prediction must contain the Instagram account ID.
Placement
To deliver ads to Instagram, include instagram under publisher_platforms in your ad set. You can use Instagram stream, story, explore, reels, explore_home, and ig_search placements, or you can enable multiple platforms including Instagram's placements. If you choose multiple platforms, Facebook optimizes delivery based on your target audience on each platform with Placement Optimization.
- To show ads exclusively in Stream or Stories specify
streamorstoryin theinstagram_positionsfield. - Instagram displays ads using
"instagram_positions":["story"]in both the Instagram Desktop and Mobile web feeds. - If you want to display your ads in Instagram's Explore tab you must include both
streamandexploreas placements. - If you want to display your ads on Instagram's Explore home placement you must include both
streamandexploreas placements. - If you want to display your ads on Instagram's search results placement you must include
streamas a placement. - Instagram Web Feeds ads use the
streamplacement and are checked for web eligibility to be delivered to both desktop and mobile web feeds. The compatible objectives areBRAND_AWARENESS,REACH,LINK_CLICKS,POST_ENGAGEMENT,VIDEO_VIEWS, andCONVERSIONS.
If instagram_positions is not specified, ads are delivered to all available Instagram placements.
To deliver ads only to Instagram Stories, use story only inside instagram_positions. In this case, you should also have instagram as the only value for publisher_platforms.
Examples
Create an ad set with Instagram as placement:
curl \
-F 'name=Instagram Adset' \
-F 'optimization_goal=LINK_CLICKS' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["instagram"],
"user_os": ["iOS"]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsetsCreate an ad set with Instagram Explore home as a targeted placement:
curl \
-F 'name=Instagram Adset' \
-F 'optimization_goal=LINK_CLICKS' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["instagram"],
"instagram_positions": ["stream", "explore", "explore_home"],
"user_os": ["iOS"]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsetsCreate an ad set with Instagram search results as a targeted placement:
curl \
-F 'name=Instagram Adset' \
-F 'optimization_goal=LINK_CLICKS' \
-F 'billing_event=IMPRESSIONS' \
-F 'bid_amount=2' \
-F 'daily_budget=1000' \
-F 'campaign_id=<CAMPAIGN_ID>' \
-F 'targeting={
"geo_locations": {"countries":["US"]},
"publisher_platforms": ["instagram"],
"instagram_positions": ["stream", "ig_search"],
"user_os": ["iOS"]
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adsetsStep 4: Provide Ad Creative
At this point, you should provide your ad creative. For creatives to be used on Instagram only or mixed placements, you need to supply your Instagram account ID and your Facebook Page ID. Your page information does not appear anywhere on your Instagram ad. If the Instagram account is connected to a Page, or is a Page-backed Instagram Account, the same Page needs to be used.
When you provide ad creative, an unpublished post is created. You can see the unpublished post from the page when you query promotable feed using the Page ID.
Relevant Guides
- Use Posts as Instagram Ads
- Add Optional Call-To-Action
- Get Ad Preview
- Instagram Advantage+ Catalog Ads
- Carousel Ads: You can create carousel ads with Ads Manager as well as the API.
- Customize Stories
- Add Interactive Elements
Step 5: Schedule delivery
Create your Ad object to link your creative to your ad set.
Ad review process
The ad review policies are the same for Facebook and Instagram. As we make Instagram available to more businesses, we want the same high-quality ad experience on Instagram that we have on Facebook.
This requires understanding more about how the community interacts with different kinds of advertiser content on Instagram. Since it takes time to build the same kind of models that drive Facebook ads, Instagram ads currently rely on human review to filter out a small percentage of ads and provide suggestions for improvement.
Our ultimate goal is to make running a campaign across Facebook and Instagram a seamless experience and to make ads a relevant, valuable part of the Instagram product.