LinkedIn Learning Reporting API FAQs
LinkedIn Learning Reporting APIs provide key insights like course completions, user days active, and learner progress, among others, to admins. These insights help organizations measure the effectiveness of their L&D initiatives.
Here are some of the most frequently asked questions about this feature:
What is the LinkedIn Learning Reporting API and which Use Cases Does It Support?
The LinkedIn Learning Reporting API allows developers to access key insights and engagement metrics such as course completions, hours of content viewed, and learner days active, in a programmatic way.
You can aggregate insights by entities like individuals, groups, and accounts, or content objects like courses and videos. These insights can help organizations to measure the effectiveness of learning and inform talent development initiatives.
What do I need to use the LinkedIn Learning Reporting API?
You need to have a LinkedIn Learning enterprise license and admin access to provision the API keys. You do not need to be have an LMS to use the Reporting API to query learner data.
Where can I find documentation for the LinkedIn Learning Reporting API?
You can obtain detailed instructions about retrieving Learning reports here. You can also check out the LinkedIn Learning Reporting API guide to get more information about this feature.
What is the difference between the LinkedIn Learning Reporting API and the xAPI?
The Reporting API can be used to provide programmatic access to LinkedIn Learning reports. The most common use of the API is to bulk-import learner activity regularly.
Unlike the Reporting API, xAPI is used to push learner activity (like course completions) out to external systems as they happen. It is most commonly used to notify external Learning Management System when a LinkedIn Learning course has been completed.
While the Reporting API enables retrieving aggregated data, the xAPI only provides individual events.
Why do I Have to Agree to Additional API Program Terms in Order to Gain Access to my Client Id and Client Secret Tokens?
Once you have access to your Client Id and Client Secret tokens, you have the ability to use those access codes in combination with the LinkedIn Learning APIs (including the Content and the Reporting APIs) to access LinkedIn Learning course information and learner activity (like days active and video views). Any use of LinkedIn Learning APIs is subject to certain standard API terms to ensure that any related functionality, along with any data available via the APIs, is being used appropriately. If you’re not using or sub-licensing the LinkedIn Learning APIs and are only accessing your Client Id and Client Secret tokens to provide them to your learning management system, you’ll notice that your obligations under the API Program Terms are primarily limited to protecting the confidentiality and security of your Client Id and Client Secret tokens. In addition, the API Program Terms clearly state that in the event of any conflict between your LinkedIn customer agreement and the API Program Terms, your customer agreement shall govern.
[Changes Oct 2021] What changes are being made to the Reporting API?
The Reporting API is being upgraded to support all content types and providers now available on LinkedIn Learning Hub. This means you will be able to access engagement for LinkedIn Learning content, learning paths you created or any content partners you’ve integrated. In addition, the Reporting API is now using the same reporting infrastructure that powers our CSV reports, resulting in big improvements in scalability and performance. As a result of this change, the API will have the same data recency of our CSV reports.
[Changes Oct 2021] How is the recency of data changing?
The Reporting API data will no longer be returned in real-time. Reporting API data will run in conjunction with all reporting data under the new system. Every day at midnight PST we start a process to compute the previous day’s data. This data typically is pushed into our system by 8am PST the next day. The results from Reporting API will now contain a latestDataAt field which dentes when the data was last updated.
[Changes Oct 2021] What do I need to do to account for these changes?
We are giving customers a 2 month overlap period to ensure that they can test and migrate to the new system. Between October 6th and December 6th, all calls will still be sent to the previous Reporting API system until you make changes to the contentSource parameter values. Before December 6th, we ask that you test your scripts with this new system and make any necessary changes to account for the data delay. After December 6th, we will automatically route all API calls to the new system.
[Changes Oct 2021] What are the new values accepted by the contentSource parameter?
To migrate to the new API system, you need to update the contentSource parameter to one of the four values below.
- LINKEDIN_LEARNING: Returns engagement for LinkedIn Learning content
- Example of current call structure with contentSource parameter: https://api.linkedin.com/v2/learningActivityReports?q=criteria&contentSource=EXTERNAL&aggregationCriteria.primary=INDIVIDUAL&aggregationCriteria.secondary=CONTENT&assetType=COURSE&startedAt=1633662001000&timeOffset.duration=1&timeOffset.unit=DAY
- Example of new call structure with contentSource parameter: https://api.linkedin.com/v2/learningActivityReports?q=criteria&contentSource=LINKEDIN_LEARNING&aggregationCriteria.primary=INDIVIDUAL&aggregationCriteria.secondary=CONTENT&assetType=COURSE&startedAt=1633046400000&timeOffset.duration=1&timeOffset.unit=DAY
- ORGANIZATION → Returns engagement for your organization’s own content
- THIRD_PARTY → Returns engagement for all partner content
- ALL_SOURCES → Returns engagement for all of the above
[Changes Oct 2021] What are the structural/schema changes in the returned data that we should account for?
The JSON format of your results will remain the same. We’ve added a new field called lastestDataAt, which indicates when the data was last updated. In addition, the response field previously known as contentSource will now be contentProviderName.