Instagram Carousel Ads

To create carousel ads, provide ad creative with multiple child_attachments in link_data for Instagram Stream. We require at least three for MOBILE_APP_INSTALLS or MOBILE_APP_ENGAGEMENT and two for other objectives. You need to provide instagram_actor_id, and only use objectives supported in Instagram Ads.

There are some differences between Facebook and Instagram carousel ads. These differences only happen with Instagram placement. If you have an ad set with both Facebook and Instagram placements enabled, what works on Facebook may be different from that on Instagram. For example, multi_share_optimized has no effect on Instagram, but works on Facebook.

  • multi_share_optimized has no effect on Instagram. If more than 5 attachments are provided, the first 5 will be used, based on the order of them in the ad creative creation.
  • multi_share_end_card has no effect on Instagram. End cards are not available on Instagram.
  • Each attachment must have link specified, which is the destination of the image click.
  • Each attachment has a Call To Action button. You can either specify it, or Instagram will default it to "Learn more" and link to the link setting of the attachment.
  • The caption field can be used to specify the display url in one-tap overlay. If not specified, the link url will be used.
  • Each carousel card has one image or video and a Call To Action button, and there is one message from message setting in the link_data. The name of each attachment is also shown, between the image or video and the message. The description field of the link_data and of each child attachment are ignored.

Image Cards

  • Each attachment must have either picture or image_hash set. We do not default the image from link_data.
  • A 100x100 image crop can be provided for each attachment, or auto crop will be performed. The final image must be at least 600x600 pixels, which is significantly bigger than the minimum requirement of Facebook carousel ads.

Video Cards

  • The video needs to be square, with at least 600px at each dimension, at most 60 seconds.
  • A thumbnail image is required. We recommend to use thumbnail images with the same dimension as videos, but do not require it.
  • The video is specified by video_id in a child_attachment. The thumbnail image is specified by image_hash or picture in a child_attachment.
  • The thumbnail image will be shown during loading, or when the ad is shown with a small visible portion. The video will be auto-started and looping.

For Instagram Stories, you can create a carousel with up to ten images or videos. By default, the number of cards is tailored and varies to optimize for performance. A user may see one, two or three cards before seeing the option to "Expand Story". Stories Carousel limitations differ depending on how you have decided to place your ads.

For standalone Instagram Stories placement, you can choose to have a fixed number of cards, with a maximum of 3 cards displayed before the option to expand the story. This feature is setup inside carousel_delivery_mode. Within this field, there are two options:

  • optimal_num_cards: Default option. The number of cards shown to the user is automatically tailored.
  • fixed_num_cards: To be selected in case the advertiser wants to have a fixed number of cards shown.

Using a fixed number of cards may increase the amount an advertiser pays for results.

Other placement differences:

StandaloneMixed or Automatic Placements

Aspect Ratio

9:16 and non-9:16. Mixed aspect ratio is not supported.

No 9:16 format.

Supported Media

Images, videos up to 120 seconds (per card), mixed photos and videos.


If you have chosen to have a fixed number of cards, we support videos of up to 15 seconds (per card).

Images, videos up to 120 seconds (per card), mixed photos and videos.

Supported Objectives

Brand Awareness

Reach

Traffic (Link Clicks)

Messages

Lead Generation

Conversions

App Installs

Video Views

Store Traffic

Catalog Sales


Note: The option to show a fixed number of cards is not supported for Catalog Sales.

Brand Awareness

Reach

Traffic (Link Clicks)

Messages

Lead Generation

Conversions

App Installs

Store Traffic

Catalog Sales

For example, to create an Instagram Stories carousel:

curl \
  -F 'name=Sample Creative' \
  -F 'object_story_spec={ 
    "instagram_actor_id": <INSTAGRAM_ACTOR_ID>, \
    "link_data": { 
      "child_attachments": [ 
        { 
          "description": "$8.99", 
          "image_hash": "<IMAGE_HASH>", 
          "link": "https:\/\/www.link.com\/product1", 
          "name": "Product 1", 
          "video_id": "<VIDEO_ID>" 
        }, 
        { 
          "description": "$9.99", 
          "image_hash": "<IMAGE_HASH>", 
          "link": "https:\/\/www.link.com\/product2", 
          "name": "Product 2", 
          "video_id": "<VIDEO_ID>" 
        }, 
        { 
          "description": "$10.99", 
          "image_hash": "<IMAGE_HASH>", 
          "link": "https:\/\/www.link.com\/product3", 
          "name": "Product 3" 
        } 
      ], 
      "link": "<URL>" 
    }, \
    "page_id": "<PAGE_ID>" \
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v<VERSION>/act_<AD_ACCOUNT_ID>/adcreatives

To create a carousel with fixed_num_cards:

curl -X POST \
  -F 'object_story_spec={
      "instagram_actor_id": "<INSTAGRAM_ACTOR_ID>",
      "page_id": "<PAGE_ID>",
      "link_data": {
        "child_attachments": [
          {
            "link": "<LINK>"
            "image_hash": "<IMAGE_HASH>",
            "image_crops": [],
          },
          {
            "link": "<LINK>",
            "image_hash": "<IMAGE_HASH>",
            "image_crops": {}
          },
          {
            "link": "<LINK>",
            "image_hash": "<IMAGE_HASH>",
            "image_crops": {}
          }
        ],
        "message": "<MESSAGE>",
        "multi_share_end_card": false,
        "multi_share_optimized": false,
        "picture": "<PICTURE>"
      }
    }
' \
  -F 'portrait_customizations={
    carousel_delivery_mode: "fixed_num_cards"
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/v<API_VERSION>/act_<AD_ACCOUNT_ID>/adcreatives

Instant Experience elements are not supported for the Carousel ad format.