Introduction
At Docebo, we believe integrating your learning platform with other third party systems is key to the success of your learning programs for increased business performance. The documents that you find in the API & developer info section of Docebo's knowledge base are intended to provide you with all of the information you may need to get started with Docebo APIs. As processes around APIs are added or modified, Docebo will update this documentation to reflect the most current information.
Current version
The default version of the currently exposed API is version 1 (v1). However, in the future, there may be specific microservices that already expose later versions (v2, v3,..). The version of the API you intend to use must be specified within the endpoint URL. For example:
GET /learn/v1/location
Docebo API browser
Reference documentation of all of Docebo’s publicly available APIs is available within your Docebo platform. The documentation is constantly updated with the most up-to-date API version.
For an introduction on how to use the API browser see the article Get started with the Docebo API browser.
Note that, in some rare cases, dynamically generated attributes in JSON data cannot be properly rendered in the user interface of the reference documentation. This could prevent you from testing the API directly from the documentation itself. In this case, we suggest you use a dedicated tool (for example, Postman).
API client libraries
At this time, Docebo does not provide any client library for Docebo APIs. You need to set up your own package to start coding against Docebo APIs.
API call limitations
To maintain optimum performance and to ensure APIs are available to all customers, Docebo’s APIs are limited to 1,000 API calls per hour from each IP address.
Warning: Branch API calls should never be run concurrently as unpredictable results may occur and the structure of the branches may risk being corrupted. The affected API calls are:
-
POST /manage/v1/user/batch
(only if the call also creates the branches while importing the users) POST /manage/v1/orgchart
DELETE /manage/v1/orgchart/{id}
PUT /manage/v1/orgchart/{branch_id}
POST /manage/v1/orgchart/{id}/move
DELETE /manage/v1/orgchart/batch
POST /manage/v1/orgchart/batch
Please make sure these branch API calls are run sequentially.
Backward-compatible changes
Consider the changes listed below as backward-compatible. We invite you to structure your code to be able to support any such changes to the APIs. This type of change normally happens without any notification to customers. They may include:
- Adding new endpoints
- Adding new optional parameters to existing API endpoints
- Adding new properties to API responses
- Changing the order of properties in API responses
- Any update in API documentation
Non-backward-compatible changes policy
Docebo makes every effort to keep API changes backward-compatible, but it’s not always possible. In these cases, we inform consumers of the update through our Product updates page. The effective updates occur after a reasonable timeframe, and the deprecation period duration can vary due to technical and usage considerations. In any case, the time interval is a minimum of one month from the original communication on the Product updates page to the effective update. The deprecation period rule does not apply in case there are critical security vulnerabilities. In these cases, we apply a fix immediately and communication may appear on the Product Updates page during or shortly after the fix.
API changelog
Docebo informs customers of new additions or changes to Docebo APIs through our general Product updates page. Once you see communication related to APIs on this page, it’s always best to then refer to the official API documentation (https://<yoursubdomain.docebosaas.com>/api-browser/
) for a complete understanding of the changes that occurred.
API browser and additional fields
The additional fields used in the platform for the management of users, courses, and enrollment are managed by Superadmins as dynamic values, and cannot be documented in the API browser documentation, as they change from platform to platform. For the same reason, it is not possible to test additional fields from the API browser. As an example, if you want to filter courses according to a course additional field value where xx is the additional field ID (such as field_1
, field_2
, etc), the string to use would be something like:
https://yourdomain.docebosaas.com/learn/v1/enrollments?field_6=3
The ID to use in your query instead of xx will either be an integer (for example, for dropdown additional fields), a string (for a text additional field), an array, or a date (for date additional field). Here are some examples:
- date:
-
'field_12': {'from': '2018-06-26','to': '2018-06-30'},
- textfield:
-
'field_6': 'abc'
OR
'field_6': ['abc', 'def'], dropdown: 'field_8': 3
- iframe additional fields:
- Extend
field_xx
andfield_xx_yy
whereyy
is the field from the JSON configuration and use a this syntax:'$^speakers^speaker'
. The value will either be a string (for text additional field) or an array or a date (for date additional field). Examples:- date:
-
'field_12$^datefield': {'from': '2018-06-26','to': '2018-06-30'},
- textfield:
-
'field6$^textfield': 'abc'
OR
'field6$^textfield': ['abc', 'def']
Dealing with array fields for GET requests
The query string parameters described as arrays, should be specified differently depending on the tool you’re using to consume the API:
-
Docebo API browser: due to internal conversions applied by this tool, the parameters should be separated by a comma. In addition to that, if the parameters are strings, they must be wrapped with double quotes. Example:
"enrollment_status", "enrollment_completion_percentage”
-
Postman (or similar clients): the parameter must be followed by double square brackets and specified as many times as the values you need to pass. Example:
<ENDPOINT>?learning_plan_id[]=25&learning_plan_id[]=1&extra_fields[]=enrollment_time_spent&extra_fields[]=enrollment_status