ads_managementpages_manage_adspages_read_engagementpages_show_listPOST request to the /act_<AD_ACCOUNT_ID>/campaigns endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:| Name | Description |
|---|---|
name
string
| Required. Name for the click to Instagram campaign. |
objective
enum
| Required. Campaign’s objective. Supported objectives are OUTCOME_ENGAGEMENT, OUTCOME_SALES, and OUTCOME_TRAFFIC. |
special_ad_categories
list<Object>
| Required. Special ad categories associated with the click to Instagram campaign. See the Ad Campaign reference for more details. |
status
enum
| Optional. Valid options are PAUSED and ACTIVE.If this status is PAUSED, all its active ad sets and ads will be paused and have an effective status CAMPAIGN_PAUSED. |
curl -X POST \
-F 'name=Click to Instagram Campaign' \
-F 'objective=OUTCOME_ENGAGEMENT' \
-F 'status=ACTIVE' \
-F 'special_ad_categories=[]' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/campaigns
{ "id": "<AD_CAMPAIGN_ID>" }
POST request to /<AD_CAMPAIGN_ID>.GET request to /<AD_CAMPAIGN_ID>. See the Ad Campaign reference for the complete list of available parameters.curl -X GET -G \
-d 'fields=name,status,objective' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_CAMPAIGN_ID>
{ "name": "Click to Instagram Campaign", "status": "ACTIVE", "objective": "OUTCOME_ENGAGEMENT", "id": "<AD_CAMPAIGN_ID>" }
POST request to the /act_<AD_ACCOUNT_ID>/adsets endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:| Name | Description |
|---|---|
bid_amount
unsigned int32
| Required if bid_strategy is set to LOWEST_COST_WITH_BID_CAP or COST_CAP.The maximum amount you want to pay for a result based on your optimization_goal. |
bid_strategy
enum
| Optional. The bid strategy for this campaign to suit your specific business goals. See the Ad Campaign reference for more details. Values: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP |
billing_event
enum
| Required. Must be set to IMPRESSIONS for ads that click to Instagram. Meta bills you when your ad is shown to people. |
campaign_id
numeric string or integer
| Required. A valid click to Instagram campaign you wish to add this ad set to. |
daily_budget
int64
| Required if lifetime_budget is not set.The daily budget defined in your account currency. Allowed only for ad sets with a duration (difference between end_time and start_time) longer than 24 hours.Either daily_budget or lifetime_budget must be greater than 0. |
destination_type
string
| Required.
Set to INSTAGRAM_DIRECT for single-destination click to Instagram ads. |
end_time
datetime
| Required when lifetime_budget is specified.When creating an ad set with a daily_budget, specify end_time=0 or leave this field empty to set the ad set as ongoing with no end date.Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDT. UTC UNIX timestamp. |
lifetime_budget
int64
| Required if daily_budget is not set.The lifetime budget of the ad set defined in your account currency. If specified, you must also specify an end_time.Either daily_budget or lifetime_budget must be greater than 0. |
name
string
| Required. The name of the click to Instagram ad set. |
optimization_goal
enum
| Required. What the ad set is optimizing for. Depending on the campaign’s objective, the ad set may be eligible for different optimization goals. OUTCOME_ENGAGEMENT: Engagement objective can optimize for CONVERSATIONS, and LINK_CLICKS.OUTCOME_SALES: Sales objective can optimize for CONVERSATIONS, OFFSITE_CONVERSIONS, LINK_CLICKS, IMPRESSIONS, and REACH.OUTCOME_TRAFFIC: Traffic objective can optimize for CONVERSATIONS, LANDING_PAGE_VIEWS, LINK_CLICKS, IMPRESSIONS, REACH, and POST_ENGAGEMENT. |
promoted_object | Required. The object this ad set is promoting across all its ads. For ads that click to Instagram, promoted_object has the following conditions:
See Ad Set, Promoted Object for more details. |
start_time
datetime
| Optional. The start time of the ad set. This field will default to the current time if no value is provided. Example: 2015-03-12 23:59:59-07:00 or 2015-03-12 23:59:59 PDT. UTC UNIX timestamp. |
status
enum
| Optional. The status of the ad set. It can be different from the effective status due to its parent campaign. This field will default to ACTIVE if no value is provided.Vales: ACTIVE, PAUSED, DELETED, ARCHIVED |
targeting
Targeting object
| Required. The targeting structure of an ad that clicks to Instagram. See Targeting for more details. |
time_start
datetime
| Optional. Interchangeable with start_time. |
time_stop
datetime
| Required when lifetime_budget is specified.Interchangeable with end_time. |
curl -X POST \ -F 'access_token=<ACCESS_TOKEN>' \ -F 'bid_strategy=LOWEST_COST_WITHOUT_CAP' \ -F 'billing_event=IMPRESSIONS' \ -F 'campaign_id=<AD_CAMPAIGN_ID>' \ -F 'daily_budget=<DAILY_BUDGET>' \ -F 'destination_type=INSTAGRAM_DIRECT' \ -F 'name=Click to Instagram Ad Set' \ -F 'optimization_goal=CONVERSATIONS' \ -F 'promoted_object={ "page_id": "<PAGE_ID>" }' \ -F 'status=ACTIVE' \ -F 'start_time=<START_TIME>' \ -F 'targeting={ "geo_locations": { "countries":["US","CA"] }, "device_platforms": ["mobile", "desktop"] }' \ https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/adsets
{ "id": "<AD_SET_ID>" }
POST request to /<AD_SET_ID>.GET request to /<AD_SET_ID>. See the Ad Set reference for the complete list of available parameters.curl -X GET -G \
-d 'fields=name,destination_type,optimization_goal,bid_strategy,status' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_SET_ID>
{ "name": "Click to Instagram Ad Set", "destination_type": "INSTAGRAM_DIRECT", "optimization_goal": "CONVERSATIONS", "bid_strategy": "LOWEST_COST_WITHOUT_CAP", "status": "ACTIVE", "id": "<AD_SET_ID>" }
POST request to the /act_<AD_ACCOUNT_ID>/adcreatives endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:| Name | Description |
|---|---|
name
string
| Required. The name for your ad creative. |
object_story_spec | Required. An object containing information about a message. See Ad Creative Object Story Spec for more details. Required:
Optional:
|
degrees_of_freedom_spec | Optional. See Standard Enhancements for Advantage+ Creative for more details. |
page_welcome_message field under object_story_spec.{{user_first_name}}, {{user_last_name}}, {{user_full_name}}, and {{page_name}} can be used in the greeting message and automated response. For example, “Hi {{user_first_name}}. Welcome to {{page_name}}!”"page_welcome_message": {
"type": "VISUAL_EDITOR",
"version": 2,
"landing_screen_type": "welcome_message",
"media_type": "text",
"text_format": {
"customer_action_type": "ice_breakers",
"message": {
"text": "<GREETING_MESSAGE>",
"ice_breakers": [
{
"title": "<ICEBREAKER>",
"response": "<AUTO_RESPONSE>"
},
{
"title": "<ICEBREAKER>",
"response": "<AUTO_RESPONSE>"
},
{
"title": "<ICEBREAKER>",
"response": "<AUTO_RESPONSE>"
}
]
}
}
}
curl -X POST \
-F 'name=Sample ad creative' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"instagram_actor_id": "<INSTAGRAM_ACCOUNT_ID>",
"link_data": {
"message": "<AD_PRIMARY_TEXT>",
"image_hash": "<IMAGE_HASH>"
"page_welcome_message": "<PAGE_WELCOME_MESSAGE>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
}
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
curl -X POST \
-F 'name=Sample ad creative' \
-F 'object_story_spec={
"message": "<AD_PRIMARY_TEXT>",
"page_id": "<PAGE_ID>",
"instagram_actor_id": "<INSTAGRAM_ACCOUNT_ID>",
"video_data": {
"video_id": "<VIDEO_ID>",
"image_url": "<THUMBNAIL_URL>"
"page_welcome_message": "<PAGE_WELCOME_MESSAGE>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
}
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
curl -X POST \ -F 'name=Sample ad creative' \ -F 'object_story_spec={ "page_id": "<PAGE_ID>", "instagram_actor_id": "<INSTAGRAM_ACCOUNT_ID>", "link_data": { "message": "<AD_PRIMARY_TEXT>", "image_hash": "<IMAGE_HASH>" "call_to_action": { "type": "INSTAGRAM_MESSAGE", "value": { "app_destination": "INSTAGRAM_DIRECT" } } } }' \ -F 'asset_feed_spec={ "additional_data": { "partner_app_welcome_message_flow_id": "<FLOW_ID>", } }' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/act_<AD_ACCOUNT_ID>/adcreatives
curl -X POST \
-F 'name=Sample ad creative' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"instagram_actor_id": "<INSTAGRAM_ACCOUNT_ID>",
"link_data": {
"message": "<AD_PRIMARY_TEXT>",
"page_welcome_message": "<PAGE_WELCOME_MESSAGE>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
},
"child_attachments": [
{
"image_hash": "<IMAGE_HASH>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
},
"name": "<AD_HEADLINE>"
},
{
"video_id": "<VIDEO_ID>",
"picture": "<THUMBNAIL_URL>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
},
"name": "<AD_HEADLINE>"
}
],
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
{ "id": "<AD_CREATIVE_ID>" }
curl -X POST \
-F 'name=Sample ad creative from Instagram post' \
-F 'object_id=<PAGE_ID>' \
-F 'instagram_user_id=<INSTAGRAM_USER_ID>' \
-F 'source_instagram_media_id=<INSTAGRAM_POST_ID>' \
-F 'call_to_action={
"type": "INSTAGRAM_MESSAGE",
"value": {
"link": "https://www.instagram.com"
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
curl -X POST \
-F 'name=Sample ad creative from Instagram image' \
-F 'object_story_spec={
"page_id": "<PAGE_ID>",
"instagram_actor_id": "<INSTAGRAM_ACTOR_ID>",
"link_data": {
"message": "<AD_PRIMARY_TEXT>",
"picture": "<IMAGE_URL>"
"page_welcome_message": "<PAGE_WELCOME_MESSAGE>",
"call_to_action": {
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT"
}
}
}
}' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives
curl -i -X POST \
"https://graph.facebook.com/v25.0/act_<AD_ACCOUNT>/adcreatives
?object_story_id=<postOwnerID_postID>
&instagram_actor_id=<IG_USER_ID>
&call_to_action="{'type':MESSAGE_PAGE,'value':{'app_destination':'MESSENGER'}}"
&access_token=<ACCESS_TOKEN>"
object_story_id is the post ID in the format of postOwnerID_postID and instagram_actor_id is either a Page-connected Instagram account ID or the Page-backed Instagram account ID. See more details in Set Up Instagram Accounts With Pages.GET request to /<AD_CREATIVE_ID>. See Ad Creative for the complete list of available parameters.curl -X GET -G \
-d 'fields=name,object_story_spec{link_data{call_to_action,page_welcome_message}}' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_CREATIVE_ID>
{ "name": "Sample ad creative", "object_story_spec": { "link_data": { "call_to_action": { "type": "INSTAGRAM_MESSAGE", "value": { "app_destination": "INSTAGRAM_DIRECT" } }, "page_welcome_message": { "type": "VISUAL_EDITOR", "version": 2, "landing_screen_type": "welcome_message", "media_type": "text", "text_format": { "customer_action_type": "ice_breakers", "message": { "text": "Sample greeting message", "ice_breakers": [ { "title": "Sample icebreaker 1" }, { "title": "Sample icebreaker 2" }, { "title": "Sample icebreaker 3" } ] } } } } }, "id": "<AD_CREATIVE_ID>" }
curl -X GET \
-F 'fields="iabp_id"' \
-F 'business_id=<BUSINESS_ID>' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/connected_instagram_accounts_with_iabp
object_id.curl -i -X POST \
"https://graph.facebook.com/v25.0/act_<AD_ACCOUNT>/adcreatives
?object_id=<IABP_ID> // iabp_id instead of page_id
&instagram_user_id=<IG_USER_ID>
&source_instagram_media_id=<IG_ORGANIC_MEDIA_ID>
&access_token=<API_ACCESS_TOKEN>"
POST request to the /act_<AD_ACCOUNT_ID>/ads endpoint where <AD_ACCOUNT_ID> is the ID for your Meta ad account. Your request must include:| Name | Description |
|---|---|
name
string
| Required. The name for your ad creative. |
adset_id
numeric string or integer
| Required. The ID of the ad set. |
creative | Required. The ad creative to be used by this ad. You may supply the creative_id of an existing ad creative or create a new ad creative by including all required fields. See Ad Creative for more details. |
status
enum
| Required. The configured status of the ad. Values: ACTIVE, PAUSED, DELETED, ARCHIVED |
curl -X POST \
-F 'name=Click to Instagram Ad' \
-F 'adset_id=<AD_SET_ID> \
-F 'creative={
"creative_id": "<AD_CREATIVE_ID>"
}' \
-F 'status=PAUSED \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads
{ "id": "<AD_ID>" }
"call_to_action": {
"value": {"app_destination":"INSTAGRAM_DIRECT"},
"type": "MESSAGE_PAGE"
}
GET request to /<AD_ID>. See the ad reference for the complete list of available parameters.curl -X GET -G \
-d 'fields=status,adset_id,campaign_id \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_ID>
{ "status": "PAUSED", "adset_id": "<AD_SET_ID>", "campaign_id": "<AD_CAMPAIGN_ID>", "id": "<AD_ID>" }
POST request to /<AD_ID> with the status parameter set to ACTIVE where <AD_ID> is the ad you want to publish.curl -X POST \
-F 'status=ACTIVE' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_ID>
{ "success": true }
effective_status will be PENDING_REVIEW. Once approved, the status will automatically update to ACTIVE, and your ad will be delivered.curl -X GET -G \
-d 'fields=status,effective_status' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_ID>
{ "status": "ACTIVE", "effective_status": "PENDING_REVIEW", "id": "<AD_ID>" }