Captivate Prime V1 API is now deprecated. The V1 APIs will stop working from February 2021. We recommend that you use V2 APIs from now on.


Adobe Captivate Prime is a cloud-hosted, learner-centric, and self-service learning management solution. Customers can access Captivate Prime resources programmatically using the Captivate Prime API to integrate it with other enterprise applications. The API can also be used by Adobe partners to enhance the value proposition of Captivate Prime, by extending its functionality or by integrating it with other applications or services.

Usage scenario

Using Captivate Prime API, developers can build self-contained applications that extend the functionality of Captivate Prime or integrate Captivate Prime with other enterprise applications workflows. You can develop a web application, desktop client or a mobile app using any technology of your choice. As a developer you can access your application data from within Captivate Prime. The deployment of the application that you develop is external to the Captivate Prime platform and you have full control over the software development lifecycle as the application evolves. Typically, applications are developed by a customer organization for use with their Captivate Prime account, and these applications are private to that specific customer organization. Also, Adobe partners can build generic applications with Captivate Prime API, that can be used by a large set of Captivate Prime customers.

Captivate Prime API

The Captivate Prime API is based on principles of REST, and exposes key elements of the Captivate Prime Object Model to application developers through HTTP. Before knowing the details of the API endpoints and the HTTP methods, developers can become familiar with the various Captivate Prime objects, their attributes and inter-relationships. Once the models are understood, it will be useful to get a basic understanding of the structure of API requests and responses, and a few common programming terms that we use generically across the API.

For details of the various API endpoints and methods, refer to the Captivate Prime API documentation.

API authentication

When writing an application that makes API calls to Prime, you have to register your application using the Integration Admin app. 

Captivate Prime APIs use OAuth 2.0 framework to authenticate and authorize your client applications. 


1. Set up your application 

You can set up your application with client id and client secret to use the proper end points. Once you register your application, you can get the clientId and clientSecret. Get URL should be used in browser as it authenticates the Captivate Prime users using their pre-configured accounts such as SSO, Adobe ID, and so on. 

GET<Enter your clientId>&redirect_uri=<Enter a url to redirect to>&state=<Any String data>&scope=<one or more comma separated scopes>&response_type=CODE.

After successful authentication, your browser redirects to the redirect_uri mentioned in the above URL. A parameter code is appended along with the redirect uri.

2. Get refresh token from code

POST Content-Type: application/x-www-form-urlencoded

Body of the post request:

client_id:<Enter your clientId>&
client_secret:<Enter your clientSecret>&
code:<code from step 1>

3. Obtain an access token from refresh token

URL to obtain access token: 

POST Content-Type: application/x-www-form-urlencoded

Body of the post request:

client_id:<Enter your clientId>&
client_secret:<Enter your clientSecret>&
refresh_token:<refresh token>

URL to verify access token details


Usage limitation

An access token is valid for seven days. After a day, you have to generate a new access token using refresh token. If you generate a new access token from refresh token while an existing access token is still valid, the existing token is returned. 

Some of the frequently used terms in Captivate Prime API are explained below for your reference. 


Developers can access a single API object model and also multiple models associated with that model. To access the subsequent related models, you need to understand the relationship of each model with other models. Includes parameter enables developers to access the dependant models. You can use comma separator to access multiple models. For sample usage and more details on includes, refer to sample API model section in this page. 

API request

The API requests can be made by making a HTTP Request. Depending upon the end point and method developer may have a choice of various HTTP verbs such as GET, PUT, POST, DELETE, PATCH, etc. For some requests query parameters can be passed. When making a request for a specific data model, the user can also request for related models as described in the JSON API specifications. The structure of a typical API Request is described in sample model usage.

API response

When an API request is made by a client, a SON document is obtained according to the JSON API specification. The response also contains the HTTP Status code, which the developer can verify to perform the appropriate next steps in his application logic. The structure of a typical API Response is described in sample model usage.


