--- title: "API browser technical information" slug: "api-browser-technical-information" description: "Learn how to effectively use API browser endpoints, manage dynamic fields, and test API calls for user management and course enrollment." updated: 2026-10-27T14:23:47Z published: 2026-10-27T14:23:47Z canonical: "developer.docebo.com/api-browser-technical-information" --- > ## Documentation Index > Fetch the complete documentation index at: https://developer.docebo.com/llms.txt > Use this file to discover all available pages before exploring further. # API browser technical information ## Introduction This article provides additional guidance on using certain types of endpoints with the API browser, along with important limitations to be aware of. For an introduction to how to use the API browser, see the article [Get started with the Docebo API browser](https://developer.docebo.com/docs/get-started-with-the-docebo-api-browser). ## 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: ```http 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** ```plaintext 'field_12': {'from': '2018-06-26','to': '2018-06-30'}, ``` **textfield** ```plaintext 'field_6': 'abc' ``` or ```plaintext 'field_6': ['abc', 'def'], dropdown: 'field_8': 3 ``` **iframe additional fields** Extend `field_xx` and `field_xx_yy` where `yy` is the field from the JSON configuration and use 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** ```plaintext 'field_12$^datefield': {'from': '2018-06-26','to': '2018-06-30'}, ``` **textfield** ```plaintext 'field6$^textfield': 'abc' ``` or ```plaintext 'field6$^textfield': ['abc', 'def'] ``` ## Dynamically generated JSON attributes 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). ## Endpoints that download files The API browser cannot be used to test calls to endpoints that download files, such as: **Download the course file content:** GET `/learn/v1/filerepo/downloadCourseFile` **Generate a PDF file that includes charts for the privacy policy:** POST `/report/v1/privacy_policy/pdf` **Download the course enrollment statistics PDF file:** POST `/learn/v1/courses/enrollment_pdf` **GET exported report file stream:** GET `/analytics/v1/reports/{id_report}/exports/{id_export}/download` When called from the API browser interface, such endpoints will not return a response or download any file. To test them, please use Postman or other similar tools. ## 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: ![List of additional fields for enrollment status and performance metrics in API documentation.](https://cdn.document360.io/75d583ae-622e-4bde-98e6-0ddd0e7a16bb/Images/Documentation/Enrollment%20status.png?sv=2026-02-06&spr=https&st=2026-11-12T06%3A15%3A06Z&se=2026-11-12T07%3A15%3A06Z&sr=c&sp=r&sig=5L7pdvXiv6ajs%2BfWaGUDx%2FQ5e1ZMdb4lDhOKnLcacJA%3D) `“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: ![API request parameters for retrieving enrollments from learning plans in Hydra.](https://cdn.document360.io/75d583ae-622e-4bde-98e6-0ddd0e7a16bb/Images/Documentation/Postman.jpg?sv=2026-02-06&spr=https&st=2026-11-12T06%3A15%3A06Z&se=2026-11-12T07%3A15%3A06Z&sr=c&sp=r&sig=5L7pdvXiv6ajs%2BfWaGUDx%2FQ5e1ZMdb4lDhOKnLcacJA%3D) `<ENDPOINT>?learning_plan_id[]=25&learning_plan_id[]=1&extra_fields[]=enrollment_time_spent&extra_fields[]=enrollment_status` ## URL-encoding the plus sign in query string parameters Some query string parameter values can contain a plus sign, for example when passing an email address as the `search_text` parameter on an endpoint such as GET `/manage/v1/user`. The plus sign has a reserved meaning within a URL, so it must be percent-encoded (as `%2B`) to be interpreted as a literal character rather than as part of the URL syntax. The Docebo API browser and the Docebo platform's own interface already apply this encoding automatically whenever you type a plus sign into a field. This means that if you are constructing a request URL yourself, for a direct call made with a tool such as Postman, curl, or from your own integration code, you need to apply the encoding yourself. In that case, the plus sign must be percent-encoded twice: first to `%2B`, then the percent sign in that result must itself be percent-encoded, producing `%252B`. > [!NOTE] > Please note: > > This double encoding only applies to characters, like the plus sign, that have a reserved meaning within a URL. The at sign (`@`), for example, does not need to be encoded twice, since decoding it twice still resolves back to the same character. > [!TIP] > Example: > > To search for the username `jane+doe@example.com` using the `search_text` parameter in a direct API call, construct the query string parameter as `search_text=jane%252Bdoe%40example.com`.