Create and Manage Campaigns

Campaigns define the ad schedule and budget (daily/total.) The campaign can be bound to a specific start and end date or run continuously until the budget is spent.

Campaigns can be targeted for a specific selection of members (target audience) based on categories such as job title, job function, seniority, etc.

Limitations

  • AD ACCOUNTS
    • Limited to 5,000 campaigns (regardless of campaign status.)
    • Maximum of 1,000 concurrent campaigns in ACTIVE status at any given time.
  • CAMPAIGNS
    • Maximum of 15 active creatives and 85 inactive creatives.
    • Active until it reaches its end time or gets deleted.
    • Paused campaigns are considered active until their designated end times.
  • CREATIVES
    • Creatives must match the ad format selected during campaign creation.
    • If no Ad format is set, it will be set by the first creative created under that campaign.
      • Dynamic, Carousel, and Video Ad Campaigns must have their format set during creation.

Permissions

There are two conditions for successful calls: (1) Scope permissions to rw_ads and/or r_ads, and (2) the user assigning permission holding one of the following roles in the Ad Account.

Scope permissions:

  • rw_ads (Read/Write)
  • r_ads (Read-Only)

Ad Account Roles:

  • ACCOUNT_BILLING_ADMIN
  • ACCOUNT_MANAGER
  • CAMPAIGN_MANAGER`
  • CREATIVE_MANAGER
  • VIEWER (Read-Only, even with rw_ads scope)

For more information on Ad Account roles and permissions:

Campaign Types

There are four ad placement, or Campaign Types you can run on LinkedIn.

Campaign Type Description Best Practices
TEXT_AD Text ads include a headline, brief text, and an image. They may be placed at the top of the page or on the right rail of a variety of LinkedIn desktop pages. Text Ads
SPONSORED_UPDATES
Sponsored Content: When you create a Sponsored Content campaign in Campaign Manager, you’ll have the option to Browse existing content to select ads for the campaign. Sponsored Updates
SPONSORED_INMAILS Sponsored Messaging: These ads are displayed via desktop and mobile when members are active anywhere on LinkedIn. Sponsored Inmails
DYNAMIC Personalized ads that are automatically populated with members' profile photo and other data dynamically pulled from their LinkedIn profiles. APIs are available for self-service campaign formats such as Follower Ads, Spotlight Ads, and Jobs Ads. Dynamic ads
*CONTENT *This format is only available for managed accounts and cannot be managed through the API or Campaign Manager. Learn more

Learn more: Campaign Objective API Mapping

Direct Sponsored Content

Direct Sponsored Content (DSC) is a sponsored update that does not appear on the organization page. It allows your organization to personalize, test, and refine its messages to improve content quality for a targeted audience without cluttering the organization page.

Direct Sponsored Content can be created by:

Campaign Types Schema

Field Type Description Required
account SponsoredAccountUrn URN identifying the advertising account associated with the campaign. This value is immutable once set. For example, urn:li:sponsoredAccount:{id} True
associatedEntity URN An URN identifying the intended beneficiary of the advertising campaign such as a specific company or member false unless campaign will use Sponsored Content, Dynamic Ads, or Lead Gen Forms
audienceExpansionEnabled boolean, default="false" Enable Audience Expansion for the campaign provides query expansion for certain targeting criteria. false
campaignGroup Sponsored-CampaignGroup URN URN identifying the campaign group associated with the campaign. The campaign group URN must be specified for campaign creation starting October 30, 2020. True
costType CostType
  • CPM- Cost per thousand advertising impressions. If type=SPONSORED_INMAILS; cost per send(CPS) is measured as CPM x 1000.
  • CPC- Cost per individual click on the associated link.
  • CPV- Cost per view for video ads.
True
creativeSelection CampaignCreativeSelection, default="OPTIMIZED"
  • ROUND_ROBIN - Rotate through available creatives to serve them as evenly as possible.
  • OPTIMIZED - Bias selection taking into account such as expected performance. Not available for Message and Conversation Ads (type=SPONSORED_INMAILS).
    false
    dailyBudget.amount BigDecimal Maximum amount to spend per day UTC. The amount of money as a real number string. true, unless totalBudgetis provided.
    dailyBudget.currencyCode Currency ISO currency code. The currency must match that of the parent account. true, unlesstotalBudgetis provided.
    locale.country string Locale of the campaign. An uppercase two-letter country code as defined by ISO-3166. The country and language combination must match one of the supported locales True
    locale.language string Locale of the campaign. A lowercase two-letter language code as defined by ISO-639. The country and language combination must match one of the supported locales True
    name string The name of the campaign; primarily used to make it easier to reference a campaign and to recall its purpose. True
    objectiveType string Campaign Objective type values. Click here for Campaign Objective descriptions
    • BRAND_AWARENESS
    • ENGAGEMENT
    • JOB_APPLICANTS
    • LEAD_GENERATION
    • WEBSITE_CONVERSIONS
    • WEBSITE_VISITS
    • VIDEO_VIEWS
    false
    offsitePreferences OffsitePreferences Offsite preferences that an advertiser specifies for this campaign. An example OffsitePreference is an object that contains App Categories, App Store URLs, Web Domain Names for which this campaign should be included/excluded. See the OffsitePreferences object for more details and examples. false
    runSchedule.start long Scheduled date range to run associated creatives. The start date must be non-null. Represents the inclusive (greater than or equal to) value in which to start the range.
    runSchedule.end long Scheduled date range to run associated creatives. The start date must be non-null. Represents the exclusive (strictly less than) value in which to end the range. This field is optional. An unset field indicates an open range; for example, if start is 1455309628000 (Fri, 12 Feb 2016 20:40:28 GMT), and end is not set, it means everything at, or after 1455309628000. false
    targeting.excludedTargetingFacets TargetingFacets Deprecated. Please use targetingCriteria. Targeting criteria for the associated creatives; may include a mix of inclusive and exclusive criteria. Specifies targeting criteria that the member should not match. True, unlesstargetingCriteriais provided.
    targeting.includedTargetingFacets TargetingFacets Deprecated. Please use targetingCriteria. Targeting criteria for the associated creatives; may include a mix of inclusive and exclusive criteria. Specifies targeting criteria that the member should match. true, unlesstargetingCriteriais provided.
    targetingCriteria targetingCriteria Specifies targeting criteria that the member should match. This is a more advanced boolean expression than the previoustargeting field. It provides a generic AND/OR construct to include and exclude different targeting facets when defining audiences for campaigns. true, unless targetingprovided.
    totalBudget.amount BigDecimal Maximum amount to spend over the life of the campaign. The amount of money as a real number string. Deprecated for campaigns not using lifetime pacing. true, unlessdailyBudgetis provided.
    totalBudget.currencyCode Currency ISO currency code. The currency must match that of the account. Deprecated for campaigns not using lifetime pacing. true, unlessdailyBudgetis provided.
    type CampaignType
    • TEXT_AD- Text-based ads that show up in the right column or top of the page on LinkedIn.
    • SPONSORED_UPDATES- Native ads that promote a company's content updates in the LinkedIn feed.
    • SPONSORED_INMAILS- Personalized messages with a call-to-action button delivered to a LinkedIn's member inbox.
    • DYNAMIC- Ads that are dynamically personalized.
    True
    unitCost.amount BigDecimal, default=0 Amount to bid (for manual bidding) or amount which is the target cost (for target cost bidding) per click, impression, or other event depending on the pricing model. The amount of money as a real number string. The amount should be non-negative if the bidding strategy is manual bidding or target cost bidding. The default is 0 with the currency code set to match that of the associated account. True
    unitCost.currencyCode Currency
    default is set to match the associated account
    Amount to bid per click, impression, or other event depending on the pricing model. The default is 0 with the currency code set to match that of the associated account. ISO currency code. false
    versionTag string Each entity has a version tag associated with it. The version tag is initiated to 1 when the entity is created. Each single update to the entity increases its version tag by 1. false
    status string
    • ACTIVE- Denotes that the campaign is fully servable.
    • PAUSED- Denotes that the campaign meets all requirements to be served, but temporarily should not be.
    • ARCHIVED- Denotes that the campaign is presently inactive, and should mostly be hidden in the UI until un-archived.
    • COMPLETED- Denotes that the campaign has reached a specified budgetary or chronological limit.
    • CANCELED- Denotes that the campaign has been permanently canceled, such as when an advertising account is permanently closed.
    • DRAFT- Denotes that the campaign is still being edited and not eligible for serving. Some validation will be postponed until the campaign is activated.
    True
    optimizationTargetType default="NONE" Determines how this campaign is optimized for spending. If this is not set, there is no optimization. Refer to the documentation here. false
    format campaignFormat The ad format on campaign level.
    Read more: Ad Formats
    false
    pacingStrategy string Identifies the pacing option used for the campaign.
    Optional and editable only on create. Possible values:
    • LIFETIME- Lifetime pacing that optimizes campaign budget delivery throughout campaign's lifetime.
    false
    targeting n/a Thetargetingobject is deprecated. Campaigns should use the targetingCriteria object going forward. See the Migration Guide for targetingCriteria for more information.
    test boolean, default="false" Flag showing whether this campaign is a test campaign, i.e., belongs to a test account. This is a read-only and immutable field that is set implicitly during creation based on whether the account is a Test Account or not. false
    servingStatuses strings Array of enums that determine whether or not a campaign may be served; unlike 'status', which is user-managed, the values are controlled by the service. This is a read-only field. Possible values are:
    • RUNNABLE Campaign is eligible for serving.
    • STOPPED Campaign is currently not servable for reasons other than billing information, budgetary constraints, or termination dates. For instance, an campaign will be STOPPED if it has been PAUSED by the user.
    • ACCOUNT_TOTAL_BUDGET_HOLD Parent account total budget has been reached.
    • ACCOUNT_END_DATE_HOLD Parent account end date has been reached.
    • CAMPAIGN_START_DATE_HOLD Campaign start date is in the future.
    • CAMPAIGN_END_DATE_HOLD Campaign end date has been reached.
    • CAMPAIGN_TOTAL_BUDGET_HOLD Campaign total budget has been reached.
    • CAMPAIGN_AUDIENCE_COUNT_HOLD Campaign is on hold because it has an audience count lower than the threshold.
    • CAMPAIGN_GROUP_START_DATE_HOLD Campaign group start date is in the future.
    • CAMPAIGN_GROUP_END_DATE_HOLD Campaign Group end date is in the past.
    • CAMPAIGN_GROUP_TOTAL_BUDGET_HOLD Campaign group total budget has been reached.
    • CAMPAIGN_GROUP_STATUS_HOLD Campaign group status is on hold.
    • ACCOUNT_SERVING_HOLD Parent account is on hold and not eligible for serving.
    false

    targeting Object

    The targeting object is deprecated. Campaigns should use the targetingCriteria object going forward. See the Migration Guide for targetingCriteria for more information.

    Once a campaign is using the preferred targetingCriteria format, it cannot be changed back to the targeting format. All further targeting updates must use the targetingCriteria format.

    Offsite Preferences

    Field Name Type Description
    iabCategories optional IABCategories The set of IAB (Interactive Advertising Bureau) categories that this campaign may be served/excluded from, based on where the ad request is from. Mobile Apps, Mobile Web and Desktop Inventory are all classified into one or more of these categories. For more details, refer to LinkedIn Audience Network, Manage Audience Restrictions, andOpenRTB API Specification Version 2.3.
    publisherRestrictionFiles optional PublisherRestrictionFiles This field contains one or more files that have been uploaded by an advertiser. Each file contains a list of web domains/app store URLs. The advertiser can choose if they want to exclude this particular campaign from serving on those apps/websites.

    IAB Categories

    Field Name Type Description
    exclude IABCategoryUrn[], default="[]" Excluded list of IAB categories. For example, if an advertiser specifies {urn:li:iabCategory:IAB20, urn:li:iabCategory:IAB22}, this would block this campaign from serving on Travel and Shopping related apps/websites. Note that exclude takes precedence over include in case of conflict.
    include IABCategoryUrn[], default="[]" Included list of IAB categories. For example, if an advertiser specifies {urn:li:iabCategory:IAB5, urn:li:iabCategory:IAB12}, this would serve this campaign on Education and News related apps/websites only. Note that exclude takes precedence over include in case of conflict.

    Publisher Restriction Files

    Field Name Type Description
    exclude AdPublisherFileUrn[], default="[]" List of publisher file IDs to whom ad requests may NOT be served. These file IDs are references to the file that contains a list of web sites/app store URLs where an ad request may not be served. For example: urn:li:adPublisherFile:{fileID}, urn:li:adPublisherFile:{fileID2}

    Create a Campaign

    POST https://api.linkedin.com/v2/adCampaignsV2
    
    {
        "account": "urn:li:sponsoredAccount:518121035",
        "campaignGroup": "urn:li:sponsoredCampaignGroup:635137195",
        "audienceExpansionEnabled": false,
        "costType": "CPC",
        "creativeSelection": "OPTIMIZED",
        "dailyBudget": {
            "amount": "18",
            "currencyCode": "USD"
        },
        "locale": {
            "country": "US",
            "language": "en"
        },
        "name": "Campaign Sponsored update B",
        "offsiteDeliveryEnabled": false,
        "runSchedule": {
            "end": 9876543210123,
            "start": 1234567890987
        },
        "targetingCriteria": {
            "include": {
                "and": [
                    {
                        "or": {
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:103644278"
                            ]
                        }
                    }
                ]
            }
        },
        "type": "SPONSORED_UPDATES",
        "unitCost": {
            "amount": "15",
            "currencyCode": "USD"
        },
        "status": "ACTIVE"
    }
    

    Budgeting

    The following options are available for budgeting at the campaign level:

    • dailyBudget - Campaigns run until the daily ad spend for the campaign has reached the daily budget limit. At midnight UTC, the daily budget resets and the campaign continues to run the next day.
    • totalBudget - Campaigns run until the total ad spend for the life of the campaign has reached the total budget limit. Deprecated for campaigns not using lifetime pacing.

    If both daily budget and total budget are set for the campaign, the campaign runs until the ad spend has either reached daily spend limit and/or the total spend limit.

    Dynamic Ads campaigns must set both daily and total budgets.

    Targeting Discrimination Notice

    Applications utilizing LinkedIn's targeting capabilities are required to display a notice in their user interface notifying advertisers that they cannot use LinkedIn to discriminate against members based on personal characteristics. The notice should include the following text:

    LinkedIn tools may not be used to discriminate based on personal characteristics like gender, age, race, or ethnicity. Learn more.

    Lifetime Pacing

    Lifetime Pacing is a new budget pacing product that provides advertisers a new budget option that enables running a campaign by spending a projected budget based on the predicted spend curve through the campaign's lifetime. Creating a spending strategy in this manner, optimizes advertiser return on investment (ROI) value.

    As an example, advertisers can simply set a lifetime budget of $10,000, and run a campaign for one month. With Lifetime Pacing, LinkedIn's delivery system can figure out how to spend the budget efficiently based on the supply curve through one month. To illustrate this efficiency, the campaign would spend less on a Saturday when fewer LinkedIn member use the site, but more on a Monday when more members are viewing the site.

    While the lifetime budget is a new spending option, we still allow advertisers to use other budget options including the "set daily budget alone" or "set both daily budget and lifetime budget" to accommodate their different needs.

    Benefits of Lifetime Pacing

    For all LinkedIn advertisers, Lifetime Pacing delivers the lifetime budget throughout the campaign lifetime to improve advertiser ROI, stabilize the cost per result value, and simplify campaign creation and optimization by leveraging advanced pacing, forecasting, and machine learning techniques.

    To enable Lifetime Pacing, set the pacingStrategy to LIFETIME.

    The four strategies are:

    • Use a daily budget with a continuous schedule.
    • Use a daily budget with a fixed schedule.
    • Use a total budget with a fixed schedule.
    • Use a daily budget and a total budget with continuous schedule.

    Use a Daily Budget with a Continuous Schedule

    To use this option, set dailyBudget and runSchedule.start. By using a daily budget with a continuous schedule, the advantage is you have great spend control while running a non-stop campaign. In this approach, LinkedIn may charge you up to 150% of your daily budget if there’re great opportunities in the auction for you on a single day.

    Use a Daily Budget with a Fixed Schedule

    To use this option, set dailyBudget, runSchedule.start and runSchedule.end. By using a daily budget with a fixed schedule that has an explicit end date, the advantage is Lifetime Pacing will pace your lifetime budget (daily budget days of the campaign flight time) to get the optimal ROI for you. In this approach, LinkedIn may charge you up to 150% of your daily budget if there’re great opportunities in the auction for you on a single day. Also, this approach spends in total no more than an amount equal to the following value: (the total number of days of the campaign flight time the daily budget).

    Use a Total Budget with a Fixed Schedule

    To use this option, set totalBudget, runSchedule.start and runSchedule.end. By using a total budget with a fixed schedule that has a specific end date for spending, the advantage is Lifetime Pacing will pace your lifetime budget to obtain optimal results. In this approach, you spend no more than the full budget for the lifetime of the campaign. LinkedIn applies the budget optimally through the campaign lifetime up to the specified final day to maximize return on investment.

    Use a Daily Budget and a Total Budget with a Continuous Schedule

    To use this option, set dailyBudget, totalBudget and runSchedule.start. By using a daily budget and a total budget with a continuous schedule without an end date, the advantage is that you have the maximum control of your spending for both the daily and lifetime budget approaches.

    In this approach, LinkedIn may charge you up to 150% of your daily budget if there are strong opportunities in the auction for you on a given day. Also, this approach spends in total no more than the total budget value you specify. The campaign stops as soon as we deplete your budget.

    Optimization of Campaigns

    optimizationTargetType is used to optimize spending for a campaign. Depending on what value is populated in this field, the campaign will use either auto, manual, or target cost bidding.

    For auto-bidding campaigns created using legacy Objectives, the costType is always CPM. The unitCost defaults to 0. Note that there are no validations and can be set to any arbitrary high/low value.

    If optimizationTargetType is switched to a manual bidding or target cost bidding type, unitCost should be set to a non-negative value appropriate to the dailyBudget. For manual bidding or target cost bidding type, if unitCost is 0, the campaign will not deliver.

    Warning

    Failure to set the unitCost correctly can lead to unexpected expenses.
    We highly recommend updating both unitCost and optimizationTargetType when switching.

    If you want to optimize the campaign for spending, you must set the OptimizationTargetType to one of the following target types.

    Setting the optimizationTargetType to any of the following will keep a campaign in manual bidding mode:

    optimizationTargetType Description
    NONE No optimization for this campaign.
    ENHANCED_CONVERSION This is used for conversion tracking based bid adjustment. For example, if one campaign has higher conversion rate for a particular member, we will potentially bid higher for that specific member, vice versa.

    Setting one of the following options for optimizationTargetType activates auto-bidding for the campaign:

    optimizationTargetType Description
    MAX_IMPRESSION Optimization goal is to maximize the campaign's number of impressions and exhaust the daily budget without advertiser specifying bid.
    MAX_CLICK Optimization goal is to maximize the campaign's number of clicks and exhaust the daily budget without advertiser specifying bid.
    MAX_CONVERSION Optimization goal is to maximize the campaign's number of conversions and exhaust the daily budget without advertiser specifying bid.
    MAX_VIDEO_VIEW Optimization goal is to maximize the campaign's number of video views and exhaust the daily budget without advertiser specifying bid.
    MAX_LEAD Optimization goal is to maximize the campaign's number of leads and exhaust the daily budget without advertiser specifying bid.
    MAX_REACH Goal is to optimize towards the number of unique member accounts that are shown your ads and exhaust the daily budget without advertiser specifying bid.

    A third model exists for bidding, target cost bidding. In this approach, advertisers are required to set a target cost per event, or the desired average cost for each action. An event can be an impression, click, or a video view. LinkedIn maximizes the number of actions while maintaining the lifetime average cost per result around the target cost the advertiser specifies. LinkedIn provides a cost deviation range around the target cost that can be adjusted.

    Setting one of the following options for optimizationTargetType activates target cost bidding for the campaign:

    optimizationTargetType Cost Type Description
    TARGET_COST_PER_CLICK CPC Optimization goal is to maintain a specified average bidding amount for each click by a user.
    TARGET_COST_PER_IMPRESSION CPM Optimization goal is to maintain a specified average bidding amount for each view, or impression, of an event by a user.
    TARGET_COST_PER_VIDEO_VIEW CPV Optimization goal is to maintain a specified average bidding amount for each view, or impression, of a video event by a user.

    Optimization based on ObjectiveType

    LinkedIn delivers better results by mapping existing optimizations against a new, more complete set of objectives

    • Bidding for objectives: Bid types, including automated bidding and maximum CPC bids, are aligned to your objective to bid more aggressively against audience more likely to take the action based on that objective.

    • Creative optimization for objectives: We optimize ads/creatives in rotation that better deliver on the advertiser’s objective.

    The benefit is a more complete, end-to-end objective-based experience with streamlined bidding options that match the objectives.

    We have 3 types of existing optimizations which will now be mapped to their corresponding objectives

    • Automated bidding based on objectives
    • Maximum CPC bidding based on objectives
    • Optimized ad rotation based on objectives
    Objective Group Objective Autobidding Maximum CPC Bid Maximum CPM Bid Maximum CPV Bid
    AwarenessBrand awarenessOptimizes for reach or impressionsN/AOptimizes for reach or impressions N/A
    ConsiderationWebsite visitsOptimizes for destination URL clicksOptimizes for destination URL clicksOptimizes for impressions N/A
    EngagementOptimizes for destination URL clicksOptimizes for engagementOptimizes for impressions N/A
    Video viewsOptimizes for video viewsN/AOptimizes for impressions Optimizes for video views
    ConversionsLead generationOptimizes for lead gen submissionsOptimizes for lead gen submissions Optimizes for impressions N/A
    Website conversionsOptimizes for conversionsOptimizes for conversionsOptimizes for impressions N/A
    Job applicantsOptimizes for clicks to job adOptimizes for clicks to job adOptimizes for impressions N/A

    Validations Based on Objective Type

    During campaign creation, certain fields are expected to be set with specific values for each ObjectiveType, and these constraints are validated by the API.

    Website Traffic and Creative Engagement have differing validation rules based on the selected optimizationTargetType

    The following table lists the validations for each ObjectiveType

    objective campaign.format Audience Expansion LinkedIn Audience Network Conversion tracking
    Brand Awareness STANDARD_UPDATE optional optional optional
    CAROUSEL optional Disallowed optional
    SINGLE_VIDEO optional optional optional
    TEXT optional Disallowed optional
    SPOTLIGHT Disallowed Disallowed optional
    FOLLOW_COMPANY Disallowed optional REQUIRED
    SPONSORED_MESSAGE optional Disallowed optional
    Video View SINGLE_VIDEO optional optional optional
    Lead Generation STANDARD_UPDATE optional optional optional
    SINGLE_VIDEO optional Disallowed optional
    CAROUSEL optional Disallowed optional
    SPONSORED_INMAIL optional Disallowed optional
    SPONSORED_MESSAGE optional Disallowed optional
    Website Conversion STANDARD_UPDATE optional optional optional
    SINGLE_VIDEO optional optional REQUIRED
    CAROUSEL optional Disallowed REQUIRED
    TEXT optional Disallowed REQUIRED
    SPOTLIGHT Disallowed Disallowed REQUIRED
    SPONSORED_INMAIL optional Disallowed REQUIRED
    SPONSORED_MESSAGE optional Disallowed REQUIRED
    Website Visit STANDARD_UPDATE optional optional optional
    SINGLE_VIDEO optional optional optional
    CAROUSEL optional Disallowed optional
    TEXT optional Disallowed optional
    SPOTLIGHT Disallowed Disallowed optional
    SPONSORED_INMAIL optional Disallowed optional
    SPONSORED_MESSAGE optional Disallowed optional
    Engagement STANDARD_UPDATE optional optional optional
    CAROUSEL optional Disallowed optional
    SINGLE_VIDEO optional optional optional
    FOLLOW_COMPANY Disallowed Disallowed optional
    SPONSORED_MESSAGE optional optional optional
    Job Applicant STANDARD_UPDATE optional optional optional
    SPOTLIGHT Disallowed Disallowed optional
    JOBS Disallowed Disallowed optional

    Note

    The next two tables have varying requirements for Audience Expansion, LinkedIn Audience Network (LAN), and Conversion Tracking



    Website Traffic

    campaign.formatbidStrategyoptimizationTargetTypecostTypeBid TypeAudience ExpansionLANConversion Tracking
    STANDARD_UPDATEAUTOMAX_IMPRESSIONCPMCPMOptionalOptionalOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional
    CPMNONECPMCPM
    SINGLE_VIDEOAUTOMAX_IMPRESSIONCPMCPMOptionalOptionalOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional
    CPMNONECPMCPM
    CAROUSELAUTOMAX_IMPRESSIONCPMCPMOptionalDisallowedOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional
    CPMNONECPMCPM
    TEXTCPCNONECPCCPCOptionalDisallowedOptional
    CPMNONECPMCPM
    SPOTLIGHTCPCNONECPCCPCDisallowedDisallowedOptional
    CPMNONECPMCPM
    FOLLOW_COMPANYCPCNONECPCCPCDisallowedDisallowedOptional
    CPMNONECPMCPM
    SPONSORED_INMAILCPS(measured as CPM x 1000)NONECPMCPMOptionalDisallowedOptional
    SPONSORED_MESSAGECPS(measured as CPM x 1000)NONECPMCPMOptionalDisallowedOptional
    JOBSCPMNONECPMCPMDisallowedDisallowedOptional



    Creative Engagement

    campaign.formatbidStrategyoptimizationTargetTypecostTypeBid TypeAudience ExpansionLANConversion Tracking
    STANDARD_UPDATEAUTOMAX_IMPRESSIONCPMCPMOptionalOptionalOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional
    CPMNONECPMCPM
    CAROUSELAUTOMAX_IMPRESSIONCPMCPMOptionalDisallowedOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional
    CPMNONECPMCPM
    SINGLE_VIDEOAUTOMAX_IMPRESSIONCPMCPMOptionalOptionalOptional
    AUTOMAX_CLICKCPMCPC
    AUTOMAX_CONVERSIONCPMCPCRequired
    CPCENHANCED_CONVERSIONCPCCPC
    CPCNONECPCCPCOptional

    Campaigns optimizing for MAX_CONVERSION must have a conversion associated with it to be activated. Campaigns of this type should be created and then associated with a conversion before activating. See Conversion Tracking for instructions on creating conversions and associating them with campaigns.

    Lead Generation Campaigns

    A special type of Sponsored Updates campaign is the Lead Generation campaign. To create one, set the objectiveType to LEAD_GENERATION. You cannot set offsiteDeliveryEnabled to true when using Lead Gen.

    See the following sample request to create a Lead Generation campaign.

    {
        "account": "urn:li:sponsoredAccount:123456",
        "campaignGroup": "urn:li:sponsoredCampaignGroup:635137195",
        "audienceExpansionEnabled": false,
        "costType": "CPM",
        "creativeSelection": "OPTIMIZED",
        "dailyBudget": {
            "amount": "18",
            "currencyCode": "USD"
        },
        "locale": {
            "country": "US",
            "language": "en"
        },
        "name": "My LeadGen Campaign",
        "objectiveType": "LEAD_GENERATION",
        "offsiteDeliveryEnabled": false,
        "runSchedule": {
            "end": 9876543210123,
            "start": 1234567890987
        },
        "status": "ACTIVE",
        "targetingCriteria": {
            "exclude": {
                "or": {
                    "urn:li:adTargetingFacet:locations": [
                        "urn:li:geo:102095887"
                    ]
                }
            },
            "include": {
                "and": [
                    {
                        "or": {
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:103644278"
                            ]
                        }
                    },
                    {
                        "or": {
                            "urn:li:adTargetingFacet:interfaceLocales": [
                                "urn:li:locale:en_US"
                            ]
                        }
                    },
                    {
                        "or": {
                            "urn:li:adTargetingFacet:segments": [
                                "urn:li:adSegment:259144"
                            ]
                        }
                    }
                ]
            }
        },
        "type": "SPONSORED_UPDATES",
        "unitCost": {
            "amount": "18",
            "currencyCode": "USD"
        }
    }
    

    Video Ad Campaigns

    Video campaigns can be created with an objective to have as many views as possible. See the sample below for an example.

    {
      "account": "urn:li:sponsoredAccount:53333333341",
      "campaignGroup": "urn:li:sponsoredCampaignGroup:635137195",
      "audienceExpansionEnabled": false,
      "costType": "CPV",
      "objectiveType": "VIDEO_VIEW",
      "creativeSelection": "OPTIMIZED",
      "locale": {"language": "en","country": "US"},
      "name": "Video campaign Sponsored Update",
      "format":"SINGLE_VIDEO",
      "offsiteDeliveryEnabled": false,
      "runSchedule": {
        "start": 1520890990333,
        "end": 1521754990333
      },
      "targetingCriteria": {
          "include": {
              "and": [
                  {
                      "or": {
                          "urn:li:adTargetingFacet:interfaceLocales": [
                              "urn:li:locale:en_US"
                          ]
                      }
                  },
                  {
                      "or": {
                          "urn:li:adTargetingFacet:locations": [
                              "urn:li:geo:103644278"
                          ]
                      }
                  }
              ]
          }
      },
      "type": "SPONSORED_UPDATES",
        "dailyBudget": {
        "currencyCode": "USD",
        "amount": "18"
      },
      "unitCost": {
        "amount": "15",
        "currencyCode": "USD"
      },
      "status": "ACTIVE"
    }
    

    To create a Carousel Ad campaign, set type = SPONSORED_UPDATES and format = CAROUSEL. Optionally, set objectiveType to WEBSITE_VISIT or LEAD_GENERATION. The default objective type for Sponsored Updates is WEBSITE_VISIT.

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

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

    Dynamic Ad Campaigns

    Dynamic Ads are personalized ads that are automatically populated with members' profile photo and other data dynamically pulled from their LinkedIn profiles. APIs are available for self-service campaign formats such as Follower Ads, Spotlight Ads, and Jobs Ads. The Content Ad format is only available for managed accounts and cannot be managed through the API or Campaign Manager. To learn more about Dynamic Ads, please see Dynamic Ads Overview.

    Set type as DYNAMIC to create a Dynamic Ad Campaign. The following values are accepted for objectiveType:

    • WEBSITE_TRAFFIC
    • WEBSITE_VISIT
    • JOB_APPLICANT
    • ENGAGEMENT
    • WEBSITE_CONVERSION
    • BRAND_AWARENESS

    Note

    All creatives under a Dynamic Ad campaign must have the same creative type.
    The campaign format is a required field when campaign.type=DYNAMIC

    Dynamic Ads campaigns must set both daily and total budgets.

    POST https://api.linkedin.com/v2/adCampaignsV2
    
    {  
       "account": "urn:li:sponsoredAccount:123",
       "campaignGroup": "urn:li:sponsoredCampaignGroup:635137195",
       "audienceExpansionEnabled":false,
       "objectiveType": "WEBSITE_TRAFFIC",
       "costType":"CPM",
       "creativeSelection":"OPTIMIZED",
       "locale":{  
          "language":"en",
          "country":"US"
       },
       "name":"Test Dynamic Ad Campaign",
       "offsiteDeliveryEnabled":false,
        "runSchedule": {
            "end": 9876543210123,
            "start": 1234567890987
        },
        "targetingCriteria": {
            "include": {
                "and": [
                    {
                        "or": {
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:103644278"
                            ]
                        }
                    },
                    {
                        "or": {
                            "urn:li:adTargetingFacet:interfaceLocales": [
                                "urn:li:locale:en_US"
                            ]
                        }
                    }
                ]
            }
        },
       "type":"DYNAMIC",
       "totalBudget":{  
          "currencyCode":"USD",
          "amount":"100"
       },
       "dailyBudget":{  
          "currencyCode":"USD",
          "amount":"50"
       },
       "unitCost":{  
          "amount":"15",
          "currencyCode":"USD"
       },
       "status": "ACTIVE"
    }
    

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

    Get a Campaign

    Campaigns can be retrieved individually by passing in their ID to the following endpoint.

    GET https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    

    Sample Response

    {
        "account": "urn:li:sponsoredAccount:506289162",
        "associatedEntity": "urn:li:organization:2414183",
        "audienceExpansionEnabled": false,
        "campaignGroup": "urn:li:sponsoredCampaignGroup:602277684",
        "changeAuditStamps": {
            "created": {
                "time": 1530119777000
            },
            "lastModified": {
                "time": 1530119777000
            }
        },
        "costType": "CPC",
        "creativeSelection": "OPTIMIZED",
        "dailyBudget": {
            "amount": "1800",
            "currencyCode": "USD"
        },
        "id": 141049524,
        "locale": {
            "country": "US",
            "language": "en"
        },
        "name": "Campaign Sponsored update B",
        "offsiteDeliveryEnabled": false,
        "optimizationTargetType": "NONE",
        "test": false,
        "runSchedule": {
            "end": 9876543210123,
            "start": 1234567890987
        },
        "servingStatuses": [
            "ACCOUNT_SERVING_HOLD"
        ],
        "status": "ACTIVE",
        "targeting": {
            "includedTargetingFacets": {
                "employers": [
                    "urn:li:organization:1337"
                ],
                "interfaceLocales": [
                    {
                        "country": "US",
                        "language": "en"
                    }
                ],
                "locations": [
                    "urn:li:geo:103644278"
                ]
            }
        },
        "targetingCriteria": {
            "include": {
                "and": [
                    {
                        "or": {
                            "urn:li:adTargetingFacet:employers": [
                                "urn:li:company:1337"
                            ]
                        }
                    },
                    {
                        "or": {
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:103644278"
                            ]
                        }
                    },
                    {
                        "or": {
                            "urn:li:adTargetingFacet:interfaceLocales": [
                                "urn:li:locale:en_US"
                            ]
                        }
                    }
                ]
            }
        },
        "type": "SPONSORED_UPDATES",
        "unitCost": {
            "amount": "15",
            "currencyCode": "USD"
        },
        "version": {
            "versionTag": "1"
        }
    }
    

    Search for Campaigns

    You can search for campaigns by ID, account, campaign group, name, type, and status fields. Search criteria can be chained together for increased granularity. If a search query is omitted, the API returns all the campaigns that the caller has access to.

    If you are using the Search for Campaigns endpoint and the response returns more than 1,000 campaigns, the API returns a 400 error with the following message:

    {"message":"Request would return too many entitties. ","status":400}

    If more than 1,000 campaigns need to be pulled, set a count parameter value of less than 1,000 to pull less than 1,000 campaigns per call and paginate through the full list of campaigns.

    Note

    This call may return both test and non-test campaigns.

    To search for non-test campaigns only, filter out the test campaigns by specifying search.test=false
    If you would like to search only test campaigns, specify search.test=true

    GET https://api.linkedin.com/v2/adCampaignsV2?q=search&search.{searchCriteria}.values[0]={searchValue}
    

    Parameters

    Field Name Required Description
    search.account.values no Searches for campaigns associated with the provided list of sponsored account URNs.
    search.campaignGroup.values no Searches for campaigns associated with the provided list of sponsored CampaignGroup URNs. For example, urn:li:sponsoredCampaignGroup:{campaignGroupId}.
    search.associatedEntity.values no Searches for campaigns by associated entity.
    search.id.values no Searches for campaign by ID.
    search.status.values no Searches for campaigns with the provided status. The possible values are:
    • ACTIVE
    • PAUSED
    • ARCHIVED
    • COMPLETED
    • CANCELED
    • DRAFT
    search.type.values no Searches for campaigns with the provided status. The possible values are:
    • TEXT_AD
    • SPONSORED_UPDATES
    • SPONSORED_INMAILS
    • DYNAMIC
    search.name.values no Searches for campaigns by name.
    search.test no Searches for campaigns based on test or non-test.
    • true: for test campaigns
    • false: for non-test campaigns
    If not specified, searches for both test and non-test campaigns.
    sort.field no, default=ID Field to sort search results by. Possible values are:
    • ACCOUNT
    • ACTIVATION_TIME
    • ID
    • NAME
    sort.order no, default=ASCENDING Sort order of results. Possible values are:
    • ASCENDING
    • DESCENDING

    Sample Request

    The following example searches for all SPONSORED_UPDATE campaigns in ACTIVE status. The results are ordered by id in descending order.

    GET https://api.linkedin.com/v2/adCampaignsV2?q=search&search.type.values[0]=SPONSORED_UPDATES&search.status.values[0]=ACTIVE&sort.field=ID&sort.order=DESCENDING
    

    Sample Response

    {
        "elements": [
            {
                "targetingCriteria": {
                    "include": {
                        "and": [
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:employers": [
                                        "urn:li:company:1035"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:locations": [
                                        "urn:li:geo:103644278"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:interfaceLocales": [
                                        "urn:li:locale:en_US"
                                    ]
                                }
                            }
                        ]
                    }
                },
                "servingStatuses": [
                    "ACCOUNT_SERVING_HOLD"
                ],
                "type": "SPONSORED_UPDATES",
                "locale": {
                    "country": "US",
                    "language": "en"
                },
                "version": {
                    "versionTag": "1"
                },
                "associatedEntity": "urn:li:organization:2414183",
                "test": false,
                "runSchedule": {
                    "end": 9876543210123,
                    "start": 1234567890987
                },
                "targeting": {
                    "includedTargetingFacets": {
                        "employers": [
                            "urn:li:organization:1035"
                        ],
                        "locations": [
                            "urn:li:geo:103644278"
                        ],
                        "interfaceLocales": [
                            {
                                "country": "US",
                                "language": "en"
                            }
                        ]
                    }
                },
                "optimizationTargetType": "NONE",
                "changeAuditStamps": {
                    "created": {
                        "time": 1543365082000
                    },
                    "lastModified": {
                        "time": 1543365082000
                    }
                },
                "campaignGroup": "urn:li:sponsoredCampaignGroup:603030884",
                "dailyBudget": {
                    "amount": "18",
                    "currencyCode": "USD"
                },
                "unitCost": {
                    "amount": "15",
                    "currencyCode": "USD"
                },
                "creativeSelection": "OPTIMIZED",
                "costType": "CPC",
                "name": "Campaign Sponsored update B",
                "offsiteDeliveryEnabled": false,
                "id": 145282384,
                "audienceExpansionEnabled": false,
                "account": "urn:li:sponsoredAccount:506333826",
                "status": "ACTIVE"
            },
        ],
        "paging": {
            "total": 250,
            "count": 10,
            "start": 0,
            "links": []
        }
    }
    

    Update a Campaign

    When you perform a partial update, the header X-RestLi-Method must be included in the request and set to PARTIAL_UPDATE.

    Sample Request

    The following sample request updates targeting for a campaign. Targeting criteria for a campaign can be changed at any time. You can modify criteria based on the current performance of the campaign.

    Note

    The facet interfaceLocales is required when you update the targeting of a campaign. Also, you must use at least one of locations OR profileLocations. You cannot use both.

    POST https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    
    {
        "patch": {
            "$set": {
                "targetingCriteria": {
                    "exclude": {
                        "or": {
                            "urn:li:adTargetingFacet:employers": [
                                "urn:li:company:1337",
                                "urn:li:company:1035"
                            ],
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:102095887"
                            ]
                        }
                    },
                    "include": {
                        "and": [
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:industries": [
                                        "urn:li:industry:8",
                                        "urn:li:industry:9"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:locations": [
                                        "urn:li:geo:103644278",
                                        "urn:li:geo:101174742"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:interfaceLocales": [
                                        "urn:li:locale:en_US"
                                    ]
                                }
                            }
                        ]
                    }
                }
            }
        }
    }
    

    Sample Request

    Additionally, you can update bid amounts and the daily budget for your campaign as seen in the example below.

    POST https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    
    {
        "patch": {
            "$set": {
                "dailyBudget": {
                    "amount": "30.0",
                    "currencyCode": "USD"
                },
                "totalBudget": {
                    "amount": "300.00",
                    "currencyCode": "USD"
                }
            }
        }
    }
    

    Sample Request

    You can also update a campaign to remove the total budget entire which makes the total budget unlimited.

    POST https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    
    {
        "patch": {
            "$delete": [
                "totalBudget"
            ]
        }
    }
    

    Reactivate a Completed Campaign

    To reactivate a campaign with the COMPLETED status, update status and end timestamp values. You must also pass in start, which is an immutable field and therefore must be the original start time of the campaign.

    POST https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    
    {
        "patch": {
            "$set": {
                "runSchedule": {
                    "end": 9876543210123,
                    "start": 1234567890987
                },
                "status": "ACTIVE"
            }
        }
    }
    

    Archive a Campaign

    To archive a campaign when it has ended or needs to be canceled, update the status parameter.

    POST https://api.linkedin.com/v2/adCampaignsV2/{campaignID}
    
    {
        "patch": {
            "$set": {
                "status": "ARCHIVED"
            }
        }
    }
    

    Delete a Campaign

    Campaign can be deleted.

    Caution

    Only campaign groups which are in DRAFT status are allowed to be deleted.
    Once deleted, a campaign group can't be retrieved or recovered.

    Sample Request

    DELETE https://api.linkedin.com/v2/adCampaignsV2/CAMPAIGN_ID
    

    A successful response returns a 204 code.

    Batch Operations for Campaigns

    Batch operations may only be performed on entities that belong to the same Ad Account.

    Batch Create Campaigns

    Campaigns can be created in bulk by using the Batch Create endpoint. The request body should contain an elements array that contains each campaign you would like to create.

    When you bulk create ad campaigns, the header X-RestLi-Method must be included in the request and set to BATCH_CREATE.

    POST https://api.linkedin.com/v2/adCampaignsV2
    
    {
        "elements": [
            {
                "account": "urn:li:sponsoredAccount:507557938",
                "campaignGroup": "urn:li:sponsoredCampaignGroup:635137195",
                "associatedEntity": "urn:li:organization:5522289",
                "audienceExpansionEnabled": false,
                "costType": "CPC",
                "creativeSelection": "OPTIMIZED",
                "dailyBudget": {
                    "amount": "18",
                    "currencyCode": "USD"
                },
                "locale": {
                    "country": "US",
                    "language": "en"
                },
                "name": "Campaign Text ads A",
                "offsiteDeliveryEnabled": false,
                "runSchedule": {
                    "end": 9876543210123,
                    "start": 1234567890987
                },
                "targetingCriteria": {
                    "include": {
                        "and": [
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:locations": [
                                        "urn:li:geo:103644278"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:interfaceLocales": [
                                        "urn:li:locale:en_US"
                                    ]
                                }
                            }
                        ]
                    }
                },
                "type": "TEXT_AD",
                "unitCost": {
                    "amount": "15",
                    "currencyCode": "USD"
                },
                "status": "ACTIVE"
            }
        ]
    }
    

    Batch Get Campaigns

    Multiple campaigns can be fetched in a single call by chaining together multiple ids. All requested campaigns must belong to the same Ad Account.

    GET https://api.linkedin.com/v2/adCampaignsV2?ids[0]=337643194&ids[1]=141049524
    

    Sample Response

    {
        "errors": {
            "337643194": {
                "message": "Not Found.",
                "status": 404
            }
        },
        "results": {
            "141049524": {
                "account": "urn:li:sponsoredAccount:506289162",
                "associatedEntity": "urn:li:organization:2414183",
                "audienceExpansionEnabled": false,
                "campaignGroup": "urn:li:sponsoredCampaignGroup:602277684",
                "changeAuditStamps": {
                    "created": {
                        "time": 1530119777000
                    },
                    "lastModified": {
                        "time": 1530132904000
                    }
                },
                "costType": "CPC",
                "creativeSelection": "OPTIMIZED",
                "dailyBudget": {
                    "amount": "18",
                    "currencyCode": "USD"
                },
                "id": 141049524,
                "locale": {
                    "country": "US",
                    "language": "en"
                },
                "name": "Campaign Sponsored update B",
                "offsiteDeliveryEnabled": false,
                "optimizationTargetType": "NONE",
                "test": false,
                "runSchedule": {
                    "end": 9876543210123,
                    "start": 1234567890987
                },
                "servingStatuses": [
                    "ACCOUNT_SERVING_HOLD"
                ],
                "status": "ACTIVE",
                "targeting": {
                    "excludedTargetingFacets": {
                        "employers": [
                            "urn:li:organization:1035",
                            "urn:li:organization:1337"
                        ],
                        "locations": [
                            "urn:li:geo:102095887"
                        ]
                    },
                    "includedTargetingFacets": {
                        "industries": [
                            "urn:li:industry:8",
                            "urn:li:industry:9"
                        ],
                        "interfaceLocales": [
                            {
                                "country": "US",
                                "language": "en"
                            }
                        ],
                        "locations": [
                            "urn:li:geo:101174742",
                            "urn:li:geo:103644278"
                        ]
                    }
                },
                "targetingCriteria": {
                    "exclude": {
                        "or": {
                            "urn:li:adTargetingFacet:employers": [
                                "urn:li:company:1035",
                                "urn:li:company:1337"
                            ],
                            "urn:li:adTargetingFacet:locations": [
                                "urn:li:geo:102095887"
                            ]
                        }
                    },
                    "include": {
                        "and": [
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:locations": [
                                        "urn:li:geo:101174742",
                                        "urn:li:geo:103644278"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:interfaceLocales": [
                                        "urn:li:locale:en_US"
                                    ]
                                }
                            },
                            {
                                "or": {
                                    "urn:li:adTargetingFacet:industries": [
                                        "urn:li:industry:8",
                                        "urn:li:industry:9"
                                    ]
                                }
                            }
                        ]
                    }
                },
                "type": "SPONSORED_UPDATES",
                "unitCost": {
                    "amount": "15",
                    "currencyCode": "USD"
                },
                "version": {
                    "versionTag": "2"
                }
            }
        },
        "statuses": {
            "337643194": 404
        }
    }
    

    Batch Update Campaigns

    Multiple campaigns can be updated in a single call. The URL should include ids for each campaign you would like to update. Additionally, the request body should define how each campaign should be updated as seen in the example below.

    When you perform a batch partial update, the header X-RestLi-Method must be included in the request and set to BATCH_PARTIAL_UPDATE.

    POST https://api.linkedin.com/v2/adCampaignsV2?ids[0]=337643194&ids[1]=337643214
    
    {
        "entities": {
            "337643194": {
                "patch": {
                    "$set": {
                        "status": "PAUSED"
                    }
                }
            },
            "337643214": {
                "patch": {
                    "$set": {
                        "status": "PAUSED"
                    }
                }
            }
        }
    }
    

    Batch Delete Campaigns

    Caution

    Only campaign groups which are in DRAFT status are allowed to be deleted.
    Once deleted, a campaign group can't be retrieved or recovered.

    Sample Request

    DELETE https://api.linkedin.com/v2/adCampaignsV2?ids=List(CAMPAIGN_ID1, CAMPAIGN_ID2)
    

    A successful response returns a 204 code.