When an API request fails, an Error response is obtained. The HTTP Status code returned in the response indicates the nature of error. Error codes are represented with numbers for each model in the API reference. 200, 204, 400 and 404 are some of the common errors represented in APIs indicating HTTP access issues.  


API object's attributes and its relationships are collectively called Fields. Refer to JSON API for more information. You can use Fields as a parameter while making API calls to fetch one or more speicific attributes from the model. In absence of the Fields parameter, the API call fetches all the available attributes from the model. For example, in the following API call, fields[skill]=name fetches you the name attribute of the skill model alone.{userId}/userSkills/{id}?include=skillLevel.skill&fields[skill]=name 


Sometimes, an API request results in a long list of objects to be returned in the response. In such cases, the pagination attribute enables the developer to fetch the results sequentially in terms of multiple pages, where each page contains a range of records. For example, pagination attribute in Captivate Prime enables you to set the maximum number of records to be displayed in a page. Also, you can define the range value of records to be displayed on page. 


Sorting is allowed in API models. Based on the model, choose the type of sorting to be applied for the results. Sorting can be applied in ascending or descending order. For example, if you specify sort=name, then it is ascending sort by name. If you specify sort=-name, it is descending sort by name. Refer to JSON API spec for more information

API usage illustration

Let us consider a scenario where a developer wants to get skill name, max points assigned for skill level and points earned by the learner for that skill.

A userSkill model in Captivate Prime APIs consists of id, type, dateAchieved, dateCreated, pointsEarned as default attributes. So, when a developer uses GET method to acquire details of userSkill model, the current data pertaining to the default attributes is shown in the response output. 

But, in this scenario, the developer wants to get the skill name, and points of skill level for the user. Captivate Prime API enables you to access this related information using relationship fields and include parameter. The associated models for userSkill are obtained in relatioships tag. You can get the details of each associated models by calling these models along with the userSkill. To get this information, use include parameter with dot (period) separated values for each of the associated models. You can use comma as separator to request another model like user include=skillLevel.skill,course

API Call{userId}/userSkills/{id}?include=skillLevel.skill&fields[skill]=name&fields[skillLevel]=maxCredits&fields[userSkill]=pointsEarned

For example userId can be 746783 and the userSkills id: 746783_4426_1. 

