About Video Ads

Video Ads are the next generation of our Sponsored Content products that help marketers engage business decision-makers on LinkedIn's mobile and desktop news feed. Incorporating LinkedIn's video functionality into your platform can help improve engagement for LinkedIn advertisers. Marketers can create video ads in two ways.

  1. Post videos to their Company Page and sponsor the post to reach more than just followers. With Company Page Video, organizations can share a first-hand look into their culture, products, news, and events to drive engagement and conversation with members right from their Company Page on LinkedIn.
  2. Create video ads that bypass Company Page followers and go directly to the news feed.

Video ads must meet certain specifications to be served. Refer to Advertising Specifications for Video Ads for those requirements.

Permissions

Permission Description
rw_ads Manage and read an authenticated member's ad accounts. To sponsor a video, the authenticated member must meet both of the following conditions:
  • Be an ADMINISTRATOR of a Company Page or a DIRECT_SPONSORED_CONTENT_POSTER with access to Campaign Manager.
  • Have 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

Use the organizationalEntityCreateShareAuthorizations endpoint to determine whether the authenticated member has the required roles to create a video ad.

Schema

Field Type Description
account SponsoredAccountUrn A create-only field to associate an adAccount.
contentReference Urn A create-only field. This supports UserGeneratedContentPostUrn. For example: urn:li:ugcPost:6366778577446281216.
name Optional string Name of the adDirectSponsoredContents.
owner OrganizationUrn A create-only field. The owner of the organization can be expressed as follows: urn:li:organization:<organization-id>.
type AdDirectSponsoredContentType A create-only field. Used to describe the type of the content. Currently, the only possible value for this is VIDEO.

Required Steps

To create a video ad, you must do all of the following:

Create an AdDirectSponsoredContent

To create adDirectSponsoredContents, the LinkedIn member (to whom the access token belongs) must have access to:

  • The organization set in the owner field, and
  • An ad account value set in the account field

Verify your access before you send the request.

Make sure to set the Content-Type header to application/json.

POST https://api.linkedin.com/v2/adDirectSponsoredContents
{
    "account": "urn:li:sponsoredAccount:517803082",
    "contentReference": "urn:li:ugcPost:6369250108747325440",
    "name": "Test dsc",
    "owner": "urn:li:organization:1337",
    "type": "VIDEO"
}

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

A failed response returns a 400 Bad Request Error.

To avoid failures, verify the following:

  1. The Ad Account entity set in the account field may be linked to an organization through the Ad Account's reference field. See Ad Account Schema. The linked organization must be the same organization provided in the owner field. For example, if the Ad Account's linked organization is urn:li:organization:1337, the owner field set in the above creation call must also be urn:li:organization:1337. 1 The ugcPost set in contentReference field must have visibility as SponsoredContentVisibility.DARK.
  2. The video asset should be created with registerUploadRequest.recipes as urn:li:digitalmediaRecipe:ads-video_v2.
  3. The type must match the ShareMediaCategory of the given ugcPost and should be equal to VIDEO.
  4. The owner of the ugcPost must match the owner in the adDirectSponsoredContents.
  5. The owner in the adDirectSponsoredContents should be an organizationUrn.
  6. The member (to whom this access token belongs) who is creating adDirectSponsoredContents must have access to the organization set in the owner field and AdAccount set in the account field.

Fetch a Video Ad

You can fetch adDirectSponsoredContents by the ugcPost URN. Organic videos posted to the Company Page and then sponsored in Campaign Manager do not have a corresponding adDirectSponsoredContents object.

GET https://api.linkedin.com/v2/adDirectSponsoredContents/{ugcPost-urn}

Sample Response

{
    "account": "urn:li:sponsoredAccount:517803082",
    "changeAuditStamps": {
        "created": {
            "time": 1518547642000
        },
        "lastModified": {
            "time": 1519258592000
        }
    },
    "contentReference": "urn:li:ugcPost:6369250108747325440",
    "name": "test update dsc again",
    "owner": "urn:li:organization:5590506",
    "type": "VIDEO"
}

A successful response returns a 200 OK HTTP status code.

Fetching Multiple Video Ads

You can fetch multiple videos in one API call by providing multiple IDs in the ids parameter.

Sample Request

This sample uses Restli 2.0 and requires the Restli 2.0 header.

GET https://api.linkedin.com/v2/adDirectSponsoredContents?ids=List(urn%3Ali%3Ashare%3A6264971476567408640,urn%3Ali%3AugcPost%3A6321851285679153152)

