POST 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 mutlidestination 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 multidestination campaign. Currently we don’t support special ad categories for ads that click to multidestination, so it needs to be NONE or empty array. 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 Multi Destination 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 Multi Destination 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 multidestination. Meta bills you when your ad is shown to people. |
campaign_id
numeric string or integer
| Required. A valid click to multidestination 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.
Note: If you include WhatsApp in the destinations, please make sure you have WhatsApp business number connected to your page. If you include Instagram in the destinations, please make sure you have Instagram business account connected to your page. |
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 multidestination ad set. |
optimization_goal
enum
| Required. What the ad set is optimizing for. Must be set to CONVERSATIONS for ads that click to multidestination. Depending on the campaign’s objective, the ad set may be eligible for different optimization goals. |
promoted_object | Required. The object this ad set is promoting across all its ads. For ads that click to multidestination, 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=<CAMPAIGN_ID>' \
-F 'daily_budget=<DAILY_BUDGET>' \
-F 'destination_type=<DESTINATION_TYPE>' \
-F 'name=<AD_SET_NAME>' \
-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/v25.0/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' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_SET_ID>
{ "name": "<AD_SET_NAME>", "destination_type": "<DESTINATION_TYPE>", "optimization_goal": "CONVERSATIONS", "bid_strategy": "LOWEST_COST_WITHOUT_CAP'" "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 |
|---|---|
asset_feed_spec | Required. Specify the destinations of ads that click to Multi Destination Required:
Messenger WhatsApp Instagram |
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.ice_breakers reference.page_welcome_message object to add icebreakers with a greeting message."page_welcome_message": {
"type":"VISUAL_EDITOR",
"version":2,
"landing_screen_type":"welcome_message",
"media_type":"text",
"text_format":{
"customer_action_type":"ice_breakers",
"message":{
"ice_breakers":[
{"title":"Can I make a purchase?","response":"This is a response 1"},
{"title":"Can I see a menu?", "response":"This is a response 2"},
{"title":"Where are you located?", "response":"This is a response 3"}],
"quick_replies":[],
"text":"Hi {{user_first_name}}! Please let us know how we can help you."}
},
"user_edit":false,
"surface":"visual_editor_new"
}
page_welcome_message field to the creative as follows.curl -X POST \
-F 'name=<CREATIVE_NAME>' \
-F 'object_story_spec={
"page_id": "438346666550309",
"link_data": {
"name": "<AD_HEADLINE>",
"message": "<AD_PRIMARY_TEXT>",
"image_hash": "<IMAGE_HASH>"
"link": "https://fb.com/messenger_doc/",
"page_welcome_message": "<PAGE_WELCOME_MESSAGE>",
"call_to_action": {
"type": "MESSAGE_PAGE",
"value": {
"app_destination": "MESSENGER"
}
}
}
}' \
-F 'asset_feed_spec={
"optimization_type": "DOF_MESSAGING_DESTINATION",
"call_to_actions": [
{
"type": "MESSAGE_PAGE",
"value": {
"app_destination": "MESSENGER",
"link": "https://fb.com/messenger_doc/"
}
},
{
"type": "WHATSAPP_MESSAGE",
"value": {
"app_destination": "WHATSAPP",
"link": "https://api.whatsapp.com/send"
}
},
{
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT",
"link": "https://www.instagram.com"
}
}
]
}' \
-F 'degrees_of_freedom_spec={
"creative_features_spec": {
"standard_enhancements": {
"enroll_status": "OPT_IN"
}
}
}' \
-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=<IG_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_user_id": "<IG_USER_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_user_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_user_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{page_welcome_message},asset_feed_spec' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_CREATIVE_ID>
{ "name": "<CREATIVE_NAME>", "object_story_spec": { "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" }, { "title": "Sample icebreaker" }, { "title": "Sample icebreaker" } ] } } } }, "asset_feed_spec": { "optimization_type": "DOF_MESSAGING_DESTINATION", "call_to_actions": [ { "type": "MESSAGE_PAGE", "value": { "app_destination": "MESSENGER", "link": "https://fb.com/messenger_doc/" } }, { "type": "WHATSAPP_MESSAGE", "value": { "app_destination": "WHATSAPP", "link": "https://api.whatsapp.com/send" } }, { "type": "INSTAGRAM_MESSAGE", "value": { "app_destination": "INSTAGRAM_DIRECT", "link": "https://www.instagram.com" } } ] }, "id": "<AD_CREATIVE_ID>" }
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=<AD_NAME>' \
-F 'adset_id=<AD_SET_ID> \
-F 'creative={
"creative_id": "<AD_CREATIVE_ID>"
}' \
-F 'status=ACTIVE \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads
{ "id": "<AD_ID>" }
"asset_feed_spec": {
"optimization_type": "DOF_MESSAGING_DESTINATION",
"call_to_actions": [
{
"type": "MESSAGE_PAGE",
"value": {
"app_destination": "MESSENGER",
"link": "https://fb.com/messenger_doc/"
}
},
{
"type": "INSTAGRAM_MESSAGE",
"value": {
"app_destination": "INSTAGRAM_DIRECT",
"link": "https://www.instagram.com"
}
}
]
}
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 \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/<AD_ID>
{ "status": "ACTIVE", "adset_id": "<AD_SET_ID>", "id": "<AD_ID>" }