Response of API call

   "links": {"self": "[userSkill]=pointsEarned&fields[skillLevel]=maxCredits&fields[skill]=name"},
   "data":    {
      "id": "746783_4426_1",
      "type": "userSkill",
      "attributes": {"pointsEarned": 5},
      "links": {"self": ""}
   "included":    [
         "id": "4426",
         "type": "skill",
         "attributes": {"name": "Java"},
         "links": {"self": ""}
         "id": "4426_1",
         "type": "skillLevel",
         "attributes": {"maxCredits": 10}

Captivate Prime models

The Captivate Prime API allows developers to access Captivate Prime objects as RESTful resources. Each API endpoint represents a resource, typically an object instance like Badge, or a collection of such objects. The developers then use the HTTP verbs such as PUT, GET, POST and DELETE to perform the CRUD operations on those objects (collections).

Following are the various elements of the Captivate Prime class diagram in V2 API.

V2 API class diagram
V2 API class diagram
Captivate Prime Object Description
account Encapsulates the details of a prime customer.
badge Badge is a token of accomplishment that learners get when they reach specific milestones as they progress within a course. 
catalog Catalog is a collection of learning objects.
user User is the key model in Captivate Prime. Users are typically the internal or external learners of an organization who consume learning objects. However, they may play some other roles such as author and Manager along with learner role. User id, type, email are some of the inline attributes. 
resource This is used to model each content resource that a module seeks to encapsulate. All resources encapsulated within an loResource are equivalent in terms of the learning objective, but they differ from each other in terms of delivery type or content locale.
userNotification This model contains notification information pertaining to a learner.
userSkill UserSkill indicates how much of a single skill level is achieved by a single user.
userBadge UserBadge relates a single badge with a single user. It contains details such as when was it achieved, assertionUrl and so on. 
skill Skills model consists of levels and credits. Skills can be acquired by learners after relevant course completion. 
skillLevel A skill level comprises of one or many courses to be consumed in order to acquire a level along with its associated credits. 
learningObject A Learning Object is an abstraction for various kinds of objects which users can enroll into and learn from. Currently Prime has the four types of Learning Objects – Course, Certification, Learning Program and Job Aid.
A specific instance of a learning object.
learningObjectResource This is equivalent to the concept of module. A course is composed of one of more modules. In Prime, a module can be delivered in a variety of equivalent ways. Therefore the loResource essentially encapsulates all those equivalent resources.
This encapsulates the outcome of the user consuming a specific resource in the context of a learning object he is enrolled into. It has information such as the duration spent by user in the resource, percentage progress made by the user, pass/fail status and the score obtained by the user in any associated quiz.
A calendar object is a list of upcoming classroom or virtual classroom courses that the user can enroll into.
L1 Feedback encapsulates the answers provided by a learner for the feedback questions associated with Learning Objects. Typically this is collected after the user completes a Learning Object if configured to collect such feedback from learners.
This abstraction encapsulates the details pertaining to the transaction representing the assignment of a specific user to a specific learning object instance.

Application development process


As a developer you have to create a trial account on Prime, so that you can have full access to all the roles within that account. To be able to write an application, a developer has to create some users and courses and get the account to a reasonable state so that the application being developed can have access to some sample data.

Create client id and secret

  1. In Integration Admin login, click Applications on the left pane. 

  2. Click Register at the upper-right corner of the page to register your application details. Registration page appears. 

    Register a new applicant
    Register a new applicant

    It is mandatory to fill up all the fields in this page. 

    Application Name: Enter your application name. It is not mandatory to use the same application name, it can be any valid name. 

    URL: If you know the exact URL where the application is hosted, you can mention it. If you are not aware, then you can mention your company URL. Valid URL name is mandatory in this field. 

    Redirect Domains: Enter the domain name of the application where you want the Captivate Prime application to redirect after OAuth authentication. You can mention multiple URLs here but you have to use the valid URLs such as, and so on. 

    Description: Enter the brief description for your application. 

    Scopes: Choose one of the four available options to define the scope of your application. Based on your choice mentioned here, Captivate Prime API endpoint are accessible for your application. For example, If you chose Learner role read access, then all the Captivate Prime learner API end points are read-only accessible to your application. 

    For this account only? 
    Yes - if you choose Yes, then the application is not visible to other account administrators.
    No - if you choose No, other account admins can also access this application but they need to use the application id to access this application. Application id is generated and displayed in Captivate Prime application Edit mode. 


    If you choose Admin role read and write access as scope while registering the application and choose Admin role read access while authoring the APIs, you can still have write access for the application as the app registration scope supersedes the authorization workflow. 

  3. Click Register at the upper-right corner after filling up the details in the registration page.

Application development and testing

The Captivate Prime API can be used by developers to build any application. Developers have to ensure that their accounts consist of some valid users and courses. They can create a few dummy users and courses and simulate activity in the trial account, so that they can test functionality of the application.

Application deployment

We recommend that the Captivate Prime Administrator or an Integration Administrator for the production account, to take ownership of making the application available to users within their organization. Once the application has been tested and is considered ready for production, inform the administrator of the production account. Ideally, the administrators want to generate a new client-id and client-secret for the application in the production account, and perform the necessary steps to incorporate them inside the application in a secure manner. The actual procedure for deploying applications varies from enterprise to enterprise, and the Captivate Prime Administrator of your organization has to take support from the IT/IS department within your organization to complete the deployment.

External application approval

You can add external applications by clicking Approve at the upper-right corner of the Applications page. Provide the external application id and click Save.

Add an external applicant
Add an external applicant