Create and Manage Carousel Ads (Legacy)

Warning

Deprecation Notice
The Marketing version 202304 (Marketing April 2023) and below has been sunset and the unversioned APIs are going to be sunset soon. We recommend that you migrate to the versioned APIs as well as migrate to the new Content and Community Management APIs to avoid disruptions. See the Migration page for more details. If you haven’t yet migrated and have questions, submit a request on the LinkedIn Developer Support Portal.

Carousel Ads, a format of Sponsored Content Campaigns, allows advertisers to display multiple images in succession in a single ad unit, each with its own description and destination link. Members can swipe through the carousel and interact with individual cards.

Advertisers can leverage the flexibility of carousel ads to tell compelling stories or showcase products and features interactively. You can use carousel ads to drive traffic to your website and collect quality leads through Lead Gen Forms.

Creating a carousel ad involves a few steps as documented below.

Steps:

  1. Upload 2 to 10 images using the Vector Asset API. The recommended image size for carousel ads is 1080 x 1080. Images not conforming to this specification may still run, but with gray letterbox around them. This can create a less optimal member experience and impact performance.
  2. Create a Direct Sponsored Content Carousel Share.
  3. Create a Carousel Ad Campaign. See Ad Campaigns for complete documentation on creating campaigns.
  4. Create a Carousel Ad Creative. See Ad Creatives for complete documentation on creating creatives.

Permissions

Permission Description
rw_ads Manage and read an authenticated member's ad accounts. Restricted to ad accounts in which the authenticated member has one of the following ad account roles.
  • ACCOUNT_BILLING_ADMIN
  • ACCOUNT_MANAGER
  • CAMPAIGN_MANAGER
  • CREATIVE_MANAGER
r_ads Read an authenticated member's ad accounts. Restricted to ad accounts in which the authenticated member has one of the following ad account roles.
  • ACCOUNT_BILLING_ADMIN
  • ACCOUNT_MANAGER
  • CAMPAIGN_MANAGER
  • CREATIVE_MANAGER
  • VIEWER

See Account Access Controls for more information on ad account roles.

Creating carousel ad campaigns uses the same endpoint for creating any other type of campaign. The format field in the campaign's creation request body should be equal to CAROUSEL. We've included 2 sample requests below demonstrating carousel ads where the objective is either website traffic or lead generation.

Sample Request

If your carousel ads' objective is to drive website traffic, specify WEBSITE_TRAFFIC in the objectiveType field as seen in the example below.

POST https://api.linkedin.com/v2/adCampaignsV2
{
    "account": "urn:li:sponsoredAccount:123",
    "audienceExpansionEnabled": false,
    "costType": "CPC",
    "creativeSelection": "OPTIMIZED",
    "dailyBudget": {
        "amount": "18",
        "currencyCode": "USD"
    },
    "format": "CAROUSEL",
    "locale": {
        "country": "US",
        "language": "en"
    },
    "name": "Test Carousel Campaign",
    "objectiveType": "WEBSITE_TRAFFIC",
    "offsiteDeliveryEnabled": false,
    "runSchedule": {
        "end": 9876543210123,
        "start": 1234567890987
    },
    "targetingCriteria": {
        "include": {
            "and": [
                {
                    "or": {
                        "urn:li:adTargetingFacet:locations": [
                            "urn:li:geo:103644278"
                        ]
                    }
                },
                {
                    "or": {
                        "urn:li:adTargetingFacet:interfaceLocales": [
                            "urn:li:locale:en_US"
                        ]
                    }
                }
            ]
        }
    },
    "type": "SPONSORED_UPDATES",
    "unitCost": {
        "amount": "15",
        "currencyCode": "USD"
    }
}

Sample Request

For lead generation:

If your carousel ads' objective is to get lead submissions, specify LEAD_GENERATION in the objectiveType field as seen in the example below.

POST https://api.linkedin.com/v2/adCampaignsV2
{
    "account": "urn:li:sponsoredAccount:123",
    "audienceExpansionEnabled": false,
    "costType": "CPC",
    "creativeSelection": "OPTIMIZED",
    "dailyBudget": {
        "amount": "18",
        "currencyCode": "USD"
    },
    "format": "CAROUSEL",
    "locale": {
        "country": "US",
        "language": "en"
    },
    "name": "Test Carousel Campaign",
    "objectiveType": "LEAD_GENERATION",
    "offsiteDeliveryEnabled": false,
    "runSchedule": {
        "end": 9876543210123,
        "start": 1234567890987
    },
    "targetingCriteria": {
        "include": {
            "and": [
                {
                    "or": {
                        "urn:li:adTargetingFacet:locations": [
                            "urn:li:geo:103644278"
                        ]
                    }
                },
                {
                    "or": {
                        "urn:li:adTargetingFacet:interfaceLocales": [
                            "urn:li:locale:en_US"
                        ]
                    }
                }
            ]
        }
    },
    "type": "SPONSORED_UPDATES",
    "unitCost": {
        "amount": "15",
        "currencyCode": "USD"
    }
}

A successful response returns a 201 Created HTTP status code and the Campaign ID in the x-linkedin-id response header.

Creating carousel ad creatives uses the same endpoint for creating any other type of creative. The format field in the creative's creation request body should be equal to SPONSORED_UPDATE_CAROUSEL.

Sample Request

If the carousel ad's objective is website traffic, the request body only needs to reference the objects in the following example.

POST https://api.linkedin.com/v2/adCreativesV2
{
    "campaign": "urn:li:sponsoredCampaign:1234",
    "reference": "urn:li:share:5555",
    "status": "ACTIVE",
    "type": "SPONSORED_UPDATE_CAROUSEL",
    "variables": {
        "data": {
            "com.linkedin.ads.SponsoredUpdateCarouselCreativeVariables": {}
        }
    }
}

Sample Request

If the carousel ad's objective is lead generation, the request body must also have a callToAction field that provides an ad form and call to action labelType.

POST https://api.linkedin.com/v2/adCreativesV2
{
    "callToAction": {
        "labelType": "LEARN_MORE",
        "target": "urn:li:adForm:9999"
    },
    "campaign": "urn:li:sponsoredCampaign:1222",
    "reference": "urn:li:share:4444",
    "status": "ACTIVE",
    "type": "SPONSORED_UPDATE_CAROUSEL",
    "variables": {
        "data": {
            "com.linkedin.ads.SponsoredUpdateCarouselCreativeVariables": {}
        }
    }
}

A successful response returns a 201 Created HTTP status code and the Creative ID in the x-linkedin-id response header.

You can fetch resources associated with carousel ads using the APIs to retrieve Ad Campaigns, Ad Creatives, and Shares.

Resolve Content URNs by calling the Vector Asset API and get the URLs.

Use projection to resolve Digital Media Asset URNs and get the appropriate URLs.

In addition to the standard sponsored content reporting metrics, you can retrieve metrics on each carousel card using the CARD_INDEX pivot with the adAnalyticsV2 API.

The following additional metrics are returned with adAnalyticsV2 for card level reporting:

  • cardClicks
  • viralCardClicks
  • cardImpressions
  • viralCardImpressions