Sample Response

{ 
   "statuses":{ 
   },
   "results":{ 
      "urn:li:ugcPost:6321851285679153152":{ 
         "owner":"urn:li:organization:11050",
         "changeAuditStamps":{ 
            "created":{ 
               "time":1507246801000
            },
            "lastModified":{ 
               "time":1521580166000
            }
         },
         "contentReference":"urn:li:ugcPost:6321851285679153152",
         "name":"test",
         "type":"VIDEO",
         "account":"urn:li:sponsoredAccount:516797086",
         "status":"ACTIVE"
      },
      "urn:li:ugcPost:6264971476567408640":{ 
         "owner":"urn:li:organization:11050",
         "changeAuditStamps":{ 
            "created":{ 
               "time":1493685597000
            },
            "lastModified":{ 
               "time":1493685597000
            }
         },
         "contentReference":"urn:li:ugcPost:6264971476567408640",
         "name":"test",
         "type":"VIDEO",
         "account":"urn:li:sponsoredAccount:516797086",
         "status":"ACTIVE"
      }
   },
   "errors":{ 
   }
}

Update a Video Ad

When you perform a partial update, the header must include contentType=application/json and X-RestLi-Method must be set to PARTIAL_UPDATE.

POST https://api.linkedin.com/v2/adDirectSponsoredContents/{ugcPost-urn}

Sample Request

The following example shows how to change the name field. You can only update name when you edit adDirectSponsoredContents.

POST https://api.linkedin.com/v2/adDirectSponsoredContents/urn:li:ugcPost:6369250108747325440
{
    "patch": {
        "$set": {
            "name": "test update dsc again"
        }
    }
}

A successful response returns a 204 No Content status.

Archive Direct Sponsored Content

You may discover that you posted too many Direct Sponsored Content (DSC) instances, creating clutter on your site. LinkedIn enables you to remove existing DSC instances to manage your posted content more effectively by updating your DSC instances, using a POST request.

POST https://api.linkedin.com/v2/adDirectSponsoredContents/urn:li:share:12345
{
    "patch": {
        "$set": {
            "status": "ARCHIVED"
        }
    }
}

A successful response returns a 204 No Content status.

Finders

There are two types of finders:

Account Finder

You can get all adDirectSponsoredContents under an adAccount. You can request paged results using start and count. The max count value is 100. You can filter the results to a certain type of record using the types query parameter.

GET https://api.linkedin.com/v2/adDirectSponsoredContents?account={encoded-sponsoredAccount-urn}&owner={encoded-organization-urn}&q=account&types=List[VIDEO]&includeTotals=false

Sample Request

GET https://api.linkedin.com/v2/adDirectSponsoredContents?account=urn%3Ali%3AsponsoredAccount%3A517803082&owner=urn%3Ali%3Aorganization%3A5590506&q=account&types=List[VIDEO]&includeTotals=false

Sample Response

{
    "elements": [
        {
            "account": "urn:li:sponsoredAccount:517803082",
            "changeAuditStamps": {
                "created": {
                    "time": 1518547642000
                },
                "lastModified": {
                    "time": 1519258592000
                }
            },
            "contentReference": "urn:li:ugcPost:6369250108747325440",
            "name": "test update dsc again",
            "owner": "urn:li:organization:5590506",
            "type": "VIDEO"
        }
    ],
    "paging": {
        "count": 24,
        "links": [],
        "start": 0,
        "total": 0
    }
}

A successful response returns a 200 OK HTTP status code.

Owner Finder

You can get all adDirectSponsoredContents by an organization if you are an ADMINISTRATOR of the organization.

GET https://api.linkedin.com/v2/adDirectSponsoredContents?owner={encoded-organization-urn}&q=owner

Sample Request

GET https://api.linkedin.com/v2/adDirectSponsoredContents?owner=urn%3Ali%3Aorganization%3A5590506&q=owner

Sample Response

{
    "elements": [
        {
            "account": "urn:li:sponsoredAccount:517803082",
            "contentReference": "urn:li:ugcPost:6369250108747325440",
            "name": "test update dsc again",
            "owner": "urn:li:organization:5590506",
            "type": "VIDEO"
        }
    ],
    "paging": {
        "count": 2147483647,
        "links": [],
        "start": 0,
        "total": 1
    }
}

A successful response returns a 200 OK HTTP status code.