(External) Coursera Enterprise - API Documentation
(External) Coursera Enterprise - API Documentation
Overview
As a customer of Coursera for Business/Campus/Govt, we can provide you with the ability
to seamlessly integrate our platform with your existing learning management systems (LMS
or LXP) through our APIs.
One of the fundamental building blocks of our Coursera platform is a program. A program
is an unordered grouping of multiple courses or specializations (ordered group of courses)
- curated by the organization and Coursera to offer a personalized experience to a group of
learners. This program on Coursera can also be customized with organization branding. An
organization can choose to have multiple programs and invite learners to one or many
programs - thereby giving them access to a branded and personalized learning experience
called program home.
Please find below an overview of the various integration components that we currently
support:
Single Sign-On (or SSO) allows users to pass between two systems without having to
manually type in a username and password while maintaining trust between the two
systems. It involves passing information about the user to Coursera from which Coursera
initializes an account for the user. It has numerous benefits, a few of which are outlined
below.
● Seamless Experience - When a user arrives at the Coursera program, they are
prompted to create their account. With SSO, the user can press the “Log in with XX”
button to initialize their account (if the first visit) and thereafter login with the same
button.
This document does not cover our Single Sign-on configuration in detail. Please contact
your Coursera contact who will be able to provide our Single Sign-on documentation.
Content listing - This component of our C4B API suite provides high-level metadata about
an organization's active programs, along with the course and specialization content within
them. The high-level metadata provided for each course includes fields like title,
description, deep-link URL, placeholder image and course length. Dynamically pulling this
data from the Coursera platform will allow our enterprise partners to replicate their
program curriculums and course items in their LMS. The course content will always link to
the Coursera program with the deep-link URL. Course learning will always take place in the
Coursera course learning environment.
User Reporting - This component of our C4B API suite provides data on enrollments,
completions and grades. This data can be stored in the LMS alongside each learners profile.
Skills management - This component provides APIs to allow you to list Coursera’s SkillSets
in your LMS/LXP and also provides data on your learners’ skill scores, Skillset progress, and
proficiency.
Glossary of terms
Enrollment When a course has been registered for — if one user registers for
3 courses, then 3 enrollments are used up.
Please do not hesitate to reach out to your Coursera contact for any further clarification.
Table of contents
Overview
Glossary of terms
Table of contents
APIs
Authentication
Content Listing
Get list of programs
Get list of content in programs
Get list of curriculum collections in a program
Get course material
User Management
Check whether user is in a program
Invite user to a program
Invite multiple users to a program
Create a program membership for a user
Enroll user in a specific course or specialization
Get list of invitations in a program
Get list of memberships in a program
Delete invitation from a program
Remove membership from a program
Remove a user from all programs
User Reporting
Get member progress across an organization
Worked Example - Getting all enrollments for an organization
Get member progress across a program
Get member progress for a specific user within a program
Get member progress for individual course items
Get user enrollment state in a course or specialization
SkillSets & Skills Management
Get SkillSets in your organization
Get SkillSets in a program
Get SkillSet content recommendations
Get SkillSet progress for a single learner
Get Skills scores for a single learner (max 10 Skills)
Get Skills scores for a single skill (max 10 learners)
Authentication
Coursera provides access to a suite of APIs that are exposed via OAuth 2.0. OAuth is an
authorization framework that allows third party applications (for example, an organization’s
learning management system) to access organization specific data and perform private
actions.
Before calling any of the APIs in this document, you need to obtain an OAuth token. The
Coursera Enterprise Services team will help you set up the OAuth client and provide you
with the necessary credentials.
To access the APIs, you will also need an orgId that is uniquely assigned to your account.
Again, the Coursera Enterprise Services team will provide you with the orgId.
Rate Limits
1. Request per service account limit: 2400/2 mins so it should never exceed 2400 requests
within 2 mins period. Block period is 5 mins.
2. Request per IP limit: 4000/3 mins. Block period is 5 mins.
Content Listing
These APIs provide high level metadata about programs, along with the course and
specialization content within them.
URL
GET https://api.coursera.org/api/businesses.v1/:orgId/programs
Parameters
start Integer Optional Index of the first result to be returned. Default is
0.
Response format
200 OK
{
"elements": [
{
"id": "yePXtnxXEeaUlQqXZbuV2w",
"name": "Learning & Leadership",
"tagline": "Everyone at GlobeLand can learn to be a leader!",
"url": "https://www.coursera.org/programs/learning-and-leadership",
"contentIds": [
{
"contentId": "GdeNrll1EeSROyIACtiVvg",
"contentType": "Course"
},
{
"contentId": "Wl5ych5kEeWFIxLDnS6_kQ",
"contentType": "Course"
}
]
},
{
"id": "gQvpt4WdEeaCLQquMHJNjw",
"name": "Business Analytics",
"tagline": "Achieve fluency in business data strategies",
"url": "https://www.coursera.org/programs/cx-business-analytics",
"contentIds": [
{
"contentId": "utjeMEgmEeWJSQ6Y2aPmQQ",
"contentType": "Specialization"
}
]
}
],
"paging": {
"next": "10",
"total": 18
}
}
Fields:
id Unique identifier of the program.
url The URL of the landing page of the program on Coursera. If an SSO
integration is configured with your Coursera program and you would
like to automatically attempt SSO login, you can add the
&attemptSSOLogin=true parameter to your program URL.
paging Pagination variables. There are two parts: “next” is the index of the
first result in the next page of results, and “total” is the total number
of results. The “next” field is omitted if there are no more results
following the last one in the current response.
URL
GET https://api.coursera.org/api/businesses.v1/:orgId/contents
Parameters
start Integer Optional Index of the first result to be returned. Default is
0.
Example:
&q=byProgramIds&programIds={{program-id}},{
{program-id}}
Response format:
200 OK
{
"elements": [
{
"id": "Course~GdeNrll1EeSROyIACtiVvg",
"contentId": "GdeNrll1EeSROyIACtiVvg",
"contentType": "Course",
"slug": "learning-how-to-learn",
"name": "Learning How to Learn: Powerful mental tools to help you ...",
"description": "This course gives you easy access ...",
"instructors": [
{
"photoUrl": "https://coursera-instructor-photos...photo.jpg",
"name": "Dr. Barbara Oakley",
"title": "Ramón y Cajal Distinguished Scholar ... , McMaster University",
"department": "Professor of Engineering, ... Oakland University"
},
{
"photoUrl": "https://coursera-instructor-photos...photo.jpg",
"name": "Dr. Terrence Sejnowski",
"title": "Francis Crick Professor at the Salk Institute ...",
"department": "Computational Neurobiology Laboratory"
}
],
"partners": [
"name": "University of California, San Diego",
"logoUrl": "https://coursera-university-assets.../logo.png",
],
"programs": [
{
"contentUrl":
"https://www.coursera.org/programs/learning-and-leadership?productId=GdeNrll1EeSROy
IACtiVvg&productType=course&showMiniModal=true",
"programId": "yePXtnxXEeaUlQqXZbuV2w"
}
],
"languageCode": "en",
“subtitleLanguageCodes”: [
"ar",
"fr",
"pt-PT",
"it",
"vi",
"de",
"ru",
"es"
],
"extraMetadata": {
"definition": {
"skills": [
{
"skillName": "Cloud Computing",
"skillId": "cloud-computing"
},
{
"skillName": "Google Cloud Platform",
"skillId": "google-cloud-platform"
},
{
"skillName": "Data Analysis",
"skillId": "data-analysis"
},
{
"skillName": "Computer Networking",
"skillId": "computer-network"
},
{
"skillName": "SQL",
"skillId": "sql"
},
{
"skillName": "Finance",
"skillId": "finance"
},
{
"skillName": "Software Engineering",
"skillId": "software-engineering"
}
],
"estimatedLearningTime": 51669,
"promoPhoto": "https://coursera-course-photos...logo.png",
"domainTypes": [
{
"domain": {
"name": "Data Science",
"domainId": "data-science"
},
"subdomain": {
"name": "Data Analysis",
"subdomainId": "data-analysis"
}
},
{
"domain": {
"name": "Business",
"domainId": "business"
},
"subdomain": {
"name": "Leadership and Management",
"subdomainId": "leadership-and-management"
}
}
]
},
"typeName": "courseMetadata"
}
},
“partners”:
[
{
{
“name”: "Google",
“logoUrl”:
"https://d3njjcbhbojbot.cloudfront.net/api/utilitie
s/v1/imageproxy/http://coursera-university-assets.s
3.amazonaws.com/6b/7dddea1b364f6a816dfc53891e6d14/1
60x60_Google.png"
}
],
“difficultyLevel”: "BEGINNER",
"name": "Google IT Support",
"contentId": "7lHCSlFIEeeffRIHljDI_g",
"description": "This 5-course certificate, developed by Google, includes
innovative curriculum designed to prepare you for an entry-level role in
IT support. A job in IT can mean in-person or remote help desk work in a
small business or at a global company like Google. The program is part
of Grow with Google, a Google initiative to help create economic
opportunity for all. Learn more. Upon completion of the certificate, you
can share your information with top employers like Cognizant, GE
Digital, Hulu, Infosys, Intel, KForce, MCPc, PNC Bank, RICOH USA,
Sprint, TEKSystems, Veterans United Home Loans, Walmart and their
subsidiaries, and of course, Google. You can also earn a CompTIA and
Google dual credential when you complete the Google certificate and pass
the CompTIA A+ certification exams. Through a mix of video lectures,
quizzes, and hands-on labs and widgets, the program will introduce you
to troubleshooting, customer service, networking, operating systems,
system administration and security. You’ll hear from Googlers with
unique backgrounds whose own foundation in IT support served as a
jumping off point for their careers. By dedicating ~5 hours a week, you
can complete in under six months. The content in the Google IT Support
Professional Certificate is licensed under a Creative Commons
Attribution 4.0 International License. Completing the program can earn
you up to 12 college credits, the equivalent of 4 associate degree-level
courses. Learn more in the FAQs below.",
"programs":
[
{
"contentUrl":
"https://www.coursera.org/programs/example-learning
-program-xfjgh?productId=7lHCSlFIEeeffRIHljDI_g&pro
ductType=s12n&showMiniModal=true",
“programId”: "FMf5QLeVEeistwoVRjxR6g"
}
],
"id": "Specialization~7lHCSlFIEeeffRIHljDI_g",
"languageCode": "en",
"extraMetadata":
{
"typeName": "specializationMetadata",
"definition":
{
"courseIds":
[
{
"contentId":
"7sBiclFIEeetjQ5ppGVTyA",
"contentType": "Course"
},
{
"contentId":
"X2bX61doEeerkQ5vdwUqtA",
"contentType": "Course"
},
{
"contentId":
"bvaUWldrEeerkQ5vdwUqtA",
"contentType": "Course"
},
{
"contentId":
"hBmmv1drEeerkQ5vdwUqtA",
"contentType": "Course"
},
{
"contentId":
"lWwBiVdrEeesGQokJ1NePA",
"contentType": "Course"
},
{
"contentId":
"quF5rVdrEeesGQokJ1NePA",
"contentType": "Course"
}
],
"tagline": "The launchpad to a career in IT"
}
},
"contentType": "Specialization",
"instructors":
[
{
"photoUrl":
"https://coursera-instructor-photos.s3.amazonaws.co
m/15/868c0049a911e8a11dcffe8b39d299/logo_GwG_vert_F
ullColor_cmykC_428x421px-copy.jpg",
"name": "Google",
"title": "",
"department": ""
}
]
"paging": {
"next": "10",
"total": 34
}
}
Fields:
id Unique identifier of the content. It has two parts, contentType and
contentId, separated by “~”.
contentType The contentType part of the id. There are two possible values:
“Course” or “Specialization”
slug The course URI slug associated with this course content
difficultyLevel The designated difficulty level of the course. There are three possible
values:
“BEGINNER”, “INTERMEDIATE” or “ADVANCED”
instructors The name, title, department, and photo (photoUrl) for each of the
instructors of the course or specialization.
partners The names and logos of the Coursera partners (universities and
companies) who have produced the course or specialization.
programs > The contentUrl field provides a deep link to the course. If an SSO
contentUrl integration is configured with your Coursera program and you would
like to automatically attempt SSO login, you can add the
&attemptSSOLogin=true parameter to your contentUrl
extraMetadata If the content is a specialization, this field contains the course IDs that
are in that specialization and taglines.
If the content is a course, this field contains information about
upcoming sessions of the course, a link to the course thumbnail
image (promoPhoto), a list of skills with skill id and name that it
develop (skills) and estimated learning time in seconds
(estimatedLearningTime).
paging Pagination variables. There are two parts: “next” is the index of the
first result in the next page of results, and “total” is the total number
of results. The “next” field is omitted if there are no more results
following the last one in the current response.
URL
GET
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/curriculumCollectio
ns
Parameters
start Integer Optional Index of the first result to be returned. Default is
0.
Response format
200 OK
{
"elements": [
{
"contents": [
{
"partners": [
{
"name": "Google Cloud",
"logoUrl":
"https://d3njjcbhbojbot.cloudfront.net/api/utilities/v1/imageproxy/http://coursera-universit
y-assets.s3.amazonaws.com/56/544d60f4a711e6b50cebd2a03c6e0d/cloud_logo_320x120.png"
}
],
"name": "Reliable Google Cloud Infrastructure: Design and Process",
"description": “Some description”,
"contentType": "Course",
"slug": "cloud-infrastructure-design-process",
"instructors": [
{
"photoUrl":
"https://coursera-instructor-photos.s3.amazonaws.com/c9/b2a070c36c11e68cc141fab179b5aa/Googl
e-Cloud-logo-color-850.jpg",
"name": "Google Cloud Training",
"title": "",
"department": ""
}
]
},
{
"partners": [
{
"name": "Google Cloud",
"logoUrl":
"https://d3njjcbhbojbot.cloudfront.net/api/utilities/v1/imageproxy/http://coursera-universit
y-assets.s3.amazonaws.com/56/544d60f4a711e6b50cebd2a03c6e0d/cloud_logo_320x120.png"
}
],
"name": "Networking in Google Cloud",
"description": "This specialization gives participants broad study of core
infrastructure and networking options on Google Cloud Platform. Through recorded lectures,
demonstrations, and hands-on labs, participants explore and deploy GCP networking
technologies, such as Google Virtual Private Cloud (VPC) networks, subnets, firewalls;
interconnection among networks; load balancing; Cloud DNS; Cloud CDN. The specialization
will also cover common network design patterns and automated deployment using Deployment
Manager.\n\nThis class is intended for the following participants:\n\n● Network Engineers
and Admins who are either using Google Cloud Platform or are planning to do so\n\n●
Individuals who want to be exposed to software-defined networking solutions in the
cloud.\n\nTo get the most out of this course, participants should have:\n\n*Prior
understanding of the OSI 7-layer model\n\n*Prior understanding of IPv4 addressing\n\n*Prior
experience with managing IPv4 routes",
"contentType": "Specialization",
"extraMetadata": {
"typeName": "specializationMetadata",
"definition": {
"courseIds": [
{
"contentId": "h9LqVq-lEeauxBIk_RF-8A",
"contentType": "Course"
},
{
"contentId": "dEWOXIntEeixGA4Edp1TqA",
"contentType": "Course"
},
{
"contentId": "UcnQ8LXsEeicHA7pKRXCQg",
"contentType": "Course"
}
],
"promoPhoto":
"https://d15cw65ipctsrr.cloudfront.net/81/0716c0b6c811e88cae95cc5edeac63/network-2.png",
"tagline": "Launch your career in Cloud Networking"
}
},
"slug": "networking-google-cloud-platform",
"instructors": [
{
"photoUrl":
"https://coursera-instructor-photos.s3.amazonaws.com/c9/b2a070c36c11e68cc141fab179b5aa/Googl
e-Cloud-logo-color-850.jpg",
"name": "Google Cloud Training",
"title": "",
"department": ""
}
]
}
],
"description": "Collection description goes here...",
"id": "lJOsamaqEem20g64DwWM7A~BXGkm",
"title": "1 person program - FULL Collection",
"collectionId": "BXGkm",
"programId": "lJOsamaqEem20g64DwWM7A"
}
],
"paging": {
"next": "2",
"total": 7
},
"linked": {}
}
Response format
200 OK
{
"elements": [
{
"id": "daG-a-O1EeijKBISCWxf6g",
"modules": [
{
"name": "What is AI?",
"id": "ze5oi",
"lessons": [
{
"name": "What is AI?",
"id": "v2asv",
"items": [
{
"itemType": "VIDEO",
"name": "Week 1 Introduction",
"deeplinkUrl":
"https://www.coursera.org/programs/qa-program-1-uznco?showMiniModal=true&attemptSSOLogin=tru
e&productType=course&productId=daG-a-O1EeijKBISCWxf6g&itemId=SRwLN",
"id": "SRwLN"
},
{
"itemType": "EXTERNAL_TOOL",
"name": "Have questions? Meet us on Discourse!",
"deeplinkUrl":
"https://www.coursera.org/programs/qa-program-1-uznco?showMiniModal=true&attemptSSOLogin=tru
e&productType=course&productId=daG-a-O1EeijKBISCWxf6g&itemId=I7aQ4",
"id": "I7aQ4"
},
{
"itemType": "QUIZ",
"name": "Week 1 Quiz",
"weightPercentage": 25,
"deeplinkUrl":
"https://www.coursera.org/programs/qa-program-1-uznco?showMiniModal=true&attemptSSOLogin=tru
e&productType=course&productId=daG-a-O1EeijKBISCWxf6g&itemId=xMfOj",
"id": "xMfOj"
}
]
}
]
},
{
"name": "Building AI Projects",
"id": "4jKrc",
"lessons": [
{
"name": "Building AI Projects",
"id": "OnoOA",
"items": [
{
"itemType": "VIDEO",
"name": "Week 2 Introduction",
"deeplinkUrl":
"https://www.coursera.org/programs/qa-program-1-uznco?showMiniModal=true&attemptSSOLogin=tru
e&productType=course&productId=daG-a-O1EeijKBISCWxf6g&itemId=fsbCO",
"id": "fsbCO"
},
{
"itemType": "VIDEO",
"name": "Workflow of a machine learning project",
"deeplinkUrl":
"https://www.coursera.org/programs/qa-program-1-uznco?showMiniModal=true&attemptSSOLogin=tru
e&productType=course&productId=daG-a-O1EeijKBISCWxf6g&itemId=z6hU1",
"id": "z6hU1"
}
]
}
]
}
]
}
],
"paging": {},
"linked": {}
}
Fields:
Course Materials
id Type: string
Description: courseId
modules Type: array of Modules
Description: an array of modules in the course (Note: the course
structure hierarchy is course -> modules -> lessons -> items)
Module
id Type: string
Description: module ID
Lesson
id Type: string
Description: lesson ID
Item
id Type: string
Description: item ID
User Management
Before we dive into various APIs highlighting the user administration flow, it would be good
to understand the different stages a learner goes through:
URL
GET
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/memberships/:pro
gramId~:externalId
Response format
HTTP Code - 200 Ok if user is a member
Note that the “id” provided in the response corresponds to the composed “id” in the URL of
this request.
{
"elements": [
{
"fullName": "John Doe",
"email": "[email protected]",
"externalId": "johndoe-sample-domain-ID",
"programId": "4LVhtQQNEemZUwrw3z8SgA",
"id": "4LVhtQQNEemZUwrw3z8SgA~johndoe-sample-domain-ID",
}
],
"paging": {},
"linked": {}
}
URL
POST
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/invitations?contrac
tId=:contractId
Parameters
contractId String Optional Id of the specific contract to invite a learner to.
Only needed if there are multiple contracts
attached to the program.
Request object
{
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]",
"sendEmail": false
}
Response format
201 Created
{
"id": "p5Zp4c0nEea0zwpn63qgwg~413861904646",
"programId": "p5Zp4c0nEea0zwpn63qgwg",
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]"
}
Response format
201 Created
{
"id": "p5Zp4c0nEea0zwpn63qgwg~413861904646",
"programId": "p5Zp4c0nEea0zwpn63qgwg",
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]"
}
URL
POST
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/invitations?action=
multiCreate
Parameters
contractId String Optional Id of the specific contract to invite a learner to.
Only needed if there are multiple contracts
attached to the program.
Request object
{
"Invitees":[
{
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]",
},
{
"externalId": "413861904647",
"fullName": "John Doe 2",
"email": "[email protected]",
},
],
"sendEmail": false
}
Response format
200 Created
{
"programId": "p5Zp4c0nEea0zwpn63qgwg",
"successful":[
{
"invitationId": "y9OX9K8-TZGiWXKg8ZEzng"
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]"
}
],
"failed":[
{
"errorCode": "INVITATION_ALREADY_EXISTS",
"message": "An active invitation already exists for [email protected] in
program _4R9y4T_EeiCTg7PxGqkyA",
"externalId": "413861904647",
"fullName": "John Doe 2",
"email": "[email protected]"
}
]
}
URL
POST
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/memberships
Request object
{
"fullName": "John Doe",
"email": "[email protected]",
“externalId”: “johndoe-sample-domain-ID”,
“sendWelcomeEmail”: false // Flag for sending Coursera welcome email
}
Response format
HTTP Code - 201 Created
{
"elements": [
{
"fullName": "John Doe",
"email": "[email protected]",
"externalId": "johndoe-sample-domain-ID",
"programId": "4LVhtQQNEemZUwrw3z8SgA",
"id": "4LVhtQQNEemZUwrw3z8SgA~johndoe-sample-domain-ID",
}
],
"paging": {},
"linked": {}
}
URL
POST
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/programEnrollmen
ts
{
“externalId”: “johndoe-sample-domain-ID”, // Any string
“contentType”: “Course”, // Course or Specialization
“contentId”: “6EAVDavbEeaPvQ5eOPtN_A”, // UUID
“action”: “ENROLL” // ENROLL or UNENROLL
}
Response format
HTTP Code - 201 Created
{
"elements": [
{
"fullName": "John Doe",
"email": "[email protected]",
"externalId": "johndoe-sample-domain-ID",
"programId": "4LVhtQQNEemZUwrw3z8SgA",
"id": "4LVhtQQNEemZUwrw3z8SgA~johndoe-sample-domain-ID",
}
],
"paging": {},
"linked": {}
}
URL
GET https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/invitations
Parameters
start Integer Optional Index of the first result to be returned. Default is
0.
Response format
200 OK
{
"elements": [
{
“createdAt”: 1602490628732,
"id": "p5Zp4c0nEea0zwpn63qgwg~413861904646",
"programId": "p5Zp4c0nEea0zwpn63qgwg",
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]"
}
],
"paging": {
"next": "10",
"total": 180
}
}
URL
GET https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/memberships
Parameters
start Integer Optional Index of the first result to be returned. Default is
0.
Response format
200 OK
{
"elements": [
{
“joinedAt”: 1602490628732,
"id": "p5Zp4c0nEea0zwpn63qgwg~413861904646",
"programId": "p5Zp4c0nEea0zwpn63qgwg",
"externalId": "413861904646",
"fullName": "John Doe",
"email": "[email protected]"
}
],
"paging": {
"next": "10",
"total": 245
}
}
URL
DELETE
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/invitations/:progra
mId~:externalId
Response format
204 No Content
Remove member from a program
Remove a user from the program. The membership id here is the id returned by the API call
to list of memberships. The learner will need to be reinvited to rejoin the program unless
the “softDelete” parameter is “true” (more information below).
URL
DELETE
https://api.coursera.org/api/businesses.v1/:orgId/programs/:programId/memberships/:pro
gramId~:externalId?softDelete=true
Parameters
softDelete Boolean Optional If set to true, allows the deleted member to
rejoin the program without the need to be
reinvited. Default is false.
Response format
204 No Content
URL
DELETE https://api.coursera.org/api/businesses.v1/:orgId/users/:externalId?softDelete=true
Parameters
softDelete Boolean Optional If set to true, allows the deleted member to
rejoin the program without the need to be
reinvited. Default is false.
Response format
204 No Content
User Reporting
Each entry in the list represents a single user’s progress for a single course. The overall
progress is a number between 0 to 100, highlighting the percentage of items completed by
the learner. It is possible for a learner to have COMPLETED a course but have overall
progress < 100, as a learner needs only to pass all graded items in order to complete a
course.
URL
GET https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports
Parameters
Response format
200 OK
Data Refresh Interval (how often the data is refreshed from the Coursera portal )
4 hours
{
"elements": [
{
"approxTotalCourseHrs": 2.98,
"overallProgress": 37,
"membershipState": "MEMBER",
"contentId": "r0GnHOZaEees-Q6jQMxlrg",
"externalId": "[email protected]",
"lastActivityAt": 1569229361000,
"id": "[email protected]~dfsfsdfs~fffg",
“grade”: “0.922300033569336”,
"contentType": "Course",
"programId": "gywzv9MFEeml3w46OqZe-A",
"enrolledAt": 1568138449555,
"isCompleted": true,
"completedAt": 1568748366896,
"updatedAt" : 1568748366896,
"contentName" : "Learning how to learn",
"contentSlug" : "learning-how-to-learn-xdek",
"partnerNames" : "Deep Teaching Solutions",
"contentCertificateUrl" : "xxx",
"fullName" : "John Doe",
"email" : "[email protected]",
"programName" : "Amazing program!",
"programSlug" : "amazing-program-yahs",
"contractId" : "Aa2KcwQFEeu-4goLfKsLtQ",
"contractName" : "Learning Initiative Licenses",
"learnerProfileStandardFields" : {
"managerName" : "abcdef",
"managerEmail" : "abcdef",
"jobTitle" : "abcdef",
"jobType" : "abcdef",
"businessUnit" : "abcdef",
"businessUnit2" : "abcdef",
"locationCity" : "abcdef",
"locationRegion" : "abcdef",
"locationCountry" : "abcdef"
},
"courseType" : "Course",
"numCoursesInSpecialization" : 0
}
}
}
Fields:
id Unique identifier of the entry. It has three parts, separated by “~”:
externalId, contentType, and contentId.
approxTotalCourse Numbers of hours that the learner has spent in the course
Hrs
(optional)
collectionId ID of the collection the learner enrolled through. This field is only
(optional) (default present when a learner enrolled in a course or a specialization
is none now) through a collection on web.
learnerProfileStand The “Enhanced learner profile attributes” set through the user
ardFields panel: managerName, managerEmail, jobTitle, jobType,
businessUnit, businessUnit2, locationCity, locationRegion,
locationCountry
paging Pagination variables. There are two parts: “next” is the index of the
first result in the next page of results, and “total” is the total
number of results. The “next” field is omitted if there are no more
results following the last one in the current response.
HTTP GET
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports
Note Returns a list of first 100 Course enrollments (no S12n [Specializations]) without
deleted member's progress. Default page size is 100. To fetch more see the
example below.
HTTP GET
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?start=100&li
mit=100
Note Returns a list of Course enrollments (no S12n [Specializations]) without deleted
member's progress
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?includeS12n
=true&includeDeletedMembers=true
Note Returns the first 100 member progress records. To include more modify start and
limit accordingly to fetch more
HTTP GET
URL https://api.coursera.org/api/rest/businesses.v1/hTxI5vWMRcW23UHPfbcsxA/enrol
lmentReports?includeExpiredContracts=true&contractIds=2o-oGwQEEeu-4goLf
KsLtQ&contractIds=Aa2KcwQFEeu-4goLfKsLtQ
Note You can add multiple Contract IDs to filter by repeating the “contractIds”
argument (contractIds=<id-1>&contractIds=<id-2>....). Returns the first 100
member progress records. To include more modify start and limit accordingly to
fetch more
HTTP GET
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?q=byProgra
mId&programId=:programId
Note Result will include the first 100 enrollments. Results will not have enrollments
related to deleted members or specializations
HTTP GET
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?q=byProgra
mId&programId=:programId&start=100&limit=200
Request course and specialization enrollments for all members including deleted
members of the program.
HTTP GET
URL https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?q=byProgram
Id&programId=:programId&includeS12n=true&includeDeletedMembers=true
URL
GET
https://api.coursera.org/api/businesses.v1/:orgId/enrollmentReports?q=byUserProgramId&
programId=:programId&externalId=:externalId
Parameters
programId String Required Unique identifier of the program.
Response format
Same as the response format for the Get member progress across an organization section
above, but with the paging field empty.
URL
GET
https://api.coursera.org/api/businesses.v1/:orgId/courseGradebookReports?q=search
Parameters
programId String Required
courseId String Optional
Response format
HTTP Code - 200 Ok
response body will contain a list of enrollment grade reports
{
"elements": [
{
"completedAt": 1585392590000,
"overallProgress": 72,
"approxTotalLearningHrs": 64.41,
"fullName": "Joe Doe",
"externalId": "[email protected]",
"lastActivityAt": 1585392991000,
"courseName": "Programming for Everybody (Getting Started with
Python)",
"overallCourseGrade": 96.7,
"id": "[email protected]~7A1yFTaREeWWBQrVFXqd1w",
"riskFlags": [],
"courseId": "7A1yFTaREeWWBQrVFXqd1w",
"programId": "aaaaaaaaaaaaaaa",
"itemGradebooks": [
{
"itemId": "WiLXL",
"itemName": "Chapter 1",
"itemType": "QUIZ",
"itemOrder": 1,
"isItemPassed": true,
"itemRiskFlags": [],
"itemDeadline": 1585392991000,
"moduleName": "Chapter One: Why We Program (continued)",
"lessonId": "AKJtt",
"itemGrade": 100,
"moduleId": "AWp2B",
"itemWeight": 9.17,
"lessonName": "Review: Chapter 1"
},
{
"itemId": "RqkS3",
"itemName": "Assignment: Write Hello World",
"itemType": "LTI",
"itemOrder": 2,
"isItemPassed": true,
"itemRiskFlags": [],
"moduleName": "Chapter One: Why We Program (continued)",
"lessonId": "D9XcC",
"itemGrade": 100,
"moduleId": "AWp2B",
"itemWeight": 8.26,
"lessonName": "Assignment: Chapter 1"
}
],
"enrolledAt": 1576734892000,
"isCompleted": true
}
],
"paging": {
"next": "5",
"total": 5500
},
"linked": {}
}
Fields
Id Unique identifier of the entry. It has two parts, separated by “~”:
externalId, and courseId.
fullName Full name of the learner based on the name from invitations.
collectionName Name of the collection the learner enrolled through. This field
(optional) is only present when a learner enrolled in a course or a
specialization through a collection on web.
paging Pagination variables. There are two parts: “next” is the index of
the first result in the next page of results, and “total” is the total
number of results. The “next” field is omitted if there are no
more results following the last one in the current response.
Course item fields
itemId Unique identifier for an item in a course.
Response format
HTTP Code - 200 Ok
Note that the “id” provided in the response corresponds to the composed “id” in the URL of
this request.
{
"elements": [
{
"contentId": "6EAVDavbEeaPvQ5eOPtN_A",
"externalId": "johndoe-sample-infosys-ID",
"state": "AVAILABLE",
"id": "johndoe-sample-infosys-ID~Course~6EAVDavbEeaPvQ5eOPtN_A",
"contentType": "Course"
}
],
"paging": {},
"linked": {}
}
URL
GET https://api.coursera.org/api/rest/v1/enterprise/organizations/:orgId/skillsets
Parameters
Response format
200 OK
{
"elements": [
{
"skillsetName": "Testing for Software Engineers",
"skillsetId": "IZWq3arXEeyocA7ufKX12w",
"skillsetDescription": "Testing for Software Engineers helps you to
upskill in software testing. This SkillSet provides you with content
recommendations that will allow you to excel in a single target skill for
career advancement. Move your software testing skill score from beginner to
intermediate.",
"programs": [
{
"programId": "cPivrKrTEeyIYQooRJvhxw",
"programName": "Engineering Program",
"skillsetDeeplink":
"https://www.coursera.org/programs/engineering-program-x9j9m/skillsets/test
ing-for-software-engineers-qfgzk?apiSource=enterprise_external_api_skillset
s&isExternal=true"
}
],
"skills": [
{
"skillName": "Software Testing",
"skillId": "software-testing",
"targetScore": 250
}
]
}
],
"total": 7,
"nextPage": ""
}
Fields:
skillsetName Name of the Skillset in your learning program
skillsetDeeplink Dedicated URL for your learners to access the SkillSet from your
LMS or LXP
targetScore Skill score required to fulfill Skill score requirement towards SkillSet
progress
URL
GET https://api.coursera.org/api/rest/v1/enterprise/programs/:programId/skillsets
Parameters
Response format
200 OK
{
"elements": [
{
"skillsetName": "Accountant",
"skillsetId": "RphzA6rTEeyocA7ufKX12w",
"skillsetDescription": "Accountant empowers you to reskill by revisiting core
accounting operations. This SkillSet refreshes your knowledge of accounting
principles and practices, spreadsheets, and data analysis tools. Choose from any of
our content recommendations in 5 target skills. Move your skill score to the next
level in accounting, communication, data analysis software, general accounting, and
spreadsheet software.",
"programId": "_yQsunMZEeydlxIFI8TsBQ",
"programName": " Learning Program",
"deeplink":
"https://www.coursera.org/programs/learning-program-itfhe/skillsets/accountant-f0sr
r?apiSource=enterprise_external_api_skillsets&isExternal=true",
"skills": [
{
"skillName": "Data Analysis Software",
"skillId": "data-analysis-software",
"targetScore": 250
},
{
"skillName": "Accounting",
"skillId": "accounting",
"targetScore": 425
},
{
"skillName": "Communication",
"skillId": "communication",
"targetScore": 250
},
{
"skillName": "Spreadsheet Software",
"skillId": "spreadsheet-software",
"targetScore": 250
},
{
"skillName": "General Accounting",
"skillId": "general-accounting",
"targetScore": 100
}
]
},
Fields:
skillsetName SkillSet as written in your learning program
deeplink Dedicated URL for your learners to access the SkillSet from your
LMS or LXP
targetScore Skill score required to fulfill Skill score requirement towards SkillSet
progress
URL
GET
https://api.coursera.org/api/rest/v1/enterprise/programs/:programId/skillsets/:skillsetId/skills/:skillI
d/recommendations
Parameters
programId String Required Unique identifier of your learning program
Response format
200 OK
{
"skillName": "Software Testing",
"skillId": "software-testing",
"programId": "_yQsunMZEeydlxIFI8TsBQ",
"elements": [
{
"name": "Software Development Lifecycle",
"id": "9FGXduzMEeaPUAr6dzYJCA",
"productType": "specialization",
"logo":
"https://d15cw65ipctsrr.cloudfront.net/17/6b66f0a7ea11e7a885e33e8374f520/so
ftware_development_lifecycle_logo_pexels_CC0.jpg",
"deeplink":
"https://www.coursera.org/programs/learning-program-itfhe/skillsets/testing
-for-software-engineers-qfgzk/skill/software-testing?apiSource=enterprise_e
xternal_api_skillsets&isExternal=true&showMiniModal=true&collectionId=store
dCollection~IZLEzqrXEeyo8Ao9i53Qcw&productId=9FGXduzMEeaPUAr6dzYJCA&product
Type=s12n"
},
{
"name": "Lean Software Development",
"id": "c20ET-PsEeavJhLJu8-cXg",
"productType": "course",
"logo":
"https://coursera-university-assets.s3.amazonaws.com/2e/0cd5e2383ba38999964
7887f51de4c/UofMD2D200x48transp.png",
"deeplink":
"https://www.coursera.org/programs/learning-program-itfhe/skillsets/testing
-for-software-engineers-qfgzk/skill/software-testing?apiSource=enterprise_e
xternal_api_skillsets&isExternal=true&showMiniModal=true&collectionId=store
dCollection~IZLEzqrXEeyo8Ao9i53Qcw&productId=c20ET-PsEeavJhLJu8-cXg&product
Type=course"
}
]
}
Fields:
skillName Name of the Skill within a SkillSet
deeplink Dedicated URL for your learners to access the content from your
LMS or LXP
URL
GET
https://api.coursera.org/api/rest/v1/enterprise/programs/:programId/skillsets/learner-progress?e
mail=:email&skillsetIds=:skillsetIds
Parameters
programId String Required Unique identifier of your learning program
Response format
200 OK
{
"learnerName": "Jerry",
"learnerEmail": "[email protected]",
"learnerExternalId": "",
"elements": [
{
"skillsetName": "Software Engineer",
"skillsetId": "9YIu5nMgEeyZBwrbiliZxQ",
"progressPercent": 38
}
],
"total": 1,
"nextPage": ""
}
Fields:
learnerName Name of learner
learnerEmail Email of learner
URL
GET
https://api.coursera.org/api/rest/v1/enterprise/programs/:programId/learner-skill-scores?email=:e
mail&skillIds=:skillIds
Parameters
email String Required Email of your learner (your API call needs either
email OR external ID)
externalId String Required Unique Id of your learner (your API call needs
either email OR external ID)
Response format
200 OK
{
"learnerEmail": "[email protected]",
"learnerName": "Jerry",
"externalId": "ABC123",
"elements": [
{
"skillId": "computer-programming",
"skillName": "Computer Programming",
"skillDescription": "Learn computer programming to develop software
solutions. From data and logic to software engineering, you'll be equipped for
building business applications, video games, and more.",
"skillScore": 315,
"skillProficiency": "INTERMEDIATE"
},
{
"skillId": "software-engineering",
"skillName": "Software Engineering",
"skillDescription": "Learn software engineering to build modern computer
applications. From data structures and logic to development tools and techniques,
you'll be equipped to design, develop, and maintain software.",
"skillScore": 100,
"skillProficiency": "BEGINNER"
}
]
}
Fields:
learnerName Name of learner
Parameters
email String Required Email of your learner (your API call needs either
email OR external ID)
externalUs STring Required Unique Id of your learner (your API call needs
erIds either email OR external ID)
Response format
200 OK
{
"skillId": "computer-programming",
"skillName": "Computer Programming",
"skillDescription": "Learn computer programming to develop software
solutions. From data and logic to software engineering, you'll be equipped
for building business applications, video games, and more.",
"elements": [
{
"learnerEmail": "[email protected]",
"learnerName": "Jerry",
"externalId": "ABC123",
"skillScore": 312,
"skillProficiency": "INTERMEDIATE"
}
]
}
Fields:
learnerName Name of learner
Under the hood, SSO works by defining a common protocol between Coursera and the
third party that wants to act as the identity provider. Coursera supports SAML 2.0.
To learn more about our Single Sign-On, please see our Single Sign-On documentation. If
you have not been provided with this, please contact your Coursera contact who will be
able to provide it to you.
See in bold below, the URL parameter ?attemptSSOLogin=true can be appended to any
Coursera for Business program URL or course deep link within the program
Program URL:
https://www.coursera.org/programs/your-program-title?attemptSSOLogin=true
Program course deep-link:
https://www.coursera.org/programs/your-program-title?authProvider=test&productId=jYd9
1UquEeWpQA4vMed_oQ&productType=course&showMiniModal=true&attemptSSOLogin
=true
NOTE: If you would like to have these above SSO parameters automatically added to your
Content URLs, please reach out to your customer success manager to enable this.