ads_management: make changes in selected ad accountsads_read: read out ads dataread_insights: read out performance insightsads_readads_managementbusiness_management permission at app and user level. Refer to Business Asset Management APIs.curl -G \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/v25.0/<BUSINESS_ID>/owned_ad_accounts"
curl -X POST \
-F 'name="My campaign"' \
-F 'objective="OUTCOME_TRAFFIC"' \
-F 'status="PAUSED"' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/campaigns
curl -X POST \
-F 'access_token=YOUR_ACCESS_TOKEN' \
-F 'name=My Custom Audience' \
-F 'subtype=CUSTOM' \
-F 'description=People who live in New York, aged 25-40, interested in technology' \
-F 'customer_file_source=USER_PROVIDED_ONLY' \
-F 'targeting_spec={
"geo_locations": {
"countries": ["US"],
"regions": [{"key": "4081"}] # New York region key
},
"age_min": 25,
"age_max": 40,
"interests": [{"id": "6003139266461", "name": "Technology"}]
}' \
https://graph.facebook.com/v25.0/act_YOUR_AD_ACCOUNT_ID/customaudiences
curl -X POST \
-F 'access_token=YOUR_ACCESS_TOKEN' \
-F 'name=Reels Ad Set' \
-F 'campaign_id=YOUR_CAMPAIGN_ID' \
-F 'daily_budget=5000' \
-F 'billing_event=IMPRESSIONS' \
-F 'optimization_goal=REACH' \
-F 'start_time=2024-07-10T10:00:00-0700' \
-F 'end_time=2024-07-20T10:00:00-0700' \
-F 'targeting={"geo_locations":{"countries":["US"]},"age_min":18,"age_max":65}' \
-F 'promoted_object={"page_id":"YOUR_PAGE_ID"}' \
-F 'status=PAUSED' \
-F 'instagram_user_id=<IG_USER_ID>' \
-F 'publisher_platforms=["instagram"]' \
-F 'instagram_positions=["reels"]' \
https://graph.facebook.com/v25.0/act_YOUR_AD_ACCOUNT_ID/adsets
publisher_platforms | facebook_position or instagram position | Compatible Objectives | optimization_goal |
|---|---|---|---|
instagram | reels, profile_reels | OUTCOME_APP_PROMOTION | LINK_CLICKSOFFSITE_CONVERSIONSAPP_INSTALLS |
instagram | reels, profile_reels | OUTCOME_AWARENESS | REACHIMPRESSIONSAD_RECALL_LIFTTHRUPLAY |
instagram | reels, profile_reels | OUTCOME_LEADS | OFFSITE_CONVERSIONSLANDING_PAGE_VIEWSLINK_CLICKSREACHIMPRESSIONSLEAD_GENERATIONQUALITY_LEAD |
instagram | reels, profile_reels | OUTCOME_TRAFFIC | LINK_CLICKSLANDING_PAGE_VIEWSREACHCONVERSATIONSIMPRESSIONSVISIT_INSTAGRAM_PROFILE |
instagram | reels, profile_reels | OUTCOME_ENGAGEMENT | CONVERSATIONSLINK_CLICKSTHRUPLAYPOST_ENGAGEMENTREACHIMPRESSIONSREMINDERS_SETOFFSITE_CONVERSIONSLANDING_PAGE_VIEWS |
instagram | reels, profile_reels | OUTCOME_SALES | OFFSITE_CONVERSIONSLANDING_PAGE_VIEWSLINK_CLICKSREACHIMPRESSIONSCONVERSATIONS |
facebook | facebook_reels | OUTCOME_APP_PROMOTION | LINK_CLICKSOFFSITE_CONVERSIONSAPP_INSTALLS |
facebook | facebook_reels | OUTCOME_AWARENESS | REACHIMPRESSIONSAD_RECALL_LIFTTHRUPLAYTWO_SECOND_CONTINUOUS_VIDEO_VIEWS |
facebook | facebook_reels | OUTCOME_LEADS | OFFSITE_CONVERSIONSLANDING_PAGE_VIEWSLINK_CLICKSREACHIMPRESSIONSLEAD_GENERATIONQUALITY_LEAD |
facebook | facebook_reels | OUTCOME_TRAFFIC | LINK_CLICKSLANDING_PAGE_VIEWSREACHCONVERSATIONSIMPRESSIONSQUALITY_CALL |
facebook | facebook_reels | OUTCOME_ENGAGEMENT | CONVERSATIONSLINK_CLICKSTHRUPLAYTWO_SECOND_CONTINUOUS_VIDEO_VIEWSPOST_ENGAGEMENTREACHIMPRESSIONSEVENT_RESPONSESQUALITY_CALLOFFSITE_CONVERSIONSLANDING_PAGE_VIEWSPAGE_LIKES |
facebook | facebook_reels | OUTCOME_SALES | OFFSITE_CONVERSIONSLANDING_PAGE_VIEWSLINK_CLICKSREACHIMPRESSIONSCONVERSATIONSQUALITY_CALL |
Compatible Objective +
optimization_goal Combination
| FB Reels Eligible? | IG Reels Eligible? |
|---|---|---|
OUTCOME_AWARENESS + TWO_SECOND_CONTINUOUS_VIDEO_VIEWS |
✅
|
❌
|
OUTCOME_TRAFFIC + VISIT_INSTAGRAM_PROFILE | ❌ | ✅ |
OUTCOME_TRAFFIC + QUALITY_CALL | ✅ | ❌ |
OUTCOME_ENGAGEMENT + TWO_SECOND_CONTINUOUS_VIDEO_VIEWS | ✅ | ❌ |
OUTCOME_ENGAGEMENT + EVENT_RESPONSES | ✅ | ❌ |
OUTCOME_ENGAGEMENT + REMINDERS_SET | ❌ | ✅ |
OUTCOME_ENGAGEMENT + QUALITY_CALL | ✅ | ❌ |
OUTCOME_ENGAGEMENT + PAGE_LIKES | ✅ | ❌ |
OUTCOME_SALES + QUALITY_CALL | ✅ | ❌ |


