This resource represents LinkedIn Learning activity reports like course completions, seconds of content viewed and learner days active. You can use these methods to aggregate activity data by account, group, individual or content.
Note
Disclaimer: LinkedIn Learning is constantly investing in our reporting infrastructure. In the future, there may be changes to the Reporting API which can require adjustments to how the data is queried. These updates may require you to make some updates on your end. We intend to provide detailed guidance in advance of any potential changes to ensure that you have enough time to make necessary changes in your application.
Sample Request
curl -X GET \
'https://api.linkedin.com/v2/learningActivityReports?q=criteria&count=1&startedAt=1627267600000&timeOffset.unit=DAY&timeOffset.duration=7&aggregationCriteria.primary=ACCOUNT&contentSource=ALL_SOURCES' \
-H 'Authorization: Bearer AQW...'
Sample Response
{
"elements": [
{
"latestDataAt": 1632207540000,
"activities": [
{
"engagementType": "DAYS_ACTIVE",
"engagementValue": 88,
"engagementMetricQualifier": "UNIQUE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 12,
"engagementMetricQualifier": "UNIQUE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "SECONDS_VIEWED",
"engagementValue": 2505,
"engagementMetricQualifier": "TOTAL",
"assetType": "VIDEO",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "ARTICLE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "ARTICLE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "AUDIO",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "AUDIO",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "BOOK",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "BOOK",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "LEARNING_COLLECTION",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "LEARNING_COLLECTION",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 16,
"engagementMetricQualifier": "TOTAL",
"assetType": "COURSE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 1,
"engagementMetricQualifier": "TOTAL",
"assetType": "COURSE",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "DOCUMENT",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "DOCUMENT",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "EVENT",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "EVENT",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 2,
"engagementMetricQualifier": "TOTAL",
"assetType": "LEARNING_PATH",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 0,
"engagementMetricQualifier": "TOTAL",
"assetType": "LEARNING_PATH",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "VIEWS",
"engagementValue": 66,
"engagementMetricQualifier": "TOTAL",
"assetType": "VIDEO",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
},
{
"engagementType": "COMPLETIONS",
"engagementValue": 22,
"engagementMetricQualifier": "TOTAL",
"assetType": "VIDEO",
"firstEngagedAt": 1627267600000,
"lastEngagedAt": 1627354000000
}
],
"learnerDetails": {
"entity": {
"accountUrn": "urn:li:enterpriseAccount:999"
}
}
}
],
"paging": {
"total": 1,
"count": 1,
"start": 0,
"links": [
{
"rel": "next",
"href": "/v2/learningActivityReports?aggregationCriteria.primary=ACCOUNT&count=1&q=criteria&start=1&startedAt=1627267600000&timeOffset.duration=7&timeOffset.unit=DAY",
"type": "application/json"
}
]
}
}
Query Parameters
Parameter |
Description |
Type |
Required |
q |
Designates the query finder. The value of this parameter should always be criteria . |
String |
Yes |
startedAt |
Specifies the beginning time for the range of records to be returned or summarized by the report. Represented by number of milliseconds since midnight, January 1, 1970 UTC. |
Long |
Yes |
sortBy.engagementMetricType |
An engagement type metric by which the results should be sorted. Supported values include: - SECONDS_VIEWED
- COMPLETIONS
- DAYS_ACTIVE
- MARKED_AS_DONE
- PROGRESS_PERCENTAGE
- VIEWS
|
EngagementMetricType |
No |
sortBy.engagementMetricQualifier |
An engagement type metric by which the results should be sorted. Supported values include: |
EngagementMetricQualifier |
No (Default = TOTAL) |
sortOrder |
The order of the results. Supported values include: |
String |
No (Default = DESCENDING) |
timeOffset.unit |
Describes the offset from start parameter to be used. Supported timeOffset units include: |
String |
No |
timeOffset.duration |
Describes the offset from start parameter to be used. Duration is limited to a max of 14 days/2 weeks from start date. |
Long |
No |
locale.language |
Locale of the report. Report content will be localized based on this value. Supported values include: |
String |
No (Default = en) |
assetType |
Type of asset for the content whose report is generated. Supported values include: - COURSE
- VIDEO
- ARTICLE
- AUDIO
- BOOK
- EVENT
- LEARNING_COLLECTION
- LEARNING_PATH
|
AssetType |
No |
contentSource |
Denotes whether the content is proprietary to the LinkedIn Learning account, from LinkedIn Learning, or from a third-party provider. If it is admin created "custom content" the source will be ORGANIZATION. If it is LinkedIn Learning content the source will be LINKEDIN_LEARNING. For third-party content the source will be THIRD_PARTY. Supported values include:- ALL_SOURCES
- LINKEDIN_LEARNING
- ORGANIZATION
- THIRD_PARTY
- INTERNAL (deprecated)
- EXTERNAL (deprecated)
|
ContentSource |
No = EXTERNAL) |
aggregationCriteria.primary |
The primary aggregation level for the report. Supported values include: - ACCOUNT
- GROUP
- INDIVIDUAL
- CONTENT
- ASSIGNMENT
|
AggregationCriteria |
No (Default = ACCOUNT) |
aggregationCriteria.secondary |
The secondary aggregation level for the report. Supported values include: - ACCOUNT
- GROUP
- INDIVIDUAL
- CONTENT
- ASSIGNMENT
|
AggregationCriteria |
No |
Response Fields
Field Name |
Description |
Type |
Required |
activities |
All the relevant content engagements that occurred like the number of completions and unique views. |
EngagementMetric[] |
Yes |
contentDetails |
Details corresponding to the content like the name, locale and ID. |
ContentDetails |
No |
latestDataAt |
Milliseconds since epoch for the latest data on which the report is based. |
Long |
No |
learnerDetails |
Details corresponding to the learner like the name, email and uniqueUserId |
LearnerDetails |
No |
Definitions
AggregationCriteria
Symbol |
Description |
ACCOUNT |
Aggregation at LinkedIn Learning account level. This is the highest possible level of aggregation. |
INDIVIDUAL |
Aggregation at individual user or learner level. |
CONTENT |
Aggregation at content level. |
AssetType
Symbol |
Description |
ARTICLE |
A piece of written work published in a print or electronic medium. It is a type of document which refers to a specific topic, forming an independent part of a publication such as book, newspaper or web platform. Ex. Blog post. |
ASSESSMENT |
Used to evaluate a learner's skill and knowledge. |
AUDIO |
Audio-only content with no video elements, like audio books and podcasts. |
BOOK |
Includes full length books presented in any form, text, audiobook, or otherwise. Does not include book summaries, reviews, excerpts, or other incomplete versions of a book. |
COURSE |
A course is a collection of chapters that represent a cohesive learning experience around a concept or concepts. |
DOCUMENT |
A document refers to a medium of record for decisions, transactions, plan etc. Ex. Wiki page, PDF, etc. |
EVENT |
An event is an entity that can be scheduled to happen at a particular time where the learning content is synchronously offered (in-person or online) to the learners. Ex. workshops, seminars, tech talks, trainings. |
LEARNING_COLLECTION |
A learning collection is a non-sequential collection of learning assets generally centered around a skill or concept. |
LEARNING_PATH |
A learning path is a guided sequential collection of courses and other content that is designed to teach a skill or set of skills. Generally much larger in scope than an individual course. |
VIDEO |
A video represents a single viewable video. It is one of the basic building blocks used in the larger learning assets like courses and learning paths. |
ContentDetails
Field |
Description |
Type |
Required |
name |
Title of the learningAsset. For example, “Excel Essential Training”. |
String |
Yes |
locale |
ISO 639-1 language code of the content, including locale information. |
Locale |
Yes |
contentProviderName |
The name of the provider for this content. |
String |
No |
contentSource (deprecated) |
This field is being replaced by contentProviderName, but the ContentSource enum will remain in use as a query parameter. Determines the source of the content. If it is admin created "custom content" the source will be INTERNAL. If it is LinkedIn Learning content the source will be EXTERNAL. |
ContentSource |
No |
websiteUrl |
The launch URL of the INTERNAL learning asset in the LinkedIn Learning web application. |
String |
No |
contentUrn |
This is the primary content entity identifier |
String |
Yes |
ContentSource
Symbol |
Description |
ALL_SOURCES |
Combines LINKEDIN_LEARNING, ORGANIZATION, and THIRD_PARTY. |
LINKEDIN_LEARNING |
Include content published by LinkedIn Learning. |
ORGANIZATION |
Include content published by the caller's enterprise organization, not intended for use outside of the enterprise organization. |
THIRD_PARTY |
Include content published by any organization for external use, including user-supplied content providers and the caller's own organization. |
INTERNAL (deprecated) |
Resource is proprietary. It is only available to the LinkedIn Learning account making the request. |
EXTERNAL (deprecated) |
Resource is available to all LinkedIn Learning customers. |
EngagementMetric
Field |
Description |
Type |
Required |
assetType |
Type of asset for the content whose report is generated. Supported values include: |
AssetType |
No |
engagementType |
An engagement type metric by which the results should be sorted. Supported values include: - SECONDS_VIEWED
- COMPLETIONS
- DAYS_ACTIVE
- MARKED_AS_DONE
- PROGRESS_PERCENTAGE
- VIEWS
- ENGAGED_LEARNERS
|
EngagementMetricType |
Yes |
engagementValue |
Value of the engagement for the engagement type. For example, number of seconds views or course completions. |
Long |
No |
lastEngagedAt |
The time when the content was last engaged. For example, the date the content was last viewed or completed. For COMPLETIONS this is the time when the content was completed. |
Time |
No |
EngagementMetricType
Symbol |
Description |
SECONDS_VIEWED |
Total number of seconds a content has been viewed by enterprise entities. |
COMPLETIONS |
Number of times the content has been completed by enterprise entities. |
DAYS_ACTIVE |
Total number of days the enterprise entities did at least one engagement for any content (day is defined as the period of 24 hours starting from 12am PDT) |
MARKED_AS_DONE |
Number of times the content has been marked as done by enterprise entities. |
PROGRESS_PERCENTAGE |
Percentage of the content completed. |
VIEWS |
Number of views for the content. |
ENGAGED_LEARNERS |
Number of times the content has been engaged with by enterprise entities. |
EngagementMetricQualifier
Symbol |
Description |
TOTAL |
Total number of times the content has been engaged by enterprise entities. |
UNIQUE |
Number of times the content has been engaged by unique enterprise entities. |
LearnerDetails
Field |
Description |
Type |
Required |
name |
Name of the enterprise entity. An enterprise entity can be an account, group or individual. |
String |
No |
email |
Email address of the enterprise entity. |
String |
No |
enterpriseGroups |
A list of groups that the enterprise profile belongs to. |
Array |
Yes (default=[]) |
uniqueUserId |
If present, a unique and immutable user identifier. This value is generally provided to LinkedIn Learning through a manual or automated user provisioning process during account configuration. This value is often used to make an association between learner profiles in other enterprise applications like learning management systems (LMSs) or business intelligence (BI) tools. |
String |
No |
entity |
LinkedIn Learning specific unique entity identifier |
String |
Yes |
customAttributes |
Additional profile attributes provided by the enterprise. This data is generally provided to LinkedIn Learning through a manual or automated user provisioning process during account configuration. |
Object |
No |
Locale
Field |
Description |
Type |
Required |
country |
If present, an uppercase two-letter country code as defined by ISO-3166. |
String |
No |
language |
A lowercase two-letter language code as defined by ISO-639. |
String |
Yes |
variant |
If present, a vendor or browser-specific code. |
String |
No |