Skip to content

Placement Asset Customization

Updated: Jun 28, 2026

Use Placement Asset Customization to customize the creative assets displayed in different ad placements. Maintain control over each creative asset, while using several different placements.

Placement Asset Customization is one of 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:

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 nameDescription
customization_spec type: Supported FieldsRequired. 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. This label attaches 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. This label attaches 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. This label attaches 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 (ad labels). 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 nameDescription
publisher_platformsRequired. Possible placements for your ad. Options are: facebook, instagram, messenger, audience_network, and threads.
facebook_positionsOptional, but required if Facebook is selected in publisher_platforms. Facebook specific placement. Options are: feed, right_hand_column, marketplace, video_feeds, search, story, and notification.
instagram_positionsOptional, 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_positionsOptional, but required if Messenger is selected in publisher_platforms. Messenger specific placements. Options are: sponsored_messages and story.
audience_network_positionsOptional, but required if Audience Networks is selected in publisher_platforms. Audience Network specific placement. Options are: classic, instream_video, and rewarded_video.
threads_positionsOptional, but required if Threads is selected in publisher_platforms. Threads specific placement: threads_stream Note:publisher_platform: instagram and instagram_positions: stream are required to select threads_positions: threads_stream.

Learn more about our available placement options.

Example — Feed Setup

curl -X POST \
  -F 'object_story_spec={
      "page_id": "<PAGE_ID>",
      "instagram_user_id": "<IG_USER_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/v25.0/act_<AD_ACCOUNT_ID>/adcreatives

Example — Instagram Explore home asset customization

curl -X POST \
  -F 'object_story_spec={
      "page_id": "<PAGE_ID>",
      "instagram_user_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": "<WEBSITE_URL>",
      "display_url": "<DISPLAY_URL>",
      "deeplink_url": "<DEEPLINK_URL>",
      "adlabels": [
        {
          "name": "adlabel1"
        },
        {
          "name": "adlabel2"
        }
      ]
    }],
    "optimization_type": "PLACEMENT",
    "titles": [{
      "text": "<TEXT>",
      "adlabels": [
        {
          "name": "adlabel1"
        },
        {
          "name": "adlabel2"
        }
      ]
      }]
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/adcreatives

Example - Instagram search results Asset Customization

curl -X POST \
  -F 'object_story_spec={
      "page_id": "<PAGE_ID>",
      "instagram_user_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": "<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/v25.0/act_<AD_ACCOUNT_ID>/adcreatives

Example — Threads Feed Setup

curl -X POST \  
  -F 'object_story_spec={  
    "page_id": "<PAGE_ID>",  
    "instagram_user_id": "<IG_USER_ID>",  
    "threads_user_id" : "<THREADS_USER_ID>",  
  }' \  
  -F 'asset_feed_spec={  
    "videos": [{  
      "adlabels": [{"name": "labelfb"}],  
      "video_id": "<VIDEO_ID>"  
    },  
    {  
      "adlabels": [{"name": "labelig"}],  
      "video_id": "<VIDEO_ID>"  
    },  
    {  
      "adlabels": [{"name": "labelthreads"}],  
      "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": ["instagram"],  
        "instagram_positions": ["stream"]  
      },  
      "video_label": {  
        "name": "labelig"  
      }  
    },  
    {  
      "customization_spec": {  
        "publisher_platforms": ["threads"],  
        "threads_positions": ["threads_stream"]  
      },  
      "video_label": {  
        "name": "labelthreads"  
      }  
    },  
    {  
      "customization_spec": {},  
      "video_label": {  
        "name": "labelfb"  
      }  
    }],  
    "optimization_type": "PLACEMENT"  
  }' \  
  -F 'access_token=<ACCESS_TOKEN>' \  
https://graph.facebook.com/v23.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, retrieve Instagram-related creative fields via act_<AD_ACCOUNT_ID>/ads. For example:

https://graph.facebook.com/v25.0/act_<AD_ACCOUNT_ID>/ads?fields=creative{effective_instagram_media_id,instagram_permalink_url}

Unofficial mirror for reference/search purposes. All content originates from developers.facebook.com — see the source link at the top of each page. Machine-readable indexes: llms.txt · llms-full.txt · About