GET/{ad_account_id}/connected_instagram_accountsorGET/{business_id}/instagram_business_accountsGET/{ig-business-account-user-id}/mediainstagram_user_id in the creative spec, set instagram_user_id as the Instagram user IDsource_instagram_media_id as the media IDcall_to_action for your promotionboost_eligibility_info as a convenient way to determine whether media is eligible to be boosted as an ad and boost_ads_list to trace related past boost Instagram ad information.curl -i -X POST \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT>/adcreatives?object_id=<PAGE_ID>
&instagram_user_id=<IG_USER_ID>
&source_instagram_media_id=<IG_ORGANIC_MEDIA_ID>
&call_to_action="{'type':'LEARN_MORE','value':{'link': '<YOUR_LINK>'}}"
&access_token=<API_ACCESS_TOKEN>
| PUBLISHING PLATFORM | Ad Format |
|---|---|
Facebook | DESKTOP_FEED_STANDARD, FACEBOOK_STORY_MOBILE, INSTANT_ARTICLE_STANDARD, INSTREAM_VIDEO_DESKTOP, INSTREAM_VIDEO_MOBILE, MARKETPLACE_DESKTOP, MARKETPLACE_MOBILE, MOBILE_FEED_BASIC, MOBILE_FEED_STANDARD, RIGHT_COLUMN_STANDARD, SUGGESTED_VIDEO_DESKTOP, SUGGESTED_VIDEO_MOBILE, WATCH_FEED_MOBILE, FACEBOOK_REELS_BANNER, FACEBOOK_REELS_BANNER_DESKTOP, FACEBOOK_REELS_MOBILE, FACEBOOK_REELS_POSTLOOP, FACEBOOK_REELS_STICKER, FACEBOOK_STORY_STICKER_MOBILE, WATCH_FEED_HOME |
Instagram | INSTAGRAM_STANDARD, INSTAGRAM_STORY, INSTAGRAM_EXPLORE_CONTEXTUAL, INSTAGRAM_EXPLORE_IMMERSIVE, INSTAGRAM_EXPLORE_GRID_HOME, INSTAGRAM_FEED_WEB, INSTAGRAM_FEED_WEB_M_SITE, INSTAGRAM_PROFILE_FEED, INSTAGRAM_REELS, INSTAGRAM_REELS_OVERLAY, INSTAGRAM_SEARCH_CHAIN, INSTAGRAM_SEARCH_GRID, INSTAGRAM_STORY_CAMERA_TRAY, INSTAGRAM_STORY_WEB, INSTAGRAM_STORY_WEB_M_SITE |
curl -X POST \
'https://graph.facebook.com/v25.0/act_{ad_account_id}/adpreviews' \
-F 'access_token={your_access_token}' \
-F 'creative={
"object_story_spec": {
"instagram_user_id": "<IG_USER_ID>",
"video_data": {
"video_id": "{video_id}",
"title": "Check out our new product!",
"description": "Exciting new features and benefits.",
"call_to_action": {
"type": "LEARN_MORE",
"value": {
"link": "https://www.example.com/product"
}
}
}
}
}' \
-F 'ad_format=INSTAGRAM_REELS'
/act_{ad_account_id}/ads to submit your Ad object, and validate the response to confirm successful booking. This step finalizes your ad setup, making it ready for delivery based on the configurations provided.curl -X POST \
-F 'name="My Ad"' \
-F 'adset_id="<AD_SET_ID>"' \
-F 'creative={
"creative_id": "<CREATIVE_ID>"
}' \
-F 'status="PAUSED"' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads
act_<AD_ACCOUNT_ID>/insights<CAMPAIGN_ID>/insights<ADSET_ID>/insights<AD_ID>/insightsbreakdowns=publisher_platform to see the stats of Facebook and Instagram placements separately, as shown in the sample call below. When breaking down insights by Placement level, it will be possible to see how ads perform via Instagram and Facebook Reels placement.curl -X GET \
'https://graph.facebook.com/v25.0/{ad_account_id}/insights' \
-F 'access_token={your_access_token}' \
-F 'level=campaign' \
-F 'fields=campaign_name,impressions,clicks,spend' \
-F 'breakdowns=publisher_platform,platform_position' \
-F 'filtering=[{"field":"platform_position","operator":"IN","value":["instagram_reels"]}]' \
-F 'time_range={"since":"2024-06-01","until":"2024-06-30"}'
OUTCOME_APP_PROMOTIONOUTCOME_AWARENESSOUTCOME_ENGAGEMENTOUTCOME_LEADSOUTCOME_SALESOUTCOME_TRAFFICpreferred_video_tags on the adOUTCOME_SALES, LINK_CLICKS, APP_INSTALLS, or CONVERSIONSpublisher_platforms is set for ["instagram","facebook"], facebook_positions and instagram_positions are set for reelsproduct_set_id in promoted_object for your ad set to promote products from that product set