Placement Asset Customization

Use this solution to customize the creative assets displayed in different ad placements. Maintain control over the creative, while using several different placements.

Placement Asset Customization is one of our three APIs that use asset customization rules. Learn more about Asset Customization Rules.

Get Started

Placement Asset Customization with existing posts is no longer supported via the API. You can only use this option in Ads Manager.

Step 2: Provide Creative

Use asset_feed_spec to provide your creative. You can specify multiple creative assets for each asset type, including images, videos, carousels, headlines, and body text. Only provide one link description, since the link description cannot be customized per placement.

To apply customization:

  1. Set asset_customization_rules inside your asset_feed_spec.
  2. For each rule, add customization_spec and asset labels.

For Placement Asset Customization, every asset_feed_spec needs to have more than one customization rule attached to it.

See Asset Customization Rules.

Supported Properties


Property Name Description

customization_spec

type: Supported Fields

Required.

Placements where you want to display the assets.

image_label

format: {"name": "{LABEL_NAME}"}

Required for SINGLE_IMAGE format.

Label of the image you want to display. It is attached to the image assets in asset_feed_spec.

video_label

format: {"name": "{LABEL_NAME}"}

Required for SINGLE_VIDEO format.

Label of the video you want to display. It is attached to the video assets in asset_feed_spec.

carousel_label
format: {"name": "{LABEL_NAME}"}

Required for CAROUSELS format.

Label of the carousel you want to display. It is attached to the carousel assets in asset_feed_spec.

Note: if providing carousels via Placement Asset Customization, all child attachments must be defined within the Asset Feed Spec and referenced via adlabels. Child attachments may not be defined inline. See Asset Feed Spec Options for more details on the carousels format.

Supported Fields in customization_spec


Property Name Description

publisher_platforms

Required.

Possible placements for your ad. Options are: facebook, instagram, messenger, and audience_network.

facebook_positions

Optional, but required if Facebook is selected in publisher_platforms.

Facebook specific placement. Options are: feed, right_hand_column, marketplace, video_feeds, search, and story.

instagram_positions

Optional, but required if Instagram is selected in publisher_platforms.

Instagram specific placements. Options are: stream, story, explore, explore_home, profile_feed and ig_search.

Note: The explore_home placement only supports the SINGLE_IMAGE format.

messenger_positions

Optional, but required if Messenger is selected in publisher_platforms.

Messenger specific placements. Options are: messenger_home, sponsored_messages, and story.

audience_network_positions

Optional, but required if Audience Networks is selected in publisher_platforms.

Audience Network specific placement. Options are: classic, instream_video, and rewarded_video.

Learn more about our available placement options.

Example — Feed Setup

curl \
  -F 'object_story_spec={
       "page_id": "<PAGE_ID>",
       "instagram_actor_id": "<INSTAGRAM_ACTOR_ID>",
     }' \
  -F 'asset_feed_spec={
      "videos": [
      {
        "adlabels": [
          {
            "name": "labelfb"
          }
        ],
        "video_id": "<VIDEO_ID>"
      },
      {
        "adlabels": [
          {
            "name": "labelig"
          }
        ],
        "video_id": "<VIDEO_ID>"
      }
    ],
    "bodies": [
      {
        "text": "Begin Your Adventure"
      }
    ],
    "link_urls": [
      {
        "website_url": "<WEBSITE_URL>",
        "display_url": "<DISPLAY_URL>"
      }
    ],
    "titles": [
      {
        "text": "Level Up"
      }
    ],
    "ad_formats": [
      "SINGLE_VIDEO"
    ],
    "call_to_action_types": [
      "WATCH_MORE"
    ],
    "descriptions": [
      {
        "text": "Description"
      }
    ],
    "asset_customization_rules": [
      {
        "customization_spec": {          
          "publisher_platforms": [
            "facebook"
          ],          
          "facebook_positions": [
            "feed",
            "instream_video"
          ]
        },
        "video_label": {
          "name": "labelfb"
        }
      },
      {
        "customization_spec": {          
          "publisher_platforms": [
            "instagram"
          ],          
          "instagram_positions": [
            "stream"           
          ]
        },
        "video_label": {
          "name": "labelig"
        }
      }
    ]
  }' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adcreatives

Example — Instagram Explore home Asset Customization

curl \
  -F 'object_story_spec={
       "page_id": "<PAGE-ID>",
       "instagram_actor_id": "<INSTAGRAM-ID>",
     }' \
  -F 'asset_feed_spec={
        "ad_formats": [
          "SINGLE_IMAGE"
        ],
        "asset_customization_rules": [
          {
            "image_label": {
              "name": "<IMAGE-LABEL>"
            },
            "customization_spec": {
              "publisher_platforms": [
                "instagram"
              ],
              "instagram_positions": [
                "explore_home"
              ]
            }
          }
        ],
        "bodies": [
          {
            "text": "",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "call_to_action_types": [
          "LEARN_MORE"
        ],
        "images": [
          {
            "hash": "<IMAGE-HASH>",
            "adlabels": [
              {
                "name": "adlabel1"
              }
            ]
          },
          {
            "hash": "<IMAGE-HASH>",
            "image_crops": {
              "100x100": [
                [
                  604,
                  0
                ],
                [
                  1659,
                  1055
                ]
              ]
            },
            "adlabels": [
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "link_urls": [
          {
            "website_url": "",
            "display_url": "",
            "deeplink_url": "",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "optimization_type": "PLACEMENT",
        "titles": [
          {
            "text": "",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ]
      }' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adcreatives

Example - Instagram search results Asset Customization

curl 
  -F 'object_story_spec={
       "page_id": "<PAGE-ID>",
       "instagram_actor_id": "<INSTAGRAM-ID>",
     }' \
  -F 'asset_feed_spec={
        "ad_formats": [
          "SINGLE_IMAGE"
        ],
        "asset_customization_rules": [
          {
            "image_label": {
              "name": "placement_asset_f1048d832ecd558_1661539731099"
            },
            "customization_spec": {
              "publisher_platforms": [
                "instagram"
              ],
              "instagram_positions": [
                "ig_search"
              ]
            }
          }
        ],
        "bodies": [
          {
            "text": "",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "call_to_action_types": [
          "LEARN_MORE"
        ],
        "images": [
          {
            "hash": "9ffd7307eae1f9c6e5250fc8760d285f",
            "adlabels": [
              {
                "name": "adlabel1"
              }
            ]
          },
          {
            "hash": "9ffd7307eae1f9c6e5250fc8760d285f",
            "image_crops": {
              "100x100": [
                [
                  604,
                  0
                ],
                [
                  1659,
                  1055
                ]
              ]
            },
            "adlabels": [
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "link_urls": [
          {
            "website_url": "<WEBSITE_URL>",
            "display_url": "<DISPLAY_URL>",
            "deeplink_url": "<DEEPLINK_URL>",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ],
        "optimization_type": "PLACEMENT",
        "titles": [
          {
            "text": "",
            "adlabels": [
              {
                "name": "adlabel1"
              },
              {
                "name": "adlabel2"
              }
            ]
          }
        ]
      }' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/act_<AD_ACCOUNT_ID>/adcreatives
  

See all available options for Asset Feed Spec.

Optional Step 5: Read Ad Creative

For Placement Asset Customization ads, Instagram related creative fields should be retrieved via {ad-account-id}/ads. For example:

https://graph.facebook.com/v21.0/{ad-account-id}/ads?fields=creative{effective_instagram_story_id,instagram_permalink_url}