CINXE.COM

Create and Manage Creatives - LinkedIn | Microsoft Learn

<!DOCTYPE html><html class="hasSidebar hasPageActions hasBreadcrumb conceptual has-default-focus theme-light" lang="en-us" dir="ltr" data-authenticated="false" data-auth-status-determined="false" data-target="docs" x-ms-format-detection="none"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta property="og:title" content="Create and Manage Creatives - LinkedIn" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-creatives?view=li-lms-2024-11" /><meta property="og:description" content="Create and Manage Creatives" /><meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png" /> <meta property="og:image:alt" content="Microsoft Learn" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@MicrosoftLearn" /> <meta name="color-scheme" content="light dark"><meta name="author" content="pema-s" /> <meta name="breadcrumb_path" content="/linkedin/breadcrumb/toc.json" /> <meta name="default_moniker" content="li-lms-2024-11" /> <meta name="depot_name" content="MSDN.linkedin-api-docs" /> <meta name="description" content="Create and Manage Creatives" /> <meta name="document_id" content="28b3bb67-93d9-c99c-df63-c3f576f0ce0f" /> <meta name="document_version_independent_id" content="28b3bb67-93d9-c99c-df63-c3f576f0ce0f" /> <meta name="exclude_monikers" content="li-lms-2022-06" /> <meta name="exclude_monikers" content="li-lms-2022-07" /> <meta name="feedback_help_link_type" content="" /> <meta name="feedback_help_link_url" content="" /> <meta name="feedback_product_url" content="https://linkedin.zendesk.com/hc/en-us" /> <meta name="feedback_system" content="Standard" /> <meta name="git_commit_id" content="8551e86cee0c192cea2e7c777c9687108c0e46b6" /> <meta name="gitcommit" content="https://github.com/MicrosoftDocs/linkedin-api-docs/blob/8551e86cee0c192cea2e7c777c9687108c0e46b6/linkedin-api-docs/marketing/integrations/ads/account-structure/create-and-manage-creatives.md" /> <meta name="locale" content="en-us" /> <meta name="monikerRange" content=">=li-lms-2024-01 || li-lms-2023-06 || li-lms-2023-07" /> <meta name="monikers" content="li-lms-2023-06" /> <meta name="monikers" content="li-lms-2023-07" /> <meta name="monikers" content="li-lms-2024-01" /> <meta name="monikers" content="li-lms-2024-02" /> <meta name="monikers" content="li-lms-2024-03" /> <meta name="monikers" content="li-lms-2024-04" /> <meta name="monikers" content="li-lms-2024-05" /> <meta name="monikers" content="li-lms-2024-06" /> <meta name="monikers" content="li-lms-2024-07" /> <meta name="monikers" content="li-lms-2024-08" /> <meta name="monikers" content="li-lms-2024-09" /> <meta name="monikers" content="li-lms-2024-10" /> <meta name="monikers" content="li-lms-2024-11" /> <meta name="ms.author" content="li_dramesh" /> <meta name="ms.date" content="10/22/2024" /> <meta name="ms.service" content="linkedin" /> <meta name="ms.subservice" content="marketing" /> <meta name="ms.topic" content="article" /> <meta name="original_content_git_url" content="https://github.com/MicrosoftDocs/linkedin-api-docs/blob/live/linkedin-api-docs/marketing/integrations/ads/account-structure/create-and-manage-creatives.md" /> <meta name="page_type" content="conceptual" /> <meta name="recommendations" content="false" /> <meta name="schema" content="Conceptual" /> <meta name="site_name" content="Docs" /> <meta name="toc_rel" content="../../../toc.json" /> <meta name="uhfHeaderId" content="MSDocsHeader-LinkedIn" /> <meta name="updated_at" content="2024-11-20 06:46 AM" /> <meta name="word_count" content="8709" /> <meta name="persistent_id" content="b126b0cf-b48e-c712-1962-fce5175d53ab" /> <meta name="cmProducts" content="https://microsoft-devrel.poolparty.biz/DevRelOfferingOntology/12ed19f9-ebdf-4c8a-8bcd-7a681836774d" data-source="generated" /> <meta name="cmProducts" content="https://microsoft-devrel.poolparty.biz/DevRelOfferingOntology/aec7dc3e-0dad-4b82-accf-63218d8767d5" data-source="generated" /> <meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/86a4b315-a9f1-4577-b985-6fb0e0e67420" data-source="generated" /> <meta name="spProducts" content="https://microsoft-devrel.poolparty.biz/DevRelOfferingOntology/3a764584-4f97-452b-8f1d-36f19b12f6ae" data-source="generated" /> <meta name="spProducts" content="https://microsoft-devrel.poolparty.biz/DevRelOfferingOntology/f260444a-7ec6-4768-8e41-ad2438092724" data-source="generated" /> <meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/96ac410d-d052-4707-8007-df31dd0fe041" data-source="generated" /> <meta name="scope" content="LinkedIn" /><meta name="github_feedback_content_git_url" content="https://github.com/MicrosoftDocs/linkedin-api-docs/blob/live/linkedin-api-docs/marketing/integrations/ads/account-structure/create-and-manage-creatives.md" /><link href="https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-creatives?view=li-lms-2024-11" rel="canonical"><title>Create and Manage Creatives - LinkedIn | Microsoft Learn</title><link rel="stylesheet" href="/static/assets/0.4.028726178/styles/site-ltr.css"> <script id="msdocs-script"> var msDocs = {environment: { supportLevel: 'production', accessLevel: 'online', reviewFeatures: false, systemContent: true, azurePortalHostname: 'portal.azure.com', legacyHosting: false, siteName: 'learn', },data: { timeOrigin: Date.now(), contentLocale: 'en-us', contentDir: 'ltr', userLocale: 'en-us', userDir: 'ltr', pageTemplate: 'Conceptual', brand: '', context: {}, hasBinaryRating: true, feedbackHelpLinkType:'', feedbackHelpLinkUrl:'', standardFeedback: true, showFeedbackReport: false, enableTutorialFeedback: false, feedbackSystem: 'Standard', feedbackGitHubRepo: '', feedbackProductUrl: 'https://linkedin.zendesk.com/hc/en-us',extendBreadcrumb: true,isEditDisplayable: false, hideViewSource: false, hasPageActions: true, hasPrintButton: true, hasBookmark: true, hasShare: true, isPermissioned: false, isPrivateUnauthorized: false,hasRecommendations: true,contributors: [{ name: "pema-s", url: "https://github.com/pema-s" },{ name: "aceofseasons", url: "https://github.com/aceofseasons" },{ name: "Deeksha-ramesh", url: "https://github.com/Deeksha-ramesh" },{ name: "zxc217", url: "https://github.com/zxc217" },{ name: "swathivshenoy", url: "https://github.com/swathivshenoy" },{ name: "snehadewan", url: "https://github.com/snehadewan" },{ name: "jagriti-madan", url: "https://github.com/jagriti-madan" },{ name: "aparnaittekot", url: "https://github.com/aparnaittekot" },{ name: "srividyakurugundla", url: "https://github.com/srividyakurugundla" },{ name: "ardas-lnkd", url: "https://github.com/ardas-lnkd" },{ name: "macklee", url: "https://github.com/macklee" },{ name: "shruthij", url: "https://github.com/shruthij" },{ name: "tthumar", url: "https://github.com/tthumar" },{ name: "chandrayenduri", url: "https://github.com/chandrayenduri" },{ name: "kheiss-linkedin", url: "https://github.com/kheiss-linkedin" },{ name: "sidd607", url: "https://github.com/sidd607" },{ name: "rishirdua", url: "https://github.com/rishirdua" },{ name: "abarron-linkedin", url: "https://github.com/abarron-linkedin" },{ name: "gewarren", url: "https://github.com/gewarren" },{ name: "xuzheng-2020", url: "https://github.com/xuzheng-2020" },{ name: "aelkunch", url: "https://github.com/aelkunch" },{ name: "kamadolli-linkedin", url: "https://github.com/kamadolli-linkedin" },{ name: "rmarburg", url: "https://github.com/rmarburg" },{ name: "SurendraJambeLI", url: "https://github.com/SurendraJambeLI" },{ name: "kcmasterpiece", url: "https://github.com/kcmasterpiece" },{ name: "VSC-Service-Account", url: "https://github.com/VSC-Service-Account" },{ name: "tonyxu-io", url: "https://github.com/tonyxu-io" }],}, functions:{} }; </script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script> <script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js"></script><script src="/static/assets/0.4.028726178/global/deprecation.js"></script><script src="/static/assets/0.4.028726178/scripts/en-us/index-docs.js"></script></head> <body lang="en-us" dir="ltr"> <div class="header-holder has-default-focus"> <a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="1">Skip to main content</a><div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div> <div id="unsupported-browser" style=" background-color: white; color: black; padding: 16px; border-bottom: 1px solid grey;" hidden > <div style="max-width: 800px; margin: 0 auto;"> <p style="font-size: 24px">This browser is no longer supported.</p> <p style="font-size: 16px; margin-top: 16px;">Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.</p> <div style="margin-top: 12px;"> <a href="https://go.microsoft.com/fwlink/p/?LinkID=2092881 " style=" background-color: #0078d4; border: 1px solid #0078d4; color: white; padding: 6px 12px; border-radius: 2px; display: inline-block; ">Download Microsoft Edge</a> <a href="https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge" style=" background-color: white; padding: 6px 12px; border: 1px solid #505050; color: #171717; border-radius: 2px; display: inline-block; ">More info about Internet Explorer and Microsoft Edge</a> </div> </div> </div> <!-- liquid-tag banners global --> <!-- site header --> <header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization"> <div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div> <div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div> <div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div> </header><div id="content-header" class="content-header uhf-container has-padding has-default-focus border-bottom-none" data-bi-name="content-header"> <div class="content-header-controls margin-xxs margin-inline-sm-tablet"> <button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button> <span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span> <span class="contents-expand-title">Table of contents</span> </button> <button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel"> <span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span> <span>Exit focus mode</span> </button> </div> </div><div id="disclaimer-holder" class="has-overflow-hidden has-default-focus"> <!-- liquid-tag banners sectional --> </div> </div> <div class="mainContainer uhf-container has-default-focus" data-bi-name="body"> <div class="columns has-large-gaps is-gapless-mobile "><div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop"> <nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav> </div><!-- .primary-holder --> <section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop"> <!--div.columns --> <div class="columns is-gapless-mobile has-large-gaps "><div id="main-column" class="column is-full is-8-desktop"> <main id="main" class="" role="main" data-bi-name="content" lang="en-us" dir="ltr"><!-- article-header --> <div id="article-header" class="background-color-body margin-top-sm-tablet margin-bottom-xs display-none-print"> <div class="display-flex align-items-center "><details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs"> <summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs"> <span class="icon"> <span class="docon docon-more"></span> </span> </summary> <div id="article-header-breadcrumbs-overflow" class="popover-content padding-none"> </div> </details> <bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs><div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch"><a id="lang-link-tablet" class="button button-primary button-clear button-sm display-none display-inline-flex-tablet" title="Read in English" data-bi-name="language-toggle" data-read-in-link hidden> <span class="icon margin-none" aria-hidden="true" data-read-in-link-icon> <span class="docon docon-locale-globe"></span> </span> <span class="is-visually-hidden" data-read-in-link-text>Read in English</span> </a><button type="button" class="collection button button-clear button-sm button-primary display-none display-inline-flex-tablet" data-list-type="collection" data-bi-name="collection" title="Add to collection"> <span class="icon margin-none" aria-hidden="true"> <span class="docon docon-circle-addition"></span> </span> <span class="collection-status is-visually-hidden">Save</span> </button><a data-contenteditbtn class="button button-clear button-sm text-decoration-none button-primary display-none display-inline-flex-tablet" aria-label="Edit" title="Edit This Document" data-bi-name="edit" hidden href="https://github.com/MicrosoftDocs/linkedin-api-docs/blob/live/linkedin-api-docs/marketing/integrations/ads/account-structure/create-and-manage-creatives.md"> <span class="icon margin-none" aria-hidden="true"> <span class="docon docon-edit-outline"></span> </span> </a> <details class="popover popover-right" id="article-header-page-actions-overflow"> <summary class="justify-content-flex-start button button-clear button-sm button-primary" aria-label="More actions" title="More actions"> <span class="icon" aria-hidden="true"> <span class="docon docon-more-vertical"></span> </span> </summary> <div class="popover-content padding-xs"><button data-page-action-item="overflow-mobile" type="button" class="justify-content-flex-start button-block button-sm has-inner-focus button button-clear display-none-tablet" data-bi-name="contents-expand" data-contents-button data-popover-close> <span class="icon"> <span class="docon docon-editor-list-bullet" aria-hidden="true"></span> </span><span class="contents-expand-title">Table of contents</span></button><a id="lang-link-overflow" class="justify-content-flex-start button-sm has-inner-focus button button-clear button-block display-none-tablet" title="Read in English" data-bi-name="language-toggle" data-page-action-item="overflow-mobile" data-check-hidden="true" data-read-in-link hidden > <span class="icon" aria-hidden="true" data-read-in-link-icon> <span class="docon docon-locale-globe"></span> </span> <span data-read-in-link-text>Read in English</span> </a><button type="button" class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet" data-list-type="collection" data-bi-name="collection" title="Save" data-page-action-item="overflow-mobile" data-check-hidden="true" data-popover-close> <span class="icon" aria-hidden="true"> <span class="docon docon-circle-addition"></span> </span> <span class="collection-status">Save</span> </button> <button type="button" class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet" data-list-type="plan" data-bi-name="plan" title="Add to Plan" data-page-action-item="overflow-mobile" data-check-hidden="true" data-popover-close hidden> <span class="icon" aria-hidden="true"> <span class="docon docon-circle-addition"></span> </span> <span class="plan-status">Add to Plan</span> </button><a data-contenteditbtn class="button button-clear button-block button-sm has-inner-focus justify-content-flex-start text-decoration-none display-none-tablet" aria-label="Edit" title="Edit This Document" data-bi-name="edit" hidden href="https://github.com/MicrosoftDocs/linkedin-api-docs/blob/live/linkedin-api-docs/marketing/integrations/ads/account-structure/create-and-manage-creatives.md"> <span class="icon" aria-hidden="true"> <span class="docon docon-edit-outline"></span> </span> <span>Edit</span> </a><div aria-hidden="true" class="margin-none" data-page-action-item="overflow-all"></div> <hr class="display-none-tablet margin-bottom-xxs margin-top-xxs" /> <h4 class="font-size-sm padding-left-xxs">Share via</h4> <a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all"> <span class="icon" aria-hidden="true"> <span class="docon docon-facebook-share font-size-md color-primary"></span> </span> <span class="margin-left-xxs">Facebook</span> </a> <a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all"> <span class="icon" aria-hidden="true"> <span class="docon docon-xlogo-share font-size-xxs"></span> </span> <span class="margin-left-xxs">x.com</span> </a> <a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all"> <span class="icon" aria-hidden="true"> <span class="docon docon-linked-in-logo font-size-sm color-primary"></span> </span> <span class="margin-left-xxs">LinkedIn</span> </a> <a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start margin-bottom-xxs share-email" data-bi-name="email" data-page-action-item="overflow-all"> <span class="icon" aria-hidden="true"> <span class="docon docon-mail-message font-size-sm color-primary"></span> </span> <span class="margin-left-xxs">Email</span> </a><hr /> <button class="button button-block button-clear button-sm justify-content-flex-start has-inner-focus margin-top-xxs" title="Print" type="button" aria-label="Print" data-bi-name="print" data-page-action-item="overflow-all" data-popover-close data-print-page data-check-hidden="true"> <span class="icon" aria-hidden="true"> <span class="docon docon-print font-size-sm color-primary"></span> </span> <span class="margin-left-xxs">Print</span> </button> </div> </details> </div></div> </div> <!-- end article-header --><div> <button type="button" class="border contents-button button button-clear button-sm is-hidden-tablet has-inner-focus" data-bi-name="contents-expand" data-contents-button hidden> <span class="icon"> <span class="docon docon-editor-list-bullet" aria-hidden="true"></span> </span><span class="contents-expand-title">Table of contents</span></button> </div><!-- end mobile-contents button --> <div class="content "><h1 id="create-and-manage-creatives">Create and Manage Creatives</h1><div class="display-flex justify-content-space-between align-items-center flex-wrap-wrap page-metadata-container"> <div class="margin-right-xxs"> <ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr"><li>Article</li><li class="visibility-hidden-visual-diff"><time class="is-invisible" data-article-date aria-label="Article review date" datetime="2024-11-20T06:46:00Z" data-article-date-source="calculated">11/20/2024</time> </li><li class="contributors-holder display-none-print"> <button aria-label="View all contributors" class="contributors-button link-button" data-bi-name="contributors" title="View all contributors">27 contributors</button> </li></ul> </div> <div id="user-feedback" class="margin-block-xxs display-none-print" data-hide-on-archived> <button id="user-feedback-button" data-test-id="conceptual-feedback-button" class="button button-sm button-clear button-primary" type="button" data-bi-name="user-feedback-button" data-user-feedback-button > <span class="icon" aria-hidden="true"> <span class="docon docon-like"></span> </span> <span>Feedback</span> </button> </div></div><nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="In this article"> <h2 id="ms--in-this-article" class="title is-6 margin-block-xs">In this article</h2> </nav><!-- <content> --><div class="WARNING"> <p>Warning</p> <p><strong>Deprecation Notice</strong><br> The Marketing Version 202311 (Marketing November 2023) and earlier versions (excluding 202306 and 202307) have been sunset. Additionally, the unversioned APIs will be sunset soon. We recommend that you migrate to the <a href="../../../versioning?view=li-lms-2024-11" data-linktype="relative-path">versioned APIs</a> as well as migrate to the new <a href="../../../community-management/contentapi-migration-guide?view=li-lms-2024-11" data-linktype="relative-path">Content</a> and <a href="../../../community-management/community-management-api-migration-guide?view=li-lms-2024-11" data-linktype="relative-path">Community Management APIs</a> to avoid disruptions. See the <a href="../../migrations?view=li-lms-2024-11" data-linktype="relative-path">Migration</a> page for more details. If you haven’t yet migrated and have questions, submit a request on the <a href="https://linkedin.zendesk.com/hc/en-us" data-linktype="external">LinkedIn Developer Support Portal</a>.</p> </div> <p>The Creatives API contains all the data and information for visually rendering an ad. There are several types of Ad Creatives that you can associate with campaigns including:</p> <ul> <li><a href="../advertising-targeting/version/text-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">Text Ads</a></li> <li>Sponsored Content (<a href="../advertising-targeting/version/image-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">images</a>, <a href="../advertising-targeting/create-and-manage-video?view=li-lms-2024-11" data-linktype="relative-path">videos</a>, <a href="../advertising-targeting/version/carousel-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">carousels</a>, <a href="../advertising-targeting/version/article-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">articles</a>, <a href="../advertising-targeting/version/text-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">text</a>, etc.)</li> <li><a href="../advertising-targeting/version/message-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">Message Ads</a></li> <li><a href="../advertising-targeting/version/conversation-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">Conversation Ads</a></li> <li>Dynamic Ads (<a href="../advertising-targeting/version/spotlight-ads?view=li-lms-2024-11" data-linktype="relative-path">Spotlight</a>, <a href="../advertising-targeting/version/follower-ads?view=li-lms-2024-11" data-linktype="relative-path">Follower</a>, <a href="../advertising-targeting/version/jobs-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">Jobs</a>)</li> </ul> <p>The following conditions apply when using the Creatives API:</p> <ul> <li>An Ad Account can have a maximum of 15,000 creatives.</li> <li>A campaign can have a maximum of 100 creatives.</li> <li>Creative types must match the source campaign ad format. If the campaign has no ad format set, it is set by the first creative developed under that campaign. Dynamic, carousel, and video ad campaigns must have their format set upon creation.</li> </ul> <div class="NOTE"> <p>Note</p> <p>The Creatives API replaces the <u><a href="create-and-manage-creatives-legacy?view=li-lms-2024-11" data-linktype="relative-path">adCreativesV2 API</a></u>. See <u><a href="../../../community-management/contentapi-migration-guide?view=li-lms-2024-11" data-linktype="relative-path">Migration Guide</a></u> for more details.</p> </div> <h2 id="key-benefits">Key Benefits</h2> <p>This endpoint:</p> <ul> <li>Provides a simplified schema with consistent fields for retrieval</li> <li>Enables creation of a sponsored video post with one API call for an uploaded video and an available video campaign</li> </ul> <h2 id="permissions">Permissions</h2> <p>There are two conditions for successful calls:</p> <ul> <li>Scope permissions for <code>rw_ads</code> and/or <code>r_ads</code></li> <li>The user assigning permission holds an administrative roles in the Ad Account itself.</li> </ul> <p>Scope permissions:</p> <ul> <li><code>rw_ads</code> (Read/Write)</li> <li><code>r_ads</code> (Read-Only)</li> </ul> <p>Ad Account Roles:</p> <ul> <li><code>ACCOUNT_BILLING_ADMIN</code></li> <li><code>ACCOUNT_MANAGER</code></li> <li><code>CAMPAIGN_MANAGER</code></li> <li><code>CREATIVE_MANAGER</code></li> <li><code>VIEWER</code> (read-only, even with the <code>rw_ads</code> scope)</li> </ul> <p>For more information on Ad Account roles and permissions:</p> <ul> <li><a href="account-access-controls?view=li-lms-2024-11#ad-account-user-role-definitions" data-linktype="relative-path">Ad Account User Role Definitions</a></li> <li><a href="create-and-manage-account-users?view=li-lms-2024-11" data-linktype="relative-path">Create and Manage Ad Account Users</a></li> </ul> <h2 id="schema">Schema</h2> <div class="NOTE"> <p>Note</p> <p>All APIs require the request headers <code>LinkedIn-Version: {Version in YYYYMM format}</code> and <code>X-Restli-Protocol-Version: 2.0.0</code></p> </div> <div data-moniker="li-lms-2023-06 li-lms-2023-07 li-lms-2024-01 li-lms-2024-02 li-lms-2024-03 li-lms-2024-04 li-lms-2024-05 li-lms-2024-06 li-lms-2024-07 li-lms-2024-08 li-lms-2024-09 li-lms-2024-10 li-lms-2024-11"> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>account</td> <td>No</td> <td>Sponsored Account URN</td> <td>URN identifying the advertising account associated with the creative. This field is read-only.</td> </tr> <tr> <td>campaign</td> <td>Yes</td> <td>Sponsored Campaign URN</td> <td>URN identifying the campaign associated with the creative</td> </tr> <tr> <td>content</td> <td>No</td> <td>Underlying content URN</td> <td>Content sponsored in the creative. On creation, it can be dynamic Ad content (<a href="../advertising-targeting/version/follower-ads?view=li-lms-2024-11" data-linktype="relative-path">follower</a>, <a href="../advertising-targeting/version/jobs-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">job</a>, <a href="../advertising-targeting/version/spotlight-ads?view=li-lms-2024-11" data-linktype="relative-path">spotlight</a>), <a href="../advertising-targeting/version/text-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">text</a>, <a href="../advertising-targeting/version/document-ads?view=li-lms-2024-11" data-linktype="relative-path">document</a>, or a reference to <a href="../advertising-targeting/version/message-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">InMail Content</a> or post (<a href="../advertising-targeting/version/image-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">image</a>, <a href="../advertising-targeting/create-and-manage-video?view=li-lms-2024-11" data-linktype="relative-path">video</a>, <a href="../advertising-targeting/version/article-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">article</a>, <a href="../advertising-targeting/version/carousel-ads-integrations?view=li-lms-2024-11" data-linktype="relative-path">carousel</a>). Content can also be extended and specified as inline content instead of an URN. A reference must be a adInMailContent{id}, share{id}, or ugcPost{id}.</td> </tr> <tr> <td>createdAt</td> <td>No</td> <td>Time</td> <td>Creation time</td> </tr> <tr> <td>createdBy</td> <td>No</td> <td>Person URN</td> <td>Entity (e.g., a person URN) that developed the creative</td> </tr> <tr> <td>id</td> <td>No</td> <td>Sponsored creative URN</td> <td>Unique ID for a creative (e.g.,SponsoredCreativeUrn). Read-only</td> </tr> <tr> <td>inlineContent</td> <td>Required if action is createInline</td> <td>Post</td> <td>Inline content sponsored in the creative such as ugcPost in order to reduce the number of user calls.</td> </tr> <tr> <td>intendedStatus</td> <td>No</td> <td>ENUM</td> <td>Creative user intended status. The creative intended status is set independently from parent entity status, but parent entity status overrides creative intended status in effect. For example, parent entity status may be PAUSED while creative status is ACTIVE, in which case the creative's effective status is PAUSED, and not served.<li>ACTIVE - Creative development is complete and the creative is available for review and can be served. </li><li>PAUSED - Creative development is complete and the creative is current, but should temporarily not be served.</li><li>DRAFT - Creative development is incomplete and may still be edited.</li><li>ARCHIVED - Creative development is complete, but creative should not be served and should be separated from non-archived creatives in any UI.</li><li>CANCELED - The creative will be hidden when querying all creatives under a campaign and canceled creatives will be retrievable if the underlying posts are still valid/available. </li><li>PENDING_DELETION - Denotes that the creative has been requested to be deleted that is currently pending.</li><li>REMOVED - Denotes that the creative was deleted, but must remain fetchable due to the existence of performance data.</li></td> </tr> <tr> <td>isServing</td> <td>No</td> <td>boolean</td> <td>This indicates whether the creative is currently being served or not. This field is read-only.</td> </tr> <tr> <td>lastModifiedAt</td> <td>No</td> <td>Time</td> <td>Time at which the creative was last modified in milliseconds since epoch.</td> </tr> <tr> <td>lastModifiedBy</td> <td>No</td> <td>Person URN</td> <td>The entity (e.g., person URN) who modified the creative</td> </tr> <tr> <td><a href="#leadgencreativecalltoaction" data-linktype="self-bookmark">leadgenCallToAction</a></td> <td>Required if campaign objective is <code>LEAD_GENERATION</code></td> <td>LeadgenCreativeCallToAction</td> <td>The field is needed for call to action. This currently only applies if the campaign objective is LEAD_GENERATION.</td> </tr> <tr> <td>review</td> <td>No</td> <td>CreativeReview</td> <td>Creative review status. The review status cannot be set/updated via the API but is started when the creative is activated (i.e., moves from draft state to active state). Hence, the review is absent (null) when the creative is in DRAFT state. Read-only.</td> </tr> <tr> <td><a href="#servingholdreasons" data-linktype="self-bookmark">servingHoldReasons</a></td> <td>No</td> <td>servingHoldReasons</td> <td>Array that contains all the reasons why the creative is not serving. In the case a creative is being served, this field will be null and not present in the response.</td> </tr> <tr> <td>name</td> <td>No</td> <td>string</td> <td>The name of the creative that can be set by advertiser; primarily used to make it easier to reference a Creative and to recall its purpose.</td> </tr> </tbody> </table> </div> <h3 id="creativereview">CreativeReview</h3> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>status</td> <td>Yes</td> <td>ENUM</td> <td><li>PENDING - Creative is pending review and not serving. </li><li>APPROVED - Creative is approved for serving. It includes Creative that has been preapproved or auto approved by content model. </li><li>REJECTED - Creative is rejected. It includes the Creative that has been auto rejected by content model. </li><li>NEEDS_REVIEW - Creative has been rejected by content model or policy checker or returned by fallback case that auto approval did not make any decision.</li></td> </tr> <tr> <td>rejectionReasons</td> <td>No</td> <td>Array[]</td> <td>An array of reasons for rejecting creatives. For more details, refer to the <a href="#ad-creative-rejection-reasons" data-linktype="self-bookmark">RejectionReason list</a>.</td> </tr> </tbody> </table> <h3 id="servingholdreasons">servingHoldReasons</h3> <table> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>STOPPED</td> <td>Stopped by the advertiser.</td> </tr> <tr> <td>UNDER_REVIEW</td> <td>Creative cannot be served because it has not been reviewed.</td> </tr> <tr> <td>REJECTED</td> <td>Creative cannot be served because it was reviewed and rejected.</td> </tr> <tr> <td>FORM_HOLD</td> <td>Creative cannot be served because it is associated with a form and is currently not servable.</td> </tr> <tr> <td>PROCESSING</td> <td>Creative is being processed.</td> </tr> <tr> <td>PROCESSING_FAILED</td> <td>Creative failed processing.</td> </tr> <tr> <td>REFERRED_CONTENT_QUALITY_HOLD</td> <td>Creative cannot be served because it is associated with an non-quality entity (e.g., UGC/vector asset).</td> </tr> <tr> <td>JOB_POSTING_ON_HOLD</td> <td>Single job ad, job state is in review or suspended or job posting is no longer available to members. The associated creatives should be held for serving.</td> </tr> <tr> <td>JOB_POSTING_INVALID</td> <td>Single job ad, if job state is closed, deleted, or the member can not apply to the job, the single job ad is not served.</td> </tr> <tr> <td>CAMPAIGN_STOPPED</td> <td>Campaign is currently not servable for reasons other than billing information, budgetary constraints, or termination dates. For example, a campaign is STOPPED if it has been PAUSED by the user.</td> </tr> <tr> <td>ACCOUNT_TOTAL_BUDGET_HOLD</td> <td>Parent account total budget has been reached.</td> </tr> <tr> <td>ACCOUNT_END_DATE_HOLD</td> <td>Parent account end date has been reached.</td> </tr> <tr> <td>CAMPAIGN_START_DATE_HOLD</td> <td>Campaign start date is in the future.</td> </tr> <tr> <td>CAMPAIGN_END_DATE_HOLD</td> <td>Campaign end date has been reached.</td> </tr> <tr> <td>CAMPAIGN_TOTAL_BUDGET_HOLD</td> <td>Campaign total budget has been reached.</td> </tr> <tr> <td>CAMPAIGN_AUDIENCE_COUNT_HOLD</td> <td>Campaign is on hold because it has an audience count lower than the threshold.</td> </tr> <tr> <td>CAMPAIGN_GROUP_START_DATE_HOLD</td> <td>Campaign group start date is in the future.</td> </tr> <tr> <td>CAMPAIGN_GROUP_END_DATE_HOLD</td> <td>Campaign group end date is in the past.</td> </tr> <tr> <td>CAMPAIGN_GROUP_TOTAL_BUDGET_HOLD</td> <td>Campaign group total budget has been reached.</td> </tr> <tr> <td>CAMPAIGN_GROUP_STATUS_HOLD</td> <td>Campaign group status is on hold.</td> </tr> <tr> <td>ACCOUNT_SERVING_HOLD</td> <td>Parent account is on hold and not eligible for serving</td> </tr> </tbody> </table> <h3 id="leadgencreativecalltoaction">LeadgenCreativeCallToAction</h3> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>destination</td> <td>Yes</td> <td>AdFormUrn</td> <td>This form is a target destination for the callToAction button. It can only be modified when the creative is in DRAFT status. It is immutable once it is set for a creative once it transition to any non-draft intended status.</td> </tr> <tr> <td>label</td> <td>Yes</td> <td>CallToActionLabel</td> <td>Label for the CallToAction button.</td> </tr> </tbody> </table> <h4 id="call-to-action-label-types">Call to Action Label Types</h4> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>APPLY</td> <td>Call To Action button on the creative shows 'Apply now'.</td> </tr> <tr> <td>DOWNLOAD</td> <td>Call To Action button on the creative shows 'Download'.</td> </tr> <tr> <td>VIEW_QUOTE</td> <td>Call To Action button on the creative shows 'Get Quote'.</td> </tr> <tr> <td>LEARN_MORE</td> <td>Call To Action button on the creative shows 'Learn More'.</td> </tr> <tr> <td>SIGN_UP</td> <td>Call To Action button on the creative shows 'Sign Up'.</td> </tr> <tr> <td>SUBSCRIBE</td> <td>Call To Action button on the creative shows 'Subscribe'.</td> </tr> <tr> <td>REGISTER</td> <td>Call To Action button on the creative shows 'Register'.</td> </tr> <tr> <td>REQUEST_DEMO</td> <td>Call To Action button on the creative shows 'Request Demo'.</td> </tr> <tr> <td>JOIN</td> <td>Call To Action button on the creative shows 'Join'.</td> </tr> <tr> <td>ATTEND</td> <td>Call To Action button on the creative shows 'Attend'.</td> </tr> <tr> <td>UNLOCK_FULL_DOCUMENT</td> <td>Call To Action button on the creative shows 'Unlock Full Document'.</td> </tr> </tbody> </table> <div class="NOTE"> <p>Note</p> <p>All API requests are represented in protocol 2.0.0 and require the header <code>X-Restli-Protocol-Version: 2.0.0</code>.</p> </div> <h2 id="video-file-size-specifications">Video File Size Specifications</h2> <p>The following are the high-level specifications for non-connected-television video file sizing. For connected television video specification, refer to <a href="https://www.linkedin.com/help/lms/answer/a6282198/connected-ctv-advertising-specifications?lang=en" data-linktype="external">Connected Television Video Ads Specifications</a> for more information.</p> <ul> <li>Length: Three seconds to 30 minutes</li> <li>File size: Between 75kb and 500MB</li> <li>File format: MP4</li> </ul> <p>Refer to <a href="https://www.linkedin.com/help/lms/answer/a424737/video-ads-advertising-specifications?lang=en" data-linktype="external">Video Ads Advertising Specifications</a> for more information.</p> <div data-moniker="li-lms-2023-06 li-lms-2023-07 li-lms-2024-01 li-lms-2024-02 li-lms-2024-03 li-lms-2024-04 li-lms-2024-05 li-lms-2024-06 li-lms-2024-07 li-lms-2024-08 li-lms-2024-09 li-lms-2024-10 li-lms-2024-11"> <p>From May version onwards, we have added advertiser account id as a path parameter in the request url. To know more about the implications of this, please refer to the <a href="../../recent-changes?view=li-lms-2024-11#may-2023---version-202305" data-linktype="relative-path">Recent Changes</a> page.</p> <h2 id="create-a-creative">Create a Creative</h2> <p>LinkedIn partners can create a video ad with either of the following options.</p> <h3 id="create-a-creative-with-an-existing-organic-post">Create a Creative with an Existing Organic Post</h3> <p>You can sponsor an existing organic post that has been serving your company page followers and gone viral.</p> <p>To create a video ad creative, the post associated with the creative must be in the <code>PUBLISHED</code> state. The uploaded video may be in the <code>PROCESSING</code> state for several minutes after creation. Use the Post endpoint to retrieve the post and check the <code>lifecycleState</code> field. Do not create a video ad creative until the associated video post's <code>lifecycleState</code> field is <code>PUBLISHED</code>.</p> <h4 id="sample-request">Sample Request</h4> <div class="tabGroup" id="tabgroup_1"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_1_http" role="tab" aria-controls="tabpanel_1_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_1_curl" role="tab" aria-controls="tabpanel_1_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_1_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives </code></pre> <pre><code class="lang-json">{ "content": { "reference": "urn:li:ugcPost:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "ACTIVE" } </code></pre> </section> <section id="tabpanel_1_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H ‘LinkedIn-Version: {version number in the format YYYYMM}’ \ -H 'Content-Type: application/json' \ --data '{ "content": { "reference": "urn:li:ugcPost:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "ACTIVE" }' </code></pre> </section> </div> <p>A successful response returns a <code>201 Created HTTP</code> status code and the ID in the <code>x-linkedin-id</code> response header. For example, <code>urn:li:sponsoredCreative:120491345</code>.</p> <h3 id="creatives-inline-schema">Creatives Inline Schema</h3> <p>The following tables describe the schemas available for <code>action=createInline</code>.</p> <div class="NOTE"> <p>Note</p> <p>Starting from the 202410 version, the new <code>name</code> field for creatives will override the legacy <code>dscName</code> field when displaying a creative's name in Campaign Manager. However, both names can still be accessed via their respective API endpoints: <code>/creatives</code> and <code>/adDirectSponsoredContents</code>.</p> </div> <h4 id="inlinecontent-schema">inlineContent Schema</h4> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>inlineContent</td> <td>Required if action=createInline</td> <td>Post</td> <td>The inline content (e.g., ugcPost) that is sponsored in the creative. Inline creation reduces the number of user calls.</td> </tr> </tbody> </table> <h4 id="sample-request-1">Sample Request</h4> <div class="tabGroup" id="tabgroup_2"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_2_http" role="tab" aria-controls="tabpanel_2_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_2_curl" role="tab" aria-controls="tabpanel_2_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_2_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/521124266/creatives?action=createInline </code></pre> <pre><code class="lang-json">{ "creative": { "inlineContent": { "post": { "adContext": { "dscAdAccount": "urn:li:sponsoredAccount:521124266", "dscStatus": "ACTIVE", "dscName" : "legacy name field" }, "author": "urn:li:organization:5803528", "commentary": "commentary about the post", "visibility": "PUBLIC", "lifecycleState": "PUBLISHED", "isReshareDisabledByAuthor": false, "content": { "media": { "title": "Title of the video", "id": "urn:li:video:C5510AQEdAeAosOmbOw" } } } }, "campaign": "urn:li:sponsoredCampaign:362490515", "intendedStatus": "ACTIVE", "name": "new name field" } } </code></pre> </section> <section id="tabpanel_2_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/521124266/creatives?action=createInline' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'Content-Type: application/json' \ --data '{ "creative": { "inlineContent": { "post": { "adContext": { "dscAdAccount": "urn:li:sponsoredAccount:521124266", "dscStatus": "ACTIVE" }, "author": "urn:li:organization:5803528", "commentary": "commentary about the post", "visibility": "PUBLIC", "lifecycleState": "PUBLISHED", "isReshareDisabledByAuthor": false, "content": { "media": { "title": "Title of the video", "id": "urn:li:video:C5510AQEdAeAosOmbOw" } } } }, "campaign": "urn:li:sponsoredCampaign:362490515", "intendedStatus": "ACTIVE" } }' </code></pre> </section> </div> <p>A successful response returns a <code>201 Created HTTP</code> status code and the ID in the <code>x-linkedin-id</code> response header (e.g., <code>urn:li:sponsoredCreative:120491345</code>)</p> <h4 id="sample-request-for-campaign-objective-type-website-visit">Sample Request for Campaign Objective Type <code>website visit</code></h4> <div class="tabGroup" id="tabgroup_3"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_3_http" role="tab" aria-controls="tabpanel_3_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_3_curl" role="tab" aria-controls="tabpanel_3_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_3_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/506213394/creatives?action=createInline </code></pre> <pre><code class="lang-json">{ "creative": { "inlineContent": { "post": { "adContext": { "dscAdAccount": "urn:li:sponsoredAccount:506213394", "dscStatus": "ACTIVE" }, "author": "urn:li:organization:3798009", "commentary": "commentary about the post", "visibility": "PUBLIC", "lifecycleState": "PUBLISHED", "isReshareDisabledByAuthor": false, "contentCallToActionLabel": "DOWNLOAD", "contentLandingPage": "https://google.com", "content": { "media": { "title": "Title of the video", "id": "urn:li:video:C4D10AQEjgImrrO30gQ" } } } }, "campaign": "urn:li:sponsoredCampaign:175127926", "intendedStatus": "ACTIVE" } } </code></pre> </section> <section id="tabpanel_3_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl --location --request POST 'https://api.linkedin.com/rest/adAccounts/506213394/creatives?action=createInline' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ --data-raw '{ "creative": { "inlineContent": { "post": { "adContext": { "dscAdAccount": "urn:li:sponsoredAccount:506213394", "dscStatus": "ACTIVE" }, "author": "urn:li:organization:3798009", "commentary": "commentary about the post", "visibility": "PUBLIC", "lifecycleState": "PUBLISHED", "isReshareDisabledByAuthor": false, "contentCallToActionLabel": "DOWNLOAD", "contentLandingPage": "https://google.com", "content": { "media": { "title": "Title of the video", "id": "urn:li:video:C4D10AQEjgImrrO30gQ" } } } }, "campaign": "urn:li:sponsoredCampaign:175127926", "intendedStatus": "ACTIVE" } } </code></pre> </section> </div> <h2 id="get-a-creative">Get a Creative</h2> <p>To obtain details provide the Creative URN in encoded format as shown in the following example.</p> <h4 id="sample-request-2">Sample Request</h4> <div class="tabGroup" id="tabgroup_4"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_4_http" role="tab" aria-controls="tabpanel_4_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_4_curl" role="tab" aria-controls="tabpanel_4_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_4_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives/urn%3Ali%3AsponsoredCreative%3A120491345 </code></pre> </section> <section id="tabpanel_4_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives/urn%3Ali%3AsponsoredCreative%3A120491345' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' </code></pre> </section> </div> <h4 id="sample-response">Sample Response</h4> <pre><code class="lang-json">{ "createdAt": 1624249280000, "servingHoldReasons": [ "STOPPED", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1624249280000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "isServing": false, "name": "the sample creative name", "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:119962155", "intendedStatus": "DRAFT", "account": "urn:li:sponsoredAccount:520866471", "content": { "reference": "urn:li:ugcPost:6778045555198214144" } } </code></pre> </div> <div data-moniker="li-lms-2024-01 li-lms-2024-02 li-lms-2024-03 li-lms-2024-04 li-lms-2024-05 li-lms-2024-06 li-lms-2024-07 li-lms-2024-08 li-lms-2024-09 li-lms-2024-10 li-lms-2024-11"> <h2 id="search-for-creatives">Search For Creatives</h2> <div class="NOTE"> <p>Note</p> <p>From 202401 version and above, we have moved from index based pagination to cursor based pagination for our search APIs.</p> </div> <h3 id="cursor-based-pagination-for-search-apis">Cursor based Pagination for search APIs</h3> <p>The creatives API implements cursor based pagination using the pageSize and pageToken parameters for search method. The max allowed pageSize is 100.</p> <ul> <li>pageSize governs the number of requested entities.</li> <li>pageToken is used to get the next set of results. <ul> <li>nextPageToken is returned in metadata field of the search response.</li> <li>This should be passed in pageToken query parameter in the request to get the next page of results.</li> </ul> </li> </ul> <p>You can search for creative content in order to get a collection of creatives matching your search parameters. The Creative API currently supports search by <code>creative id</code>, <code>campaign</code>, <code>content reference</code>, <code>intendedStatus</code>, <code>leadgenCreativeCallToActionDestinations</code> and test fields. The values within each field are displayed with 'or' (ORed) and values across fields are displayed with 'and' (ANDed).</p> <div class="tabGroup" id="tabgroup_5"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_5_http" role="tab" aria-controls="tabpanel_5_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_5_curl" role="tab" aria-controls="tabpanel_5_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_5_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?campaigns=List(id1,id2,id3)&amp;contentReferences=List(id1,id2,id3)&amp;creatives=List(id1,id2,id3)&amp;intendedStatuses=List(ARCHIVED,CANCELED)&amp;isTestAccount=true&amp;isTotalIncluded=false&amp;leadgenCreativeCallToActionDestinations=List()&amp;q=criteria&amp;sortOrder=ASCENDING </code></pre> </section> <section id="tabpanel_5_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;intendedStatuses=List(ARCHIVED,CANCELED)&amp;sortOrder=ASCENDING' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: FINDER' </code></pre> </section> </div> </div> <div data-moniker="li-lms-2023-06 li-lms-2023-07 li-lms-2024-01"> <h2 id="search-for-creatives-1">Search For Creatives</h2> <p>You can search for creative content in order to get a collection of creatives matching your search parameters. The Creative API currently supports search by <code>creative id</code>, <code>campaign</code>, <code>content reference</code>, <code>intendedStatus</code>, <code>leadgenCreativeCallToActionDestinations</code> and test fields. The values within each field are displayed with 'or' (ORed) and values across fields are displayed with 'and' (ANDed).</p> <div class="tabGroup" id="tabgroup_6"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_6_http" role="tab" aria-controls="tabpanel_6_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_6_curl" role="tab" aria-controls="tabpanel_6_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_6_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?campaigns=List(id1,id2,id3)&amp;contentReferences=List(id1,id2,id3)&amp;creatives=List(id1,id2,id3)&amp;intendedStatuses=List(ARCHIVED,CANCELED)&amp;isTestAccount=true&amp;isTotalIncluded=false&amp;leadgenCreativeCallToActionDestinations=List()&amp;q=criteria&amp;sortOrder=ASCENDING </code></pre> </section> <section id="tabpanel_6_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;intendedStatuses=List(ARCHIVED,CANCELED)&amp;sortOrder=ASCENDING' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: FINDER' </code></pre> </section> </div> </div> <div data-moniker="li-lms-2024-01 li-lms-2024-02 li-lms-2024-03 li-lms-2024-04 li-lms-2024-05 li-lms-2024-06 li-lms-2024-07 li-lms-2024-08 li-lms-2024-09 li-lms-2024-10 li-lms-2024-11"> <h4 id="parameters">Parameters</h4> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>campaigns</td> <td>sponsoredCampaignUrn[] default=[]</td> <td>Search values associated with creative sponsored campaign account</td> </tr> <tr> <td>contentReferences</td> <td>Urn[] default=[]</td> <td>Search values associated with creative content reference, can be share URN, or ugcPosts URN</td> </tr> <tr> <td>Creatives</td> <td>sponsoredCreativeUrn[] default=[]</td> <td>Search values associated with creative ID</td> </tr> <tr> <td>intendedStatuses</td> <td>IntendedStatus[] default=[]</td> <td>Search values associated with creative intendedStatus</td> </tr> <tr> <td>isTestAccount</td> <td>optional boolean</td> <td>Search values associated with creative isTest flag. True returns creatives only under test accounts. False returns creatives only under non-test accounts. Setting this to null returns creatives regardless of the account being test or non-test</td> </tr> <tr> <td>leadgenCreativeCallToActionDestinations</td> <td>adFormUrn[] default=[]</td> <td>Search values associated with the creative leadgenCallToAction destination</td> </tr> <tr> <td>sortOrder</td> <td>SortOrder default=ASCENDING</td> <td>Sort mode by creative ID for matching records</td> </tr> <tr> <td>pageSize</td> <td>no</td> <td>Specifies the number of entities to be returned. The default is 100.</td> </tr> <tr> <td>pageToken</td> <td>no</td> <td>Unique key representing the last entity of the response. This is to be used to fetch the next set of entities. If less than pageSize entities are returned in the current response, pageToken will be null</td> </tr> </tbody> </table> </div> <div data-moniker="li-lms-2023-06 li-lms-2023-07 li-lms-2024-01"> <h4 id="parameters-1">Parameters</h4> <table> <thead> <tr> <th>Field Name</th> <th>Required</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>campaigns</td> <td>sponsoredCampaignUrn[] default=[]</td> <td>Search values associated with creative sponsored campaign account</td> </tr> <tr> <td>contentReferences</td> <td>Urn[] default=[]</td> <td>Search values associated with creative content reference, can be share URN, or ugcPosts URN</td> </tr> <tr> <td>Creatives</td> <td>sponsoredCreativeUrn[] default=[]</td> <td>Search values associated with creative ID</td> </tr> <tr> <td>intendedStatuses</td> <td>IntendedStatus[] default=[]</td> <td>Search values associated with creative intendedStatus</td> </tr> <tr> <td>isTestAccount</td> <td>optional boolean</td> <td>Search values associated with creative isTest flag. True returns creatives only under test accounts. False returns creatives only under non-test accounts. Setting this to null returns creatives regardless of the account being test or non-test</td> </tr> <tr> <td>isTotalIncluded</td> <td>boolean default=true</td> <td>Whether to return the total number of matching records or not. True returns the total number in the paging area and promotes latency.</td> </tr> <tr> <td>leadgenCreativeCallToActionDestinations</td> <td>adFormUrn[] default=[]</td> <td>Search values associated with the creative leadgenCallToAction destination</td> </tr> <tr> <td>sortOrder</td> <td>SortOrder default=ASCENDING</td> <td>Sort mode by creative ID for matching records</td> </tr> </tbody> </table> </div> <div data-moniker="li-lms-2024-01 li-lms-2024-02 li-lms-2024-03 li-lms-2024-04 li-lms-2024-05 li-lms-2024-06 li-lms-2024-07 li-lms-2024-08 li-lms-2024-09 li-lms-2024-10 li-lms-2024-11"> <h4 id="sample-request-3">Sample Request</h4> <p>The following example describes a search for all creatives associated with a list of creative IDs. The <code>id</code> results are in ascending order.</p> <p>The header X-RestLi-Method must be included in the request and set to <code>FINDER</code>.</p> <div class="tabGroup" id="tabgroup_7"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_7_http" role="tab" aria-controls="tabpanel_7_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_7_curl" role="tab" aria-controls="tabpanel_7_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_7_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING </code></pre> </section> <section id="tabpanel_7_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: FINDER' </code></pre> </section> </div> <h4 id="sample-response-1">Sample Response</h4> <pre><code class="lang-json">{ "metadata": { "nextPageToken": "DgGerr1iVQreCJVjZDOW_grcp63nueBDipsS4DJpvJo" }, "elements": [ { "createdAt": 1624249280000, "servingHoldReasons": [ "STOPPED", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1624249280000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "isServing": false, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:119962155", "intendedStatus": "DRAFT", "account": "urn:li:sponsoredAccount:520866471", "content": { "reference": "urn:li:share:6778045555198214144" } } ] } </code></pre> <p>API Call to get the next set of results would use the nextPageToken passed in the response above.</p> <div class="tabGroup" id="tabgroup_8"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_8_http" role="tab" aria-controls="tabpanel_8_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_8_curl" role="tab" aria-controls="tabpanel_8_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_8_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING&amp;pageToken=DgGerr1iVQreCJVjZDOW_grcp63nueBDipsS4DJpvJo </code></pre> </section> <section id="tabpanel_8_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING&amp;pageToken=DgGerr1iVQreCJVjZDOW_grcp63nueBDipsS4DJpvJo' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: FINDER' </code></pre> </section> </div> <h2 id="update-a-creative">Update a Creative</h2> <p>You can change the details of following Creatives fields:</p> <ul> <li><code>intendedStatus</code>:</li> <li><code>leadgenCallToAction</code>: field <code>adFormUrn</code> - The ad form that is a target destination for the <code>callToAction</code> button. It can only be modified when the creative is in DRAFT status. It is read only once it is set for a creative and once it transitions to any non-draft intended status.</li> <li><code>leadgenCallToAction</code>: field label <code>-Label</code> for the <code>callToAction</code> button</li> <li><code>name</code>: The name of the creative that can be set by advertiser.</li> </ul> <h4 id="sample-request-4">Sample Request</h4> <p>The following example call is for updating <code>intendedStatus</code> to <code>active</code>.</p> <p>The status of a creative determines whether or not the ad is served. See <code>intendedStatus</code> under <a href="#schema" data-linktype="self-bookmark">Creative Schema</a> to understand active, paused, archived, and cancelled statuses. You can change the <code>intendedStatus</code> using the creative ID. You cannot pause an ad creative in review. This endpoint returns a <code>400</code> error if you attempt to change the status of an in-review ad creative to paused.</p> <p>The header X-RestLi-Method must be included in the request and set to <code>PARTIAL_UPDATE</code>.</p> <p>A creative ID is the ID returned in the x-linkedin-id response header on successful create, for example: <code>urn:li:sponsoredCreative:120491345</code>.</p> <div class="tabGroup" id="tabgroup_9"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_9_http" role="tab" aria-controls="tabpanel_9_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_9_curl" role="tab" aria-controls="tabpanel_9_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_9_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} </code></pre> <pre><code class="lang-json">{ "patch": { "$set": { "intendedStatus": "ACTIVE" } } } </code></pre> </section> <section id="tabpanel_9_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/urn%3Ali%3AsponsoredCreative%3A119962155' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "patch": { "$set": { "intendedStatus": "ACTIVE" } } }' </code></pre> </section> </div> <p>A successful response returns a <code>204</code> code.</p> <h2 id="delete-a-creative">Delete a Creative</h2> <p>A Creative can be deleted. Use DELETE method to delete a creative that meets one of the following conditions. To start the process of deleting other creative, update the status to <code>PENDING_DELETION</code>.</p> <ul> <li>It is in a DRAFT state.</li> <li>It is linked to a Campaign in a DRAFT state.</li> <li>It is a video ad creative and <code>processingState</code> is <code>PROCESSING_FAILED</code>.</li> </ul> <p>The header X-RestLi-Method must be included in the request and set to <code>DELETE</code>.</p> <h4 id="sample-request-5">Sample Request</h4> <div class="tabGroup" id="tabgroup_10"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_10_http" role="tab" aria-controls="tabpanel_10_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_10_curl" role="tab" aria-controls="tabpanel_10_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_10_http" role="tabpanel" data-tab="http"> <p>To delete a creative that meets one of the above conditions:</p> <pre><code class="lang-http">DELETE https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} </code></pre> <p>To delete any other creative:</p> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} { "patch": { "$set": { "intendedStatus": "PENDING_DELETION" } } } </code></pre> </section> <section id="tabpanel_10_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <p>To delete creative that meets one of the above conditions:</p> <pre><code class="lang-curl">curl -X DELETE 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: DELETE' </code></pre> <p>To delete any other creative:</p> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Content-Type: application/json' \ --data '{ "patch": { "$set": { "intendedStatus": "PENDING_DELETION" } } }' </code></pre> </section> </div> <p>A successful response returns a 204 code.</p> <h2 id="batch-operations">Batch Operations</h2> <ul> <li><a href="#batch-create-ad-creatives" data-linktype="self-bookmark">Batch Create Ads Creatives</a></li> <li><a href="#batch-get-ad-creatives" data-linktype="self-bookmark">Batch Get Ads Creatives</a></li> <li><a href="#batch-partial-update-ad-creatives" data-linktype="self-bookmark">Batch Partial Update Ads Creatives</a></li> <li><a href="#batch-delete-ad-creatives" data-linktype="self-bookmark">Batch Delete Ads Creatives</a></li> </ul> <p>Batch operations may only be performed on entities that belong to the same Ad Account.</p> <h3 id="batch-create-ad-creatives">Batch Create Ad Creatives</h3> <p>When you perform a batch create, the header X-RestLi-Method must be included in the request and set to <code>BATCH_CREATE</code>.</p> <div class="tabGroup" id="tabgroup_11"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_11_http" role="tab" aria-controls="tabpanel_11_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_11_curl" role="tab" aria-controls="tabpanel_11_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_11_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives </code></pre> <pre><code class="lang-json">{ "elements": [ { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" }, { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" } ] } </code></pre> </section> <section id="tabpanel_11_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/adCreativesV2' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-RestLi-Method: BATCH_CREATE' \ -H 'Content-Type: application/json' \ --data '{ "elements": [ { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" }, { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" } ] }' </code></pre> </section> </div> <h4 id="sample-response-2">Sample Response</h4> <pre><code class="lang-json">{ "elements": [ { "location": "/partnerApiCreatives/urn%3Ali%3AsponsoredCreative%3A120493375", "status": 201, "id": "urn:li:sponsoredCreative:120493375" }, { "location": "/partnerApiCreatives/urn%3Ali%3AsponsoredCreative%3A120493385", "status": 201, "id": "urn:li:sponsoredCreative:120493385" } ] } </code></pre> <h3 id="batch-get-ad-creatives">Batch Get Ad Creatives</h3> <p>You can fetch a list of Ad Creatives with associated IDs.</p> <p>When you perform a batch create, the header X-RestLi-Method must be included in the request and set to <code>BATCH_GET</code>. Additionally, the request must include a header for <code>X-Restli-Protocol-Version: 2.0.0</code>.</p> <h4 id="sample-request-6">Sample Request</h4> <div class="tabGroup" id="tabgroup_12"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_12_http" role="tab" aria-controls="tabpanel_12_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_12_curl" role="tab" aria-controls="tabpanel_12_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_12_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120560935,urn%3Ali%3AsponsoredCreative%3A120694175) </code></pre> </section> <section id="tabpanel_12_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120560935,urn%3Ali%3AsponsoredCreative%3A120694175)' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-RestLi-Method: BATCH_GET' </code></pre> </section> </div> <h4 id="sample-response-3">Sample Response</h4> <pre><code class="lang-json">{ "results": { "urn:li:sponsoredCreative:120560935": { "servingHoldReasons": [ "UNDER_REVIEW", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1633533057000, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "content": { "reference": "urn:li:share:6778045555198214144" }, "createdAt": 1633533057000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "review": { "status": "PENDING" }, "isServing": false, "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:120560935", "intendedStatus": "ACTIVE", "account": "urn:li:sponsoredAccount:520866471" }, "urn:li:sponsoredCreative:120694175": { "servingHoldReasons": [ "UNDER_REVIEW", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1634718249000, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "content": { "reference": "urn:li:share:6778045555198214144" }, "createdAt": 1634718249000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "review": { "status": "PENDING" }, "isServing": false, "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:120694175", "intendedStatus": "ACTIVE", "account": "urn:li:sponsoredAccount:520866471" } }, "statuses": { "urn:li:sponsoredCreative:120560935": 200, "urn:li:sponsoredCreative:120694175": 200 }, "errors": {} } </code></pre> <h3 id="batch-partial-update-ad-creatives">Batch Partial Update Ad Creatives</h3> <p>When you perform a batch partial update, the header X-RestLi-Method must be included in the request and set to <code>BATCH_PARTIAL_UPDATE</code>. Additionally, the request must include a header for <code>X-Restli-Protocol-Version: 2.0.0</code>.</p> <div class="tabGroup" id="tabgroup_13"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_13_http" role="tab" aria-controls="tabpanel_13_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_13_curl" role="tab" aria-controls="tabpanel_13_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_13_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) </code></pre> <pre><code class="lang-json">{ "entities": { "urn:li:sponsoredCreative:120493375": { "patch": { "$set": { "intendedStatus": "CANCELED" } } }, "urn:li:sponsoredCreative:120493385": { "patch": { "$set": { "intendedStatus": "DRAFT" } } } } } </code></pre> </section> <section id="tabpanel_13_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: BATCH_PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "entities": { "urn:li:sponsoredCreative:120493375": { "patch": { "$set": { "intendedStatus": "CANCELED" } } }, "urn:li:sponsoredCreative:120493385": { "patch": { "$set": { "intendedStatus": "DRAFT" } } } } }' </code></pre> </section> </div> <h3 id="batch-delete-ad-creatives">Batch Delete Ad Creatives</h3> <p>Multiple creatives can be deleted. Use DELETE method to delete creatives that meet one of the following conditions. To start the process of deleting other creatives, update the status to <code>PENDING_DELETION</code>.</p> <ul> <li>Creative is in a DRAFT state.</li> <li>Creative is linked to a Campaign in a DRAFT state.</li> <li>Creative is a Video Ad creative and <code>processingState</code> is <code>PROCESSING_FAILED</code>.</li> </ul> <h4 id="sample-request-7">Sample Request</h4> <div class="tabGroup" id="tabgroup_14"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_14_http" role="tab" aria-controls="tabpanel_14_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_14_curl" role="tab" aria-controls="tabpanel_14_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_14_http" role="tabpanel" data-tab="http"> <p>To delete creatives that meets one of the above conditions:</p> <pre><code class="lang-http">DELETE https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) </code></pre> <p>To delete any creatives that don't meet above conditions:</p> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) { "entities":{ "120493375":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } }, "120493385":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } } } } </code></pre> </section> <section id="tabpanel_14_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <p>To delete creatives that meets one of the above conditions:</p> <pre><code class="lang-curl">curl -X DELETE 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: DELETE' </code></pre> <p>To delete creatives that don't meet one of the above conditions:</p> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-RestLi-Method: BATCH_PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "entities":{ "120493375":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } }, "120493385":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } } } }' </code></pre> </section> </div> <p>A successful response returns a <code>204</code> code.</p> <h4 id="sample-response-4">Sample Response</h4> <p>The sample request attempted to delete two Ad Creatives. The sample response below shows that only Ad Creatives 1 was successfully updated.</p> <pre><code class="lang-json">{ "results": { "creative_id_1":{ "Status":204 } }, "errors":{ "creative_id_2":{ //error detail } } } </code></pre> </div> <div data-moniker="li-lms-2023-06 li-lms-2023-07 li-lms-2024-01"> <h4 id="sample-request-8">Sample Request</h4> <p>The following example describes a search for all creatives associated with a list of creative IDs. The <code>id</code> results are in descending order.</p> <p>The header X-RestLi-Method must be included in the request and set to <code>FINDER</code>.</p> <div class="tabGroup" id="tabgroup_15"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_15_http" role="tab" aria-controls="tabpanel_15_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_15_curl" role="tab" aria-controls="tabpanel_15_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_15_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING </code></pre> </section> <section id="tabpanel_15_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives?creatives=List(urn%3Ali%3AsponsoredCreative%3A119962155)&amp;q=criteria&amp;sortOrder=ASCENDING' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: FINDER' </code></pre> </section> </div> <h4 id="sample-response-5">Sample Response</h4> <pre><code class="lang-json">{ "paging": { "start": 0, "count": 10, "links": [], "total": 1 }, "elements": [ { "createdAt": 1624249280000, "servingHoldReasons": [ "STOPPED", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1624249280000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "isServing": false, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:119962155", "intendedStatus": "DRAFT", "account": "urn:li:sponsoredAccount:520866471", "content": { "reference": "urn:li:share:6778045555198214144" } } ] } </code></pre> <h2 id="update-a-creative-1">Update a Creative</h2> <p>You can change the details of following Creatives fields:</p> <ul> <li><code>intendedStatus</code>:</li> <li><code>leadgenCallToAction</code>: field <code>adFormUrn</code> - The ad form that is a target destination for the <code>callToAction</code> button. It can only be modified when the creative is in DRAFT status. It is read only once it is set for a creative and once it transitions to any non-draft intended status.</li> <li><code>leadgenCallToAction</code>: field label <code>-Label</code> for the <code>callToAction</code> button</li> </ul> <h4 id="sample-request-9">Sample Request</h4> <p>The following example call is for updating <code>intendedStatus</code> to <code>active</code>.</p> <p>The status of a creative determines whether or not the ad is served. See <code>intendedStatus</code> under <a href="#schema" data-linktype="self-bookmark">Creative Schema</a> to understand active, paused, archived, and cancelled statuses. You can change the <code>intendedStatus</code> using the creative ID. You cannot pause an ad creative in review. This endpoint returns a <code>400</code> error if you attempt to change the status of an in-review ad creative to paused.</p> <p>The header X-RestLi-Method must be included in the request and set to <code>PARTIAL_UPDATE</code>.</p> <p>A creative ID is the ID returned in the x-linkedin-id response header on successful create, for example: <code>urn:li:sponsoredCreative:120491345</code>.</p> <div class="tabGroup" id="tabgroup_16"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_16_http" role="tab" aria-controls="tabpanel_16_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_16_curl" role="tab" aria-controls="tabpanel_16_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_16_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} </code></pre> <pre><code class="lang-json">{ "patch": { "$set": { "intendedStatus": "ACTIVE" } } } </code></pre> </section> <section id="tabpanel_16_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/urn%3Ali%3AsponsoredCreative%3A119962155' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "patch": { "$set": { "intendedStatus": "ACTIVE" } } }' </code></pre> </section> </div> <p>A successful response returns a <code>204</code> code.</p> <h2 id="delete-a-creative-1">Delete a Creative</h2> <p>A Creative can be deleted. Use DELETE method to delete a creative that meets one of the following conditions. To start the process of deleting other creative, update the status to <code>PENDING_DELETION</code>.</p> <ul> <li>It is in a DRAFT state.</li> <li>It is linked to a Campaign in a DRAFT state.</li> <li>It is a video ad creative and <code>processingState</code> is <code>PROCESSING_FAILED</code>.</li> </ul> <p>The header X-RestLi-Method must be included in the request and set to <code>DELETE</code>.</p> <h4 id="sample-request-10">Sample Request</h4> <div class="tabGroup" id="tabgroup_17"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_17_http" role="tab" aria-controls="tabpanel_17_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_17_curl" role="tab" aria-controls="tabpanel_17_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_17_http" role="tabpanel" data-tab="http"> <p>To delete a creative that meets one of the above conditions:</p> <pre><code class="lang-http">DELETE https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} </code></pre> <p>To delete any other creative:</p> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID} { "patch": { "$set": { "intendedStatus": "PENDING_DELETION" } } } </code></pre> </section> <section id="tabpanel_17_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <p>To delete creative that meets one of the above conditions:</p> <pre><code class="lang-curl">curl -X DELETE 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: DELETE' </code></pre> <p>To delete any other creative:</p> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives/{creative ID}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Content-Type: application/json' \ --data '{ "patch": { "$set": { "intendedStatus": "PENDING_DELETION" } } }' </code></pre> </section> </div> <p>A successful response returns a 204 code.</p> <h2 id="batch-operations-1">Batch Operations</h2> <ul> <li><a href="#batch-create-ad-creatives" data-linktype="self-bookmark">Batch Create Ads Creatives</a></li> <li><a href="#batch-get-ad-creatives" data-linktype="self-bookmark">Batch Get Ads Creatives</a></li> <li><a href="#batch-partial-update-ad-creatives" data-linktype="self-bookmark">Batch Partial Update Ads Creatives</a></li> <li><a href="#batch-delete-ad-creatives" data-linktype="self-bookmark">Batch Delete Ads Creatives</a></li> </ul> <p>Batch operations may only be performed on entities that belong to the same Ad Account.</p> <h3 id="batch-create-ad-creatives-1">Batch Create Ad Creatives</h3> <p>When you perform a batch create, the header X-RestLi-Method must be included in the request and set to <code>BATCH_CREATE</code>.</p> <div class="tabGroup" id="tabgroup_18"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_18_http" role="tab" aria-controls="tabpanel_18_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_18_curl" role="tab" aria-controls="tabpanel_18_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_18_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives </code></pre> <pre><code class="lang-json">{ "elements": [ { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" }, { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" } ] } </code></pre> </section> <section id="tabpanel_18_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/adCreativesV2' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-RestLi-Method: BATCH_CREATE' \ -H 'Content-Type: application/json' \ --data '{ "elements": [ { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" }, { "content": { "reference": "urn:li:share:6778045555198214144" }, "campaign": "urn:li:sponsoredCampaign:360035215", "intendedStatus": "DRAFT" } ] }' </code></pre> </section> </div> <h4 id="sample-response-6">Sample Response</h4> <pre><code class="lang-json">{ "elements": [ { "location": "/partnerApiCreatives/urn%3Ali%3AsponsoredCreative%3A120493375", "status": 201, "id": "urn:li:sponsoredCreative:120493375" }, { "location": "/partnerApiCreatives/urn%3Ali%3AsponsoredCreative%3A120493385", "status": 201, "id": "urn:li:sponsoredCreative:120493385" } ] } </code></pre> <h3 id="batch-get-ad-creatives-1">Batch Get Ad Creatives</h3> <p>You can fetch a list of Ad Creatives with associated IDs.</p> <p>When you perform a batch create, the header X-RestLi-Method must be included in the request and set to <code>BATCH_GET</code>. Additionally, the request must include a header for <code>X-Restli-Protocol-Version: 2.0.0</code>.</p> <h4 id="sample-request-11">Sample Request</h4> <div class="tabGroup" id="tabgroup_19"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_19_http" role="tab" aria-controls="tabpanel_19_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_19_curl" role="tab" aria-controls="tabpanel_19_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_19_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">GET https://api.linkedin.com/rest/adAccounts/520866471/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120560935,urn%3Ali%3AsponsoredCreative%3A120694175) </code></pre> </section> <section id="tabpanel_19_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X GET 'https://api.linkedin.com/rest/adAccounts/520866471/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120560935,urn%3Ali%3AsponsoredCreative%3A120694175)' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-RestLi-Method: BATCH_GET' </code></pre> </section> </div> <h4 id="sample-response-7">Sample Response</h4> <pre><code class="lang-json">{ "results": { "urn:li:sponsoredCreative:120560935": { "servingHoldReasons": [ "UNDER_REVIEW", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1633533057000, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "content": { "reference": "urn:li:share:6778045555198214144" }, "createdAt": 1633533057000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "review": { "status": "PENDING" }, "isServing": false, "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:120560935", "intendedStatus": "ACTIVE", "account": "urn:li:sponsoredAccount:520866471" }, "urn:li:sponsoredCreative:120694175": { "servingHoldReasons": [ "UNDER_REVIEW", "CAMPAIGN_STOPPED", "ACCOUNT_SERVING_HOLD", "CAMPAIGN_GROUP_STATUS_HOLD" ], "lastModifiedAt": 1634718249000, "lastModifiedBy": "urn:li:person:rboDhL7Xsf", "content": { "reference": "urn:li:share:6778045555198214144" }, "createdAt": 1634718249000, "isTest": false, "createdBy": "urn:li:person:rboDhL7Xsf", "review": { "status": "PENDING" }, "isServing": false, "campaign": "urn:li:sponsoredCampaign:360035215", "id": "urn:li:sponsoredCreative:120694175", "intendedStatus": "ACTIVE", "account": "urn:li:sponsoredAccount:520866471" } }, "statuses": { "urn:li:sponsoredCreative:120560935": 200, "urn:li:sponsoredCreative:120694175": 200 }, "errors": {} } </code></pre> <h3 id="batch-partial-update-ad-creatives-1">Batch Partial Update Ad Creatives</h3> <p>When you perform a batch partial update, the header X-RestLi-Method must be included in the request and set to <code>BATCH_PARTIAL_UPDATE</code>. Additionally, the request must include a header for <code>X-Restli-Protocol-Version: 2.0.0</code>.</p> <div class="tabGroup" id="tabgroup_20"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_20_http" role="tab" aria-controls="tabpanel_20_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_20_curl" role="tab" aria-controls="tabpanel_20_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_20_http" role="tabpanel" data-tab="http"> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) </code></pre> <pre><code class="lang-json">{ "entities": { "urn:li:sponsoredCreative:120493375": { "patch": { "$set": { "intendedStatus": "CANCELED" } } }, "urn:li:sponsoredCreative:120493385": { "patch": { "$set": { "intendedStatus": "DRAFT" } } } } } </code></pre> </section> <section id="tabpanel_20_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <pre><code class="lang-curl">curl -X POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: BATCH_PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "entities": { "urn:li:sponsoredCreative:120493375": { "patch": { "$set": { "intendedStatus": "CANCELED" } } }, "urn:li:sponsoredCreative:120493385": { "patch": { "$set": { "intendedStatus": "DRAFT" } } } } }' </code></pre> </section> </div> <h3 id="batch-delete-ad-creatives-1">Batch Delete Ad Creatives</h3> <p>Multiple creatives can be deleted. Use DELETE method to delete creatives that meet one of the following conditions. To start the process of deleting other creatives, update the status to <code>PENDING_DELETION</code>.</p> <ul> <li>Creative is in a DRAFT state.</li> <li>Creative is linked to a Campaign in a DRAFT state.</li> <li>Creative is a Video Ad creative and <code>processingState</code> is <code>PROCESSING_FAILED</code>.</li> </ul> <h4 id="sample-request-12">Sample Request</h4> <div class="tabGroup" id="tabgroup_21"> <ul role="tablist"> <li role="presentation"> <a href="#tabpanel_21_http" role="tab" aria-controls="tabpanel_21_http" data-tab="http" tabindex="0" aria-selected="true" data-linktype="self-bookmark">http</a> </li> <li role="presentation"> <a href="#tabpanel_21_curl" role="tab" aria-controls="tabpanel_21_curl" data-tab="curl" tabindex="-1" data-linktype="self-bookmark">curl</a> </li> </ul> <section id="tabpanel_21_http" role="tabpanel" data-tab="http"> <p>To delete creatives that meets one of the above conditions:</p> <pre><code class="lang-http">DELETE https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) </code></pre> <p>To delete any creatives that don't meet above conditions:</p> <pre><code class="lang-http">POST https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385) { "entities":{ "120493375":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } }, "120493385":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } } } } </code></pre> </section> <section id="tabpanel_21_curl" role="tabpanel" data-tab="curl" aria-hidden="true" hidden="hidden"> <p>To delete creatives that meets one of the above conditions:</p> <pre><code class="lang-curl">curl -X DELETE 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'X-RestLi-Method: DELETE' </code></pre> <p>To delete creatives that don't meet one of the above conditions:</p> <pre><code class="lang-curl">curl -X POST 'https://api.linkedin.com/rest/adAccounts/{adAccountId}/creatives?ids=List(urn%3Ali%3AsponsoredCreative%3A120493375,urn%3Ali%3AsponsoredCreative%3A120493385)' \ -H 'Authorization: Bearer {INSERT_TOKEN}' \ -H 'X-Restli-Protocol-Version: 2.0.0' \ -H 'LinkedIn-Version: {version number in the format YYYYMM}' \ -H 'X-RestLi-Method: BATCH_PARTIAL_UPDATE' \ -H 'Content-Type: application/json' \ --data '{ "entities":{ "120493375":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } }, "120493385":{ "patch":{ "$set":{ "intendedStatus":"PENDING_DELETION" } } } } }' </code></pre> </section> </div> <p>A successful response returns a <code>204</code> code.</p> <h4 id="sample-response-8">Sample Response</h4> <p>The sample request attempted to delete two Ad Creatives. The sample response below shows that only Ad Creatives 1 was successfully updated.</p> <pre><code class="lang-json">{ "results": { "creative_id_1":{ "Status":204 } }, "errors":{ "creative_id_2":{ //error detail } } } </code></pre> </div> <h2 id="ad-creative-rejection-reasons">Ad Creative Rejection Reasons</h2> <p>Ad creatives go through a review process before they can be served. The following table lists the possible reasons an ad could be rejected. The symbol column shows the values that are returned through the API.</p> <table> <thead> <tr> <th>Symbol</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>ADULT_CONTENT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#adult-content" data-linktype="external">Adult Content:</a> LinkedIn does not allow ads related to sexual or adult content, products, or services, including images with nudity, escort services, erotic massage, pornography, sex toys, prostitution, sexual services, strip clubs, erotic dancing, or international bride services.</td> </tr> <tr> <td>AFFILIATE_ADVERTISING</td> <td><a href="https://www.linkedin.com/legal/ads-policy#affiliate-advertising" data-linktype="external">Affiliate Advertising:</a> LinkedIn does not allow affiliate ads and related programs.</td> </tr> <tr> <td>ALCOHOL</td> <td><a href="https://www.linkedin.com/legal/ads-policy#alcohol" data-linktype="external">Alcohol:</a> Ads for alcoholic beverages such as wine, beer and spirits are restricted on LinkedIn and may not be placed through our self-service tool.</td> </tr> <tr> <td>ANIMAL_OR_ANIMAL_PRODUCTS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#animal-products" data-linktype="external">Animal or Animal Products:</a> LinkedIn does not allow ads for live animals or animal products, including sale of animals, furs or products made from furs, hides or body parts of animals included on any government endangered species lists.</td> </tr> <tr> <td>BACK_BUTTON_NOT_WORKING</td> <td><a href="https://www.linkedin.com/legal/ads-policy#link-behavior" data-linktype="external">Back button not working:</a> The landing page must allow users to use the browser's 'Back' button to return to the page that the ad was displayed on.</td> </tr> <tr> <td>CHINA_POLICY_VIOLATION</td> <td>Content does not comply with China Ads Policy.</td> </tr> <tr> <td>COPYRIGHTED_CONTENT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#copyright-infringement" data-linktype="external">Copyrighted content:</a> LinkedIn does not allow ads for products and services marketed for the purpose of (or that are primarily used for) the distribution of software, media and other content in violation of the intellectual property rights of others.</td> </tr> <tr> <td>COUNTERFEIT_GOODS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#counterfeit" data-linktype="external">Counterfeit goods:</a> LinkedIn does not allow ads that sell or promote counterfeit goods.</td> </tr> <tr> <td>CRYPTOCURRENCY</td> <td><a href="https://www.linkedin.com/legal/ads-policy#cryptocurrency" data-linktype="external">Cryptocurrency:</a> LinkedIn does not allow ads related to the buying, selling or trading of cryptocurrencies.</td> </tr> <tr> <td>CURRENT_SENSITIVE_EVENTS</td> <td>LinkedIn does not allow ads that could capitalize from, exploit or sensationalize the currently monitored sensitive event.</td> </tr> <tr> <td>DATA_COLLECTION_AND_PRIVACY</td> <td><a href="https://www.linkedin.com/legal/ads-policy#https-and-http-support" data-linktype="external">Data collection &amp; privacy:</a> Do not use an ad to facilitate collection of a member's data. If you collect sensitive information, we ask that you use HTTPs. Sensitive information includes, but is not limited to, financial, identification, medical, and login information.</td> </tr> <tr> <td>DECEPTIVE_BEHAVIOR</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Deceptive Behavior:</a> Behavior like cloaking or unicode manipulation.</td> </tr> <tr> <td>DIETARY_SUPPLEMENTS</td> <td>LinkedIn does not allow ads related to dietary supplements with ephedrine group alkaloids targeted to members under the age of 18.</td> </tr> <tr> <td>DRUGS_AND_RELATED_PRODUCTS</td> <td><ol> <li> <a href="https://www.linkedin.com/legal/ads-policy#prescription-drugs" data-linktype="external">Prescription Drugs:</a> Ads promoting prescription drugs are restricted and require prior authorization. Ads may only promote prescription drugs in the following jurisdictions: the United States and Canada. Such ads must not target members under 18 years of age. <a href="https://www.linkedin.com/help/lms/answer/a1320991" data-linktype="external">Learn more</a>. </li><li> <a href="https://www.linkedin.com/legal/ads-policy#over-the-counter-drugs" data-linktype="external">Over-the-Counter:</a> Ads promoting over-the-counter drugs are restricted and require prior authorization. Ads may only promote over-the-counter drugs in jurisdictions where it is legal and must adhere to all applicable laws and regulations. Such ads must not target members under 18 years of age. Ads targeting jurisdictions outside the United States or Canada may target healthcare-related professionals only. </li><li><a href="https://www.linkedin.com/legal/ads-policy#illicit-or-recreational-drugs" data-linktype="external">Illicit or Recreational Drugs and related products:</a> LinkedIn does not allow ads related to illicit or recreational drugs or any related products or services. Ads that promote illegal drugs, highs, herbal medicines and treatments, psychoactive effects of substances, or aids to pass drug tests are all prohibited.</li></ol></td> </tr> <tr> <td>EXCESSIVE_CAPITALIZATION</td> <td><a href="https://www.linkedin.com/legal/ads-policy#standard-text-and-contact-information" data-linktype="external">Excessive capitalization:</a> Do not use excessive capitalization in your ad, with the exception of valid acronyms and trademarks.</td> </tr> <tr> <td>EXCESSIVE_CONTACT_INFORMATION</td> <td><a href="https://www.linkedin.com/legal/ads-policy#standard-text-and-contact-information" data-linktype="external">Excessive contact information:</a> You may include a single link and either a single email address or phone number in your ad. A QR code is considered an extra link if it’s different from the landing page URL.</td> </tr> <tr> <td>EXCESSIVE_NEGATIVE_RESPONSE</td> <td><a href="https://www.linkedin.com/legal/professional-community-policies#spam-content" data-linktype="external">Excessive negative response:</a> Ensure that your ad does not continue the conversation after the member has declined your offer.</td> </tr> <tr> <td>FAKE_DOCUMENT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fake-documents-and-related-services" data-linktype="external">Fake document:</a> LinkedIn does not allow ads for fake documents that could be used to trick or defraud. Examples include: (1) academic degrees, (2) professional licenses or certifications, (3) national IDs, (4) working permits (immigration status), (5) business licenses, (6) birth certificates, (7) passports, (8) invoices or receipts, (9) medical records, and (10) noble titles/status.</td> </tr> <tr> <td>GAMBLING_SWEEPSTAKES_AND_VIRTUAL_CURRENCY</td> <td><a href="https://www.linkedin.com/legal/ads-policy#gambling-and-sweepstakes" data-linktype="external">Gambling and sweepstakes:</a> LinkedIn does not allow ads related to gambling or sweepstakes. Ads related to the following are prohibited: sports betting, bingo, lotteries, gambling tours and tutoring, tools and software for gambling, scratch games.</td> </tr> <tr> <td>GENERAL_TRADEMARK_ISSUES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#trademark-infringement" data-linktype="external">General trademark issues:</a> Do not use trademarks that you don't have a legal right to use in your ad. Your ad must not include any text that may be deemed as infringing upon the trademarks of other parties unless permission has been granted by the trademark owner.</td> </tr> <tr> <td>HACKING_AND_CRACKING</td> <td><a href="https://www.linkedin.com/legal/ads-policy#hacking-cracking-circumvention" data-linktype="external">Hacking, cracking, and circumvention:</a> LinkedIn does not allow ads that promote products or services for hacking. This includes: instructions on how to illegally alter electronic equipment, bypass digital content management systems, or otherwise illegally tamper with software, servers, cell phones, or websites, or listen in or record conversations or information without proper consent. LinkedIn also does not allow products designed to interfere with the enforcement of traffic laws (radar detectors), surveillance products, encryption products/services, and de-encryption devices and services.</td> </tr> <tr> <td>HATE_VIOLENCE_DISCRIMINATION_AND_OPPOSITION</td> <td><a href="https://www.linkedin.com/legal/ads-policy#discrimination" data-linktype="external">Hate speech and discrimination:</a> LinkedIn does not allow ads that include hate speech or show, or promote violence or discrimination against others, or are personal attacks on any individual, group, company or organization, or otherwise advocating against or targeting any individual, group, company or organization.</td> </tr> <tr> <td>HEALTH_MATTERS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#health-matters" data-linktype="external">Health matters:</a> Ads promoting unrealistic or misleading claims about health improvements, including related to diet and weight loss, are prohibited. Ads promoting unhealthy or unsafe behaviors, such as excessive consumption of an item, are also prohibited. LinkedIn reserves the right to restrict advertising related to any health matter.</td> </tr> <tr> <td>ILLICIT_OR_RECREATIONAL_DRUGS_AND_RELATED_PRODUCTS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#illicit-or-recreational-drugs" data-linktype="external">Illicit or Recreational Drugs and Related Products:</a> LinkedIn does not allow ads promoting the sale or use of illicit or recreational drugs, or any related products or services. Ads promoting illegal drugs, highs, herbal medicines and treatments, psychoactive effects of substances, or aids to pass drug tests are prohibited.</td> </tr> <tr> <td>IMPLIED_AFFILIATION</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Implied affiliation:</a> Do not imply you or your product is affiliated with or endorsed by others without their permission.</td> </tr> <tr> <td>INAPPROPRIATE_LANGUAGE_OR_IMAGE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#appropriate-language" data-linktype="external">Inappropriate language or image:</a> Please use appropriate and acceptable language and images in your ad. Do not use language or images that could be considered offensive by any reasonable viewer of your ad. Even if legal in the applicable jurisdiction, LinkedIn does not allow ads that are indecent, violent, vulgar, suggestive or that, in the opinion of LinkedIn, may be offensive to good taste.</td> </tr> <tr> <td>INAPPROPRIATE_NAME</td> <td><a href="https://www.linkedin.com/legal/ads-policy#appropriate-language" data-linktype="external">Inappropriate name:</a> For Sponsored InMails, we require the sender's name to be of a natural person. Do not use a fake name, invalid profile name, or company name to send the Sponsored InMail.</td> </tr> <tr> <td>INCONSISTENT_DISPLAY_AND_LANDING_PAGE_URLS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#link-behavior" data-linktype="external">Inconsistent display and landing page URLs:</a> Your display URL must match your destination URL. All members who click on your ad must be sent to the same destination URL and landing page.</td> </tr> <tr> <td>JOB_POSTING_WITHOUT_LISTED_STATE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#incomplete-ad" data-linktype="external">Job Posting Inactive:</a> This ad promotes a job posting that has been deleted, closed, is in draft, etc. Ensure your ad promotes an active job posting.</td> </tr> <tr> <td>LEGITSCRIPT_APPROVAL_MISSING</td> <td><a href="https://www.linkedin.com/help/lms/answer/a1320991" data-linktype="external">Authorization Required:</a> Ads promoting pharmacy or telehealth services are restricted and require prior authorization. Requirements for authorization include LegitScript certification and onboarding.</td> </tr> <tr> <td>LINKEDIN_MENTIONED_IN_AD_TEXT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#use-of-LinkedIn-trademark" data-linktype="external">LinkedIn in ad:</a> Do not use LinkedIn in your ad unless it refers to a page or product on our site, such as ‘Find me on LinkedIn.’ Do not imply affiliation with or endorsement by LinkedIn.</td> </tr> <tr> <td>LOANS_AND_FINANCIAL_SERVICES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#short-term-loans-and-financial-services" data-linktype="external">Loans &amp; financial services:</a> Ads for loan and financial services must fulfill a specific set of requirements.</td> </tr> <tr> <td>MALICIOUS_SOFTWARE_OR_BROWSER</td> <td><a href="https://www.linkedin.com/legal/ads-policy#malicious-software-browser" data-linktype="external">Malicious Software/Browser:</a> Do not use an ad to promote, install or distribute viruses, worms, spyware, malware or other malicious software. Software should only be installed with the permission of the user and should be readily removable by the user.</td> </tr> <tr> <td>MEDICAL_DEVICES_AND_TREATMENTS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#medical-devices-and-medical-treatments" data-linktype="external">Medical Devices and Medical Treatments:</a> Ads for medical devices and medical treatments, including clinical trials, are restricted. Such ads must not target members under the age of 18, and can only target healthcare-related professionals.</td> </tr> <tr> <td>MISINFORMATION</td> <td><a href="https://www.linkedin.com/legal/professional-community-policies#false-or-misleading-content" data-linktype="external">Misinformation:</a> Ads promoting confirmed false or substantially misleading claims in violation of LinkedIn’s <a href="https://www.linkedin.com/legal/ads-policy#professional-community-policies" data-linktype="external">Professional Community Policies</a> are prohibited.</td> </tr> <tr> <td>MISLEADING_CLAIMS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Misleading claims:</a> Your product or service must accurately match the text of your ad - don't lie, don't exaggerate and don't make false, misleading, or scientifically impossible claims. The claims you make in your ad should have factual support.</td> </tr> <tr> <td>MISMATCHED_AD_TEXT_AND_LANDING_PAGE_CONTENT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Mismatched ad text and landing page content:</a> The photos and images in your ad should have a reasonable relationship to the product or service being advertised.</td> </tr> <tr> <td>MISSING_PRIVACY_POLICY</td> <td><a href="https://www.linkedin.com/legal/ads-policy#privacy" data-linktype="external">Missing privacy policy:</a> The landing page associated with the URL for your privacy policy is missing the actual privacy policy statement. Please note a privacy policy is required if using a Lead Gen Form.</td> </tr> <tr> <td>MISSING_UK_FCA_FINANCIAL</td> <td><a href="https://www.linkedin.com/legal/ads-policy#short-term-loans-and-financial-services" data-linktype="external">UK FCA Authorisation:</a> Ads promoting financial services or products targeting audiences in the United Kingdom may come from UK Financial Conduct Authority authorised advertisers only. <a href="https://www.linkedin.com/help/lms/answer/a6238495" data-linktype="external">Learn more.</a></td> </tr> <tr> <td>MISSING_URL_FOR_WEBSITE_OBJECTIVE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#link-behavior" data-linktype="external">Missing URL:</a> You must include URL links associated with the ad creative when your campaign objective is website visits or website conversion.</td> </tr> <tr> <td>NON_MATCHING_LANGUAGES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#supported-languages" data-linktype="external">Non-matching languages:</a> The language of your creative should match the language on the site and the language you are targeting.</td> </tr> <tr> <td>NON_STANDARD_TEXT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#standard-text-and-contact-information" data-linktype="external">Non-standard text:</a> Use correct spelling and grammar in the text of your ad. Do not use non-standard spelling, grammar, capitalization, and punctuation. Avoid excessive or inappropriate punctuation, or repeated punctuation (e.g. more than one single exclamation point). Do not use symbols (e.g. *, @) in a manner that differ from their standard meaning. Do not use symbols in place of a letter ("cl!ck"). Avoid repetitive words, text that is difficult to read because of how it is displayed (e.g. upside-down text), excessive or non-standard formatting, unsupported macro. Currently only %FIRSTNAME% and %FULLNAME% are supported in a Message Ad body.</td> </tr> <tr> <td>NONFUNCTIONAL_SITE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#link-behavior" data-linktype="external">Non-functional site:</a> Do not advertise if any of the following scenarios applies: the URL does not work; your site is under construction; the domain is for sale; visitors land on an error page (such as 404 or 405 error); the URL leads to an email address or a file that requires an additional application to open.</td> </tr> <tr> <td>OCCULT_PURSUITS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#occult-pursuits" data-linktype="external">Occult pursuits:</a> LinkedIn does not allow ads for fortune telling, dream interpretations and individual horoscopes.</td> </tr> <tr> <td>OFFENSIVE_LANGUAGE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#appropriate-language" data-linktype="external">Offensive language:</a> LinkedIn does not allow ads that use language that could be considered offensive by any reasonable viewer.</td> </tr> <tr> <td>OFFENSIVE_TO_GOOD_TASTE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#offensive-to-good-taste" data-linktype="external">Offensive to good taste:</a> LinkedIn does not allow for ads that are indecent, vulgar, suggestive or that, in the opinion of LinkedIn, may be offensive to good taste. Ads that depict violent or degrading behavior are not acceptable. In special circumstances, LinkedIn may determine that an ad that was acceptable, is no longer appropriate given current events.</td> </tr> <tr> <td>OFFER_NOT_FOUND</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Offer not found:</a> Do not advertise prices or offers that are inaccurate - any advertised discount, offer, or price must be easily discoverable from the URL in your ad.</td> </tr> <tr> <td>OVER_THE_COUNTER_DRUGS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#over-the-counter-drugs" data-linktype="external">Over-the-counter drugs:</a> Ads promoting over-the-counter drugs are restricted and require prior authorization. Ads may only promote over-the-counter drugs in jurisdictions where it is legal and must adhere to all applicable laws and regulations. Such ads must not target members under 18 years of age. Ads targeting jurisdictions outside the United States or Canada may target healthcare-related professionals only.</td> </tr> <tr> <td>PHARMACY_AND_TELEHEALTH</td> <td><a href="https://www.linkedin.com/legal/ads-policy#pharmacy-and-telehealth-services" data-linktype="external">Pharmacy and Telehealth:</a> Ads promoting pharmacy or telehealth services are restricted and require prior authorization. Requirements for authorization include LegitScript certification. Ads may only promote pharmacy and telehealth services in the following jurisdictions: the United States. Such ads must not target members under 18 years of age. <a href="https://www.linkedin.com/help/lms/answer/a1320991" data-linktype="external">Learn more.</a></td> </tr> <tr> <td>PHISHING</td> <td><a href="https://www.linkedin.com/legal/ads-policy#phishing" data-linktype="external">Phishing:</a> Do not use ads to promote websites that trick users into providing personal or other information.</td> </tr> <tr> <td>POP_UP_OR_POP_UNDER</td> <td><a href="https://www.linkedin.com/legal/ads-policy#link-behavior" data-linktype="external">Pop-up or pop-under:</a> Do not send members to a landing page that generates a pop-up or pop-under.</td> </tr> <tr> <td>PRESCRIPTION_DRUGS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#prescription-drugs" data-linktype="external">Prescription drugs:</a> Ads promoting prescription drugs are restricted and require prior authorization. Ads may only promote prescription drugs in the following jurisdictions: the United States and Canada. Such ads must not target members under 18 years of age. <a href="https://www.linkedin.com/help/lms/answer/a1320991" data-linktype="external">Learn more.</a></td> </tr> <tr> <td>PROHIBITED_DATING_SERVICES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#dating-services" data-linktype="external">Prohibited dating services:</a> LinkedIn does not allow targeting of dating services to persons who are under 18. The dating services must not be sexually themed or engage in 'escort type' services where any person is compensated to participate in the date.</td> </tr> <tr> <td>PROHIBITED_POLITICAL_CONTENT</td> <td><a href="https://www.linkedin.com/legal/ads-policy#political" data-linktype="external">Political:</a> LinkedIn does not allow political advertisements including those ads advocating for or against a particular candidate, party, or ballot proposition or otherwise intended to influence an election outcome; ads fundraising for or by political candidates, parties, political action committees or similar organizations, or ballot propositions; and or ads exploiting a sensitive political issue even if the advertiser has no explicit political agenda.</td> </tr> <tr> <td>QUESTIONABLE_DOWNLOADS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#harm-to-LinkedIn-or-members" data-linktype="external">Questionable downloads:</a> LinkedIn does not allow ads and sites that promote automatic downloads without user consent, or downloads that might harm members.</td> </tr> <tr> <td>RESALE_OF_EVENT_TICKETS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#illegal-products-services-activities" data-linktype="external">Resale of event tickets:</a> LinkedIn does not allow ads for resale of event tickets.</td> </tr> <tr> <td>RINGTONES_AND_INAPPROPRIATE_VIDEO_GAMES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#offensive-to-good-taste" data-linktype="external">Ringtones and video games:</a> LinkedIn does not allow ads for downloadable ring tones and/or video games with inappropriate content, such as violence or adult content.</td> </tr> <tr> <td>SCAMS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Fraud and Deception:</a> Ads must not be fraudulent or deceptive.</td> </tr> <tr> <td>SOLICITATION_OF_FUNDS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#soliciting-funds" data-linktype="external">Solicitation of funds:</a> Ads that solicit funds are allowed only if they comply with applicable law and would qualify as tax deductible in the applicable jurisdiction. In the U.S., ads soliciting funds and donations must present tax exempt ID on the site.</td> </tr> <tr> <td>TEST_ADS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#incomplete-ad" data-linktype="external">Incomplete ad:</a> Your ad appears to be a test ad. Please resubmit when the ad is final.</td> </tr> <tr> <td>TEST_TAKING_SERVICES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fake-documents-and-related-services" data-linktype="external">Test taking services:</a> LinkedIn does not allow ads for test-taking services that offer to take tests for others, including but not limited to, academic tests, professional exams, certificates, etc.</td> </tr> <tr> <td>TOBACCO</td> <td><a href="https://www.linkedin.com/legal/ads-policy#tobacco-products" data-linktype="external">Tobacco products or cigarettes:</a> LinkedIn does not allow ads related to cigarettes, pipes, cigars, tobacco, e-cigarettes, and related products.</td> </tr> <tr> <td>UNCLEAR_BILLING_PRACTICES</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fair-and-legal-billing-practices" data-linktype="external">Unclear billing practices:</a> The products and services advertised in your ad should have fair and legal billing practices. Pricing and payment terms should be clear and easily findable and understandable by your customers prior to purchase, including explaining the rights to refunds and termination.</td> </tr> <tr> <td>UNDISCLOSED</td> <td>Type for hiding the internal rejection reasons caused by fraud content.</td> </tr> <tr> <td>UNSUPPORTED_COMPETITIVE_CLAIMS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#fraud-and-deception" data-linktype="external">Unsupported competitive claims:</a> Do not make deceptive or inaccurate claims about competitive products or services.</td> </tr> <tr> <td>UNSUPPORTED_LANGUAGE</td> <td><a href="https://www.linkedin.com/legal/ads-policy#supported-languages" data-linktype="external">Unsupported language:</a> LinkedIn does not currently support the language used in your creative.</td> </tr> <tr> <td>WEAPONS_AND_FIREWORKS</td> <td><a href="https://www.linkedin.com/legal/ads-policy#weapons-fireworks-other-violent-products-services" data-linktype="external">Weapons, firearms, ammunition, fireworks, or any other violent products or services:</a> LinkedIn does not allow ads related to weapons, firearms, ammunition, fireworks, stun guns, air rifles, pyrotechnical devices or other violent products or services.</td> </tr> </tbody> </table> <h2 id="error-messages-for-creatives-endpoint">Error Messages for Creatives Endpoint</h2> <table> <thead> <tr> <th>Code</th> <th>HTTP Status Code</th> <th>Error Message Template</th> </tr> </thead> <tbody> <tr> <td>ACTION_CONDITIONALLY_NOT_ALLOWED</td> <td>400</td> <td>Action {action} is forbidden if field {field} is not set to {value}</td> </tr> <tr> <td>BATCH_OPERATION_CANNOT_HAVE_MULTI_AD_FORMATS</td> <td>400</td> <td>Batch operation for multiple creatives of different formats in a campaign is not allowed</td> </tr> <tr> <td>BRAND_LIFT_POLL_INVALID_SHARE_MEDIA_CATEGORY</td> <td>400</td> <td>Share Media Category {value} is invalid as Brand Life Poll must specify URN_REFERENCE as share media category</td> </tr> <tr> <td>BRAND_LIFT_POLL_NON_DARK_POST_CREATIVE</td> <td>400</td> <td>Reference {reference} is invalid as Brand Lift Poll must be a dark post</td> </tr> <tr> <td>BUTTON_LABEL_REQUIRED_FOR_JOBS_POSTING</td> <td>400</td> <td>Button Label is required but missing for Jobs V2 creatives when included Ad Sizes is non-empty</td> </tr> <tr> <td>CAMPAIGN_EXCEEDING_CREATIVE_TYPE_LIMIT</td> <td>400</td> <td>Creative type {value} is invalid as all creatives within a campaign must be of the same type</td> </tr> <tr> <td>CANNOT_UPDATE_CANCELED_CREATIVE</td> <td>400</td> <td>Cannot update a canceled creative</td> </tr> <tr> <td>CAROUSEL_NON_ACTIVITY_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as Sponsored Update Carousel creatives must have Urn Relation type as ACTIVITY</td> </tr> <tr> <td>CONDITIONAL_IMMUTABLE_FIELD</td> <td>400</td> <td>{field1} cannot be updated if {field2} is set to {value2}</td> </tr> <tr> <td>CPC_CAMPAIGN_INVALID_AD_TYPE</td> <td>400</td> <td>CPC campaigns should only contain dynamic ads creatives such as follower ads and spotlight ads, Creative type {value} is not allowed</td> </tr> <tr> <td>CREATIVE_CONTENT_NOT_ASSOCIATED_WITH_LANDING_PAGE_URL</td> <td>400</td> <td>Creative content should be associated with a landing page url</td> </tr> <tr> <td>CREATIVE_CONTENT_NOT_ASSOCIATED_WITH_VALID_PIPELINE_BUILDER_URL</td> <td>400</td> <td>Creative content should be associated with a valid pipeline builder url</td> </tr> <tr> <td>CREATIVE_CONTENT_NOT_ASSOCIATED_WITH_VALID_PIPELINE_BUILDER_URL_OR_EVENT_PAGE_URL</td> <td>400</td> <td>Creative content should be associated with a valid pipeline builder url or event page url</td> </tr> <tr> <td>CREATIVE_NOT_ALLOWED_IN_CAMPAIGN</td> <td>400</td> <td>A creative is not allowed in this campaign</td> </tr> <tr> <td>CTA_REQUIRED_FOR_LEAD_GEN</td> <td>400</td> <td>Call to Action {field} is required but missing for Lead Gen Creative</td> </tr> <tr> <td>DATE_CONDITIONAL_TOO_EARLY</td> <td>400</td> <td>{field1} cannot be set to {value1}; it must be before {field2} {value2}</td> </tr> <tr> <td>DIRECT_SPONSORED_CONTENT_MISMATCH</td> <td>400</td> <td>Direct Sponsored Content is not created by the account</td> </tr> <tr> <td>DYNAMIC_ADS_MISSING_AD_FORMAT</td> <td>400</td> <td>Ad format is required but missing for non Job Dynamic Ad</td> </tr> <tr> <td>EMPTY_FIELD</td> <td>400</td> <td>{field} cannot be blank</td> </tr> <tr> <td>FAILED_TO_EXTRACT_COMPANY_ID</td> <td>400</td> <td>Failed to extract company id from company profile info {value}</td> </tr> <tr> <td>FAIL_TO_RETRIEVE_DIRECT_SPONSORED_CONTENT</td> <td>500</td> <td>Fail to retrieve Direct Sponsored Content. Reference {value}</td> </tr> <tr> <td>FAIL_TO_RETRIEVE_UPDATE</td> <td>500</td> <td>Fail to retrieve update. Could be a temporary failure. Reference {value}</td> </tr> <tr> <td>FIELD_CONDITIONALLY_NOT_ALLOWED</td> <td>400</td> <td>{field1} is not allowed when field {field2} is set to {value2}</td> </tr> <tr> <td>FIELD_NOT_ALLOWED_ON_CREATION</td> <td>400</td> <td>{field} is not allowed on creation</td> </tr> <tr> <td>FIELD_NOT_EDITABLE</td> <td>400</td> <td>{field} for {type} is not editable</td> </tr> <tr> <td>FIELD_VALUE_TOO_LONG</td> <td>400</td> <td>{field} length {length} cannot exceeded maximum {max} length</td> </tr> <tr> <td>FOLLOW_COMPANY_V2_NONEMPTY_CLICK_URI</td> <td>400</td> <td>Click URI cannot be set to {value} and must be empty as the actual destination is determined from landing page</td> </tr> <tr> <td>HEADLINE_REQUIRED_FOR_JOBS_POSTING</td> <td>400</td> <td>Headline is required but missing for Jobs V2 creatives when included Ad Sizes is non-empty</td> </tr> <tr> <td>IMAGE_URN_EXCLUSIVE_WITH_IMAGE_ID</td> <td>400</td> <td>Image ID and image URN are mutually exclusive</td> </tr> <tr> <td>IMMUTABLE_FIELD</td> <td>400</td> <td>{field} cannot be updated</td> </tr> <tr> <td>INVALID_CLICK_URI</td> <td>400</td> <td>Unsupported click uri - {uri}. The scheme must be one of: {validSchemes} and the URI must be absolute</td> </tr> <tr> <td>INVALID_HREF</td> <td>400</td> <td>Click Uri {value} is invalid as it should be 500 characters or less and formatted with preceding http or https</td> </tr> <tr> <td>INVALID_PARENT_CAMPAIGN_TYPE</td> <td>400</td> <td>Invalid parent campaign type {type1} for this creative type {type2}</td> </tr> <tr> <td>INVALID_URN_TYPE</td> <td>400</td> <td>{field} value {value} must be a {urnType} URN</td> </tr> <tr> <td>INVALID_VALUE_NOT_ACTIVE</td> <td>400</td> <td>{field} value {value} is not active</td> </tr> <tr> <td>INVALID_VALUE_NOT_EXIST</td> <td>400</td> <td>{field} value {value} does not exist</td> </tr> <tr> <td>JOBS_CREATIVE_INVALID_AD_FORMAT</td> <td>400</td> <td>Ad format {value} is invalid as Jobs creative only allows work-with-us and picture-yourself ad formats</td> </tr> <tr> <td>JOB_POSTING_CANNOT_BE_FETCHED</td> <td>500</td> <td>Cannot fetch Job Posting</td> </tr> <tr> <td>JOB_STATE_NOT_LISTED_BUT_CREATIVE_IS_ACTIVE</td> <td>400</td> <td>For a job posting creative to be ACTIVE, it must have a job state of LISTED</td> </tr> <tr> <td>MISSING_FIELD_IN_VALUE</td> <td>400</td> <td>{field} is required but missing in {value}</td> </tr> <tr> <td>ORGANIC_STORY_UGC_INVALID_CTA_LABEL</td> <td>400</td> <td>Organic story landingPageTitle must contain a Call To Action label of type APPLY, DOWNLOAD, VIEW_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE, REGISTER, JOIN, ATTEND, REQUEST_DEMO, SEE_MORE for story to be sponsorable, label {value} is not allowed</td> </tr> <tr> <td>PARENT_URN_KEY_NOT_FOUND</td> <td>400</td> <td>Invalid parent URN {urn} not found</td> </tr> <tr> <td>POLI_LINK_FOLLOW_TEXT_MISMATCH</td> <td>400</td> <td>The href poli link cannot be set to {hrefValue} because the follow text value is {followTextValue}. The href value should have the format - {hrefTemplate}</td> </tr> <tr> <td>POLL_STICKERS_NOT_SUPPORTED_FOR_STORIES</td> <td>400</td> <td>Sponsored story cannot have poll sticker overlay</td> </tr> <tr> <td>REFERENCED_EVENT_CANNOT_HAVE_CANCELED_STATUS</td> <td>400</td> <td>The Creative refers to a UGC which references an Event {value} with CANCELED status</td> </tr> <tr> <td>REFERENCED_EVENT_END_TIME_PASSED</td> <td>400</td> <td>The Creative refers to a UGC which references an Event {value} that has already ended</td> </tr> <tr> <td>REFERENCED_EVENT_ORGANIZER_MISMATCH</td> <td>400</td> <td>The Author of UGC referenced in the Creative does not match with the Organizer of the Event {value} referenced in the UGC</td> </tr> <tr> <td>REFERENCE_MEDIA_CATEGORY_AND_CAMPAIGN_FORMAT_MISMATCH</td> <td>400</td> <td>The media category of reference {category} does not match the parent campaign format {format}</td> </tr> <tr> <td>REFERENCE_NOT_ALLOWED_FOR_TEXT_AD_CREATIVE</td> <td>400</td> <td>Reference is not allowed for text ad creative</td> </tr> <tr> <td>SINMAIL_INVALID_INMAIL_CONTENT</td> <td>400</td> <td>InMail content cannot be set to {value} for creative {key} because it does not exist</td> </tr> <tr> <td>SPONSORED_JOB_POSTING_NON_UGC_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as Sponsored job posting cannot be assigned with non UGC URN reference</td> </tr> <tr> <td>SPONSORED_UPDATE_JOB_POSTING_NON_JOB_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as Sponsored update job posting cannot be assigned with non JOB reference</td> </tr> <tr> <td>SPONSORED_UPDATE_JOB_POSTING_NON_SHARING_CONTENT</td> <td>400</td> <td>Sponsored update job posting creative cannot be attributed as non-shareable</td> </tr> <tr> <td>SPONSORED_VIDEO_NON_SHAREABLE_CONTENT</td> <td>400</td> <td>Sponsored Video creative cannot be attributed as non-shareable</td> </tr> <tr> <td>SPONSORED_VIDEO_NON_UGC_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as Sponsored Video creatives must have Urn Relation type as UGC</td> </tr> <tr> <td>SPONSORED_VIDEO_NON_VIDEO_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as Sponsored Video creative cannot be assigned with non VIDEO reference</td> </tr> <tr> <td>SPOTLIGHT_NOT_ASSOCIATED_WITH_VALID_PIPELINE_BUILDER_URL</td> <td>400</td> <td>Creative {field} should have a valid pipeline builder url</td> </tr> <tr> <td>SSU_NON_ACTIVITY_REFERENCE</td> <td>400</td> <td>Reference {value} is invalid as SSU creatives must have reference type as ACTIVITY except for IMAGE Story Items</td> </tr> <tr> <td>TRANSITION_CONDITIONALLY_NOT_ALLOWED</td> <td>400</td> <td>{field1} transition is not allowed from {beforeValue} to {afterValue} if {field2} is not set to {value2}</td> </tr> <tr> <td>TRANSITION_NOT_ALLOWED</td> <td>400</td> <td>{field} transition is not allowed from {beforeValue} to {afterValue}</td> </tr> <tr> <td>UGC_EXCEEDING_IMAGE_LIMIT</td> <td>400</td> <td>Media cannot be set to {value} as Image UGCs should have exactly one image to be sponsor</td> </tr> <tr> <td>UGC_INVALID_FEED_DISTRIBUTION</td> <td>400</td> <td>Feed distribution {value} is invalid as UGC content should set NONE feed distribution for dark post, MAIN_FEED for organic posts, and CONTAINER_ONLY for container posts</td> </tr> <tr> <td>UGC_INVALID_SHARE_MEDIA_CATEGORY</td> <td>400</td> <td>UGC only allows share media category of type ARTICLE, CAROUSEL, IMAGE, RICH, VIDEO, JOB, DOCUMENT and URN, Share Media Category {value} is not permitted</td> </tr> <tr> <td>UGC_INVALID_VISIBILITY_SETTING</td> <td>400</td> <td>This UGC reference {value} ad needs to be public to be sponsored, current visibility is set to {visibility}</td> </tr> <tr> <td>UGC_NON_SHARING_CONTENT_ERROR</td> <td>400</td> <td>Reference {value} is invalid as UGC content cannot be attributed as non-shareable</td> </tr> <tr> <td>UGC_RESHARE_CANNOT_BE_SPONSORED</td> <td>400</td> <td>Reference {value} cannot be sponsored as sponsoring a reshared UGC post is not allowed</td> </tr> <tr> <td>UNAUTHORIZED_ACCESS_TO_CHANGE_THE_REVIEW</td> <td>403</td> <td>Unauthorized access to change the review</td> </tr> <tr> <td>UNSAFE_HREF</td> <td>400</td> <td>Click Uri {value} contains either malicious content or poses safety concerns</td> </tr> <tr> <td>VIDEO_INVALID_HEIGHT</td> <td>400</td> <td>Video height value {value} must be between {minHeight} and {maxHeight}</td> </tr> <tr> <td>VIDEO_LENGTH_TOO_LONG</td> <td>400</td> <td>Video length value {value} seconds cannot be higher than {maxLength} seconds</td> </tr> <tr> <td>VIDEO_LENGTH_TOO_SHORT</td> <td>400</td> <td>Video length value {value} seconds cannot be lower than {minLength} seconds</td> </tr> <tr> <td>VIDEO_UNSUPPORTED_ASPECT</td> <td>400</td> <td>Video must have aspect ratio value {value} between {minRatio} and {maxRatio}</td> </tr> <tr> <td>VIDEO_UNSUPPORTED_WIDTH</td> <td>400</td> <td>Video width value {value} must be between {minWidth} and {maxWidth}</td> </tr> <tr> <td>WHITEPAPER_DOWNLOAD_CAMPAIGN_AD_FORM_MISMATCH</td> <td>400</td> <td>Campaign type and ad form type have to be both Whitepaper Download or both</td> </tr> <tr> <td>CTV_VIDEO_UNSUPPORTED_BITRATE</td> <td>400</td> <td>CTV video bitrate value {value} must be greater than {minBitRate}. Note: Applicable only from versions 202408 and above.</td> </tr> </tbody> </table> </div><div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div><div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div> <div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div> <!-- </content> --> </main><!-- recommendations section --><!-- end recommendations section --> <!-- feedback section --><section id="site-user-feedback-footer" class="font-size-sm margin-top-md" data-test-id="site-user-feedback-footer" data-bi-name="site-feedback-section"> <hr class="hr" /> <h2 id="feedback" class="title is-3">Feedback</h2> <div class="display-flex flex-wrap-wrap align-items-center"> <p class="font-weight-semibold margin-xxs margin-left-none">Was this page helpful?</p> <div class="buttons"> <button class="thumb-rating-button like button button-primary button-sm" data-test-id="footer-rating-yes" data-binary-rating-response="rating-yes" type="button" title="This article is helpful" data-bi-name="button-rating-yes" aria-pressed="false" > <span class="icon" aria-hidden="true"> <span class="docon docon-like"></span> </span> <span>Yes</span> </button> <button class="thumb-rating-button dislike button button-primary button-sm" data-test-id="footer-rating-no" data-binary-rating-response="rating-no" type="button" title="This article is not helpful" data-bi-name="button-rating-no" aria-pressed="false" > <span class="icon" aria-hidden="true"> <span class="docon docon-dislike"></span> </span> <span>No</span> </button> </div> </div><div class="display-flex flex-wrap-wrap margin-top-xxs"><div> <a data-bi-name="provide-feedback-cta" class="has-external-link-indicator" href="https://linkedin.zendesk.com/hc/en-us" data-bi-name="product-feedback" > <span>Provide product feedback</span> </a></div></div> </section><!-- end feedback section --> <!-- feedback report section --><!-- end feedback report section --><aside id="ms--additional-resources-mobile" aria-label="Additional resources" class="display-none-desktop display-none-print" > <hr class="hr" hidden /> <h2 id="ms--additional-resources-mobile-heading" class="title is-3" hidden>Additional resources</h2> <section id="right-rail-recommendations-mobile" data-bi-name="recommendations" hidden></section> <section id="right-rail-training-mobile" data-bi-name="learning-resources-card" hidden></section> <section id="right-rail-events-mobile" data-bi-name="events-card" hidden></section> <section id="right-rail-qna-mobile" data-bi-name="qna-link-card" hidden></section> </aside><div class="border-top is-visible-interactive has-default-focus margin-top-sm "><footer id="footer-interactive" data-bi-name="footer" class="footer-layout"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a data-mscc-ic="false" class="locale-selector-link button button-sm button-clear flex-shrink-0" href="#" data-bi-name="select-locale"> <span class="icon" aria-hidden="true"> <span class="docon docon-world"></span> </span> <span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden> <a href="https://aka.ms/yourcaliforniaprivacychoices" class="button button-sm button-clear flex-shrink-0" data-mscc-ic="false" data-bi-name="your-privacy-choices" > <svg role="img" aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43" focusable="false" > <title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path> </svg> <span>Your Privacy Choices</span> </a> </div> <div class="flex-shrink-0"> <div class="dropdown has-caret-up"> <button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger" aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme"> <span class="icon"> <span class="docon docon-sun" aria-hidden="true"></span> </span> <span>Theme</span> <span class="icon expanded-indicator" aria-hidden="true"> <span class="docon docon-chevron-down-light"></span> </span> </button> <div class="dropdown-menu" id="theme-menu-interactive" role="menu"> <ul class="theme-selector padding-xxs" role="none"> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="light"> <span class="theme-light margin-right-xxs"> <span class="theme-selector-icon border display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>Light</span> </button> </li> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="dark"> <span class="theme-dark margin-right-xxs"> <span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>Dark</span> </button> </li> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="high-contrast"> <span class="theme-high-contrast margin-right-xxs"> <span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>High contrast</span> </button> </li> </ul> </div> </div> </div> </div> <ul class="links" data-bi-name="footerlinks"> <li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li> <li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li> <li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>&copy; Microsoft 2024</li> </ul> </footer></div></div><div id="ms--additional-resources" class="right-container column is-4-desktop display-none display-block-desktop" data-bi-name="pageactions" role="complementary" aria-label="Additional resources" > <div id="affixed-right-container" class="margin-top-sm-tablet" data-bi-name="right-column"> <h2 id="ms--additional-resources-heading" class="title is-6 margin-top-md" hidden>Additional resources</h2> <section id="right-rail-events" data-bi-name="events-card" hidden></section> <section id="right-rail-training" data-bi-name="learning-resources-card" hidden></section> <section id="right-rail-recommendations" data-bi-name="recommendations" hidden></section> <nav id="side-doc-outline" class="doc-outline" data-bi-name="intopic toc" aria-label="In this article"> <h3>In this article</h3> </nav> <section id="right-rail-qna" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section> </div> </div></div> <!--end of div.columns --> </section> <!--end of .primary-holder --> <!-- interactive container --> <aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark "> </aside> <!-- end of interactive container --> </div> </div> <!--end of .mainContainer --> <section class="border-top has-default-focus is-hidden-interactive margin-top-sm "><footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a data-mscc-ic="false" class="locale-selector-link button button-sm button-clear flex-shrink-0" href="#" data-bi-name="select-locale"> <span class="icon" aria-hidden="true"> <span class="docon docon-world"></span> </span> <span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden> <a href="https://aka.ms/yourcaliforniaprivacychoices" class="button button-sm button-clear flex-shrink-0" data-mscc-ic="false" data-bi-name="your-privacy-choices" > <svg role="img" aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43" focusable="false" > <title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path> </svg> <span>Your Privacy Choices</span> </a> </div> <div class="flex-shrink-0"> <div class="dropdown has-caret-up"> <button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger" aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme"> <span class="icon"> <span class="docon docon-sun" aria-hidden="true"></span> </span> <span>Theme</span> <span class="icon expanded-indicator" aria-hidden="true"> <span class="docon docon-chevron-down-light"></span> </span> </button> <div class="dropdown-menu" id="theme-menu" role="menu"> <ul class="theme-selector padding-xxs" role="none"> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="light"> <span class="theme-light margin-right-xxs"> <span class="theme-selector-icon border display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>Light</span> </button> </li> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="dark"> <span class="theme-dark margin-right-xxs"> <span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>Dark</span> </button> </li> <li class="theme display-block" role="menuitem"> <button class="button button-clear button-sm theme-control button-block justify-content-flex-start" data-theme-to="high-contrast"> <span class="theme-high-contrast margin-right-xxs"> <span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true"> <svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14"> <rect width="22" height="14" class="has-fill-body-background" /> <rect x="5" y="5" width="12" height="4" class="has-fill-secondary" /> <rect x="5" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="8" y="2" width="2" height="1" class="has-fill-secondary" /> <rect x="11" y="2" width="3" height="1" class="has-fill-secondary" /> <rect x="1" y="1" width="2" height="2" class="has-fill-secondary" /> <rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" /> <rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" /> </svg> </span> </span> <span>High contrast</span> </button> </li> </ul> </div> </div> </div> </div> <ul class="links" data-bi-name="footerlinks"> <li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li> <li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li> <li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>&copy; Microsoft 2024</li> </ul> </footer> </section> <div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10