FAQ

Ads API

General

Q: Is there another environment besides LinkedIn production where I can develop and test code?

We currently do not have a sandbox available, but you can create multiple applications that each align with your own various environments i.e. dev, QA, staging, prod.

Q: Are there any SDKs available?

  • We do have mobile SDKs for Android and IOS.
  • Please refer to the document here. We do not have Marketing API SDKs available at this time.

Q: Is there call throttling?Are there limits to the number of API calls that can be made by a single user/account?

Yes, we do have call limits per app and per member. You would see an error with a status-code as 429 if any one of them has reached its limit. The limits are typically set in such a way that you should never reach them under normal usage. If you find your app has reached a limit and is being throttled, you should consider minimizing the total calls being made by using batch operations and decoration which allow for more efficient call patterns.

Q: The authentication (and authorization) method for the API is OAuth 2. What if I need tokens that can be used to authenticate on behalf of another user? Is that authentication method available?

  • A user must authorize an app in order for that app to act on their behalf.  
  • For security reasons, we don't allow anonymous calls (without user opt-in).
  • Most calls to our APIs happen in the context of a specific user so that we can properly authorize the action being taken and return the contextually correct data.

Q: Can a single authorized user make requests on behalf of all accounts/advertisers?

Yes, if that user has the permission to make that request to all the Ad accounts in question. These are the same permissions that relate users to accounts within Campaign Manager.

Advertising & Targeting

Q: Is there an ability to retrieve a list of campaigns from a given campaign group?

Yes, you can get campaigns by CampaignGroup. Here is a sample query:

GET
https://api.linkedin.com/v2/adCampaignsV2?q=search&search.campaignGroup.values[0]=urn:li:sponsoredCampaignGroup:502616245

Please find the documentation here.

Q: What are the different statuses when a creative is uploaded (e.g. In-Review, Accepted, Rejected).  Is a descriptive error message available if the creative is Rejected?

  • Please look at the review.reviewStatus field here.
  • When a creative is rejected, you can review the review.rejectionReasons field in the response to identify why the creative was rejected.

Q: Is Ad Campaign optimization applicable when we select this option 'Enable the LinkedIn Audience Network'?

  • Ad Campaign Optimization is applicable only to on-platform Ads and not on Linkedin Audience Network.
  • For more information please look at the documentation here.

Q: What information can we edit on a campaign after it is enabled?

Some of the fields you can edit on a campaign after it is enabled are:

  • Target Audience
  • Bid/Budget provided they are greater than current spent amount

You can also edit/update the creatives being served while the campaign is serving.

Q: Can you suggest APIs to select Target audience? How to implement this via API?

You can use following fields to target an ad campaign:

  •  targeting.excludedTargetingFacets
  • targeting.includedTargetingFacets

You may want to get the audience count for the targeting segment created using the above fields. Audience Count has to be >= 300 for an ad to serve.

Please view following documentation:

  • Ads Targeting: Use the Ad Targeting Facets API to discover types of targeting available
  • Ad targeting Entities: Use the Ad Targeting Entities API to discover valid values of a targeting type available.
  • Audience Count: The Audience Count API provides advertisers the ability to forecast the reach of your targeting criteria.
  • Standardized Data: You may choose to use standardized data like seniorities, regions, industries, etc. for some of these calls.

Q: Currently, in Campaign Manager, it seems the minimum values for bids and budget are programmatically adjusted based on Audience Targeting options we select. Can you provide information on how we can adjust Bids and Daily Budget minimum value for both CPC and CPM bid types? 

You can use the Ad Budget Pricing API to suggest the values. Please view the Ad Budget Pricing documentation

Matched Audiences

Q: How long does it take to create a matched audience? Does LinkedIn return any information on matched/not-matched Company info?

After updating your list via the API, it may take up to 48 hours to add match your list. Linkedin returns the match rate and audience count for a matched audience.

Q: Is there an API to add/remove individual company name from a Matched Segment for running Campaign?

We currently do not have an API to add/remove individual company names. You can only bulk replace the entire CSV with a newly uploaded CSV. It should include all the entities, including new companies that you want added to the segment, and exclude any companies you want removed.

Q: Since LinkedIn takes up to 48 hours to find 300 people for the matched audience we created, when should we call Audience Count API to notify our Customers that their Target Audience is <300?

  1. Upload CSV (Company Name/ Domain) and create an Audience Match
  2. Create Ad Segment and Associate Matched Audience with Ad Segment
  3. Call audienceCount endpoint to verify if results is >=300 for Ad Segment created at step 2.
  4. Configure Sponsored Ad Content, bid, budget
  5. Create a Campaign using above Ad Segment you verified at step 3.

At step 1 we are going to find the matched audience for an uploaded CSV which may reuse with multiple accounts and/or campaigns. I would not considered a csv as uploaded successfully until I get the matched audience here. At step 4, you are going to get the approximate number of members you are going to Target. The campaign will not fail for targeting reasons if you verify that the count you get at step 4 is >=300.

LeadGen Forms

Q:  What is the limit on the number of questions on a LeadGen Form?

  • Questions of a LeadGen Form can either be picked from a predefined list of 22 fields or could be manually typed in as a "Custom" question of type "text" or "MCQ". 
  • Maximum Questions on Form   (Predefined + Custom) = 7
  • Maximum Custom Questions ("text" or "MCQ") on a form = 3

Q:  Is there a text limit on the answers to Custom Questions?

  • We expect that the answers to Custom Questions are one-line answers and so the default min and max values for responses have been set to 1 and 300. The answers should be plain text.

Q:  Answers to Custom Questions (MCQ) use an Index. How do I get the choice?

  • Custom Questions (MCQ) require a minimum of 2 and a maximum of 5 choices.
  • The Index for MCQ answer starts at 0, so the index value can be 0,1,2,3 or 4.
  • There is no API way to collate the index number and the actual choice text. This will have to be implemented at your end by retrieving the form separately and mapping the indexes before storing in your database.

Q: Why am I not seeing any leads?

  • You need to be Account Manager or Campaign Manager on the ads account AND  (in Campaign Manager)
  • You need to be Company Page Admin OR are assigned as the Lead Gen Forms Manager. (on Company Page)
  • Refer this article for the permissions required.

Q: Does LinkedIn perform any validation on the Leads?

  • Out of the total, 7 questions possible on a form a maximum of 3 are custom questions. The rest of the questions are picked up from a list of 22 predefined fields.
  • The answers of these predefined fields are auto-populated from the member's profile information (whenever available). For Example, if a form contains the question "City", it is directly picked up from the member's profile information. The user cannot edit auto-populated answers.
  • In the event that a predefined field information is not present on the member's profile, the member is allowed to input plain text. There is only basic text length validation.

Q:  Are there any restrictions on the number of webhooks that can be setup?

  • There can be only 1 webhook for 1 Key (developerApplication,  sponsoredEntity)
    That 1 webhook can be ACTIVE,  PAUSED or CANCELED
  • So, LinkedIn will send a  push notification for a particular Key (developerApplication,  sponsoredEntity) to only 1 URL  (the active one).
  • There are no limits on the number of webhooks that can be created by an app  (as long as the keys are unique).

Reporting Analytics

Q: What are the mappings for query parameters and response fields between the adStatisticsV2 endpoint and the adAnalyticsV2 endpoint?

The adStatisticsV2 endpoint is retiring soon. Most of the functionality provided by the old adStatisticsV2 is available in the adAnalyticsV2 endpoint. 

Mappings for request parameters:

adStatisticsV2 adAnalyticsV2 Mapping Notes
q q Same format (use q = analytics)
dateRange.start dateRange.start  Same format
dateRange.end dateRange.end  Same format
pivot pivot Same format
timeGranularity timeGranularity Same format
accounts accounts Same format
campaigns campaigns Same format
creatives creatives Same format

Mappings for response fields:

adStatisticsV2 adAnalyticsV2 Mapping Notes
chargeableClicks clicks Same format
conversionStatistics.
conversionCost
No equivalent field N/A
conversionStatistics.
conversionValue
conversionValueInLocalCurrency Returned JSON structures are different:

 

adStatisticsV2:
"conversionValue": {
   "amount": "152000.0",
   "currencyCode": "USD"
}
 

adAnalyticsV2:
"conversionValueInLocalCurrency": "152000.0"
conversionStatistics.
postClickConversions
externalWebsitePostClickConversions Same format
conversionStatistics.
viewThroughConversions
externalWebsitePostViewConversions Same format
dateRange dateRange Same format
impressions impressions Same format
nonchargeableClicks No equivalent field Can be derived from (totalEngagements - clicks)
pivot pivotValue Same format
spend costInLocalCurrency
costInUsd
Returned JSON structures are different:

 

adStatisticsV2:
"spend": {

    "amount": 1000,
    "currencyCode": "USD"
  }
 

adAnalyticsV2:
"costInLocalCurrency": "1000"

Q: Are there any plans to offer log level data instead of querying the Ads Reporting APIs?

The only reporting data we offer is through the reporting APIs currently available.  We are always adding expanded capabilities to our APIs, but do not provide log level data. 

You can view our current Ads Reporting APIs offer here.

Q: When retrieving current performance from the Ads Reporting API, is there a lag in the data or is it in real-time?

The performance metrics for the Ads Reporting API are near realtime. For more details review the documentation.