---
updatedAt: 2026-04-29T08:53:50.000Z
---

Fetch the complete documentation index at: https://apidocs.hibob.com/llms.txt. Use this file to discover all available pages before exploring further.

# Explore Learning API 

Learn how to use the Bob Learning API to add course providers and training content

<Callout icon="📘" theme="info">
  **Note:**

  This API requires the **Bob Learning module**. If your company does not have Learning enabled, you will not be able to use the Learning provider integrations endpoints. To learn more, see <a href="https://www.hibob.com/talent/learning-management" target="_blank">Bob Learning</a>.
</Callout>

The **Bob Learning API** lets an external learning provider (or an integration developers in‑house) connect a course catalog to Bob Learning.

With this API you can:

* Create an **Learning provider integration instance** for a specific provider in Bob
* Push a **course catalog** into Bob
* Update and archive courses as your catalog changes
* Push **learner progress** events back to Bob (xAPI)

# Key concepts

This section explains the main entities you’ll work with when integrating a course catalog and learner progress into Bob Learning.

<Accordion title="Learning provider integration">
  A **Learning provider integration** is a single configured connection between a company and a provider in Bob.

  You create one integration per provider, and then reference it when pushing courses and progress.

  **Public API behavior:** You can create and delete integrations via the Public API using your provider identifier.
</Accordion>

<Accordion title="Course providers">
  A **course provider** is the external system that supplies courses and learner progress (for example, a learning content vendor).

  In Bob, you can view the provider in the course details (below the course name) or by adding the Provider column to the Courses view.

  **Public API behavior:** Creating a learning provider integration via the Learning API adds a new course provider in Bob.
</Accordion>

<Accordion title="Training content (courses)">
  **Training content** represents the courses that come from a provider and are available in Bob.

  Each course is identified by the external identifier you provide

  **Public API behavior:** You can bulk create, update, and archive courses via the Public API.
</Accordion>

<Accordion title="Learning library">
  The **Learning library** is where employees discover and launch available courses in Bob. You can access it from Bob Learning > Library. For course fields and how they appear in the UI, see <a href="https://help.hibob.com/hc/en-us/articles/24110524971537" target="_blank">Create a course</a>

  **Public API behavior:** Courses you add to an integration via the Learning API can appear in the Learning library, depending on their collection and audience.
</Accordion>

<Accordion title="Content collections">
  A **content collection** groups courses and defines who can see them (audience). Courses that aren’t included in any collection won’t appear in the Learning library.

  Collections are managed in Bob Learning > Settings > Content collections. For details, see <a href="https://help.hibob.com/hc/en-us/articles/34158036086161" target="_blank">Manage content collections</a>.

  **Public API behavior:** When you create an integration provider via the Public API, Bob creates a content collection for that provider.

  In Bob, the collection will:

  * **Show as**: `Created by`: `System` with `All employees` selected as the audience by default.
  * **Provider**: the integration provider ID.
  * **Content creation**: Courses for that provider can be added to this collection only via the Public API.
  * **Access**: Bob users can only edit the audience access and the collection description

  ![](https://files.readme.io/ca95b4b694e3f339d13a0a5f21df989169c105cb77e9dfa3d1f457c3061c1d62-image.png)
</Accordion>

<Accordion title="Progress statements (xAPI)">
  Learner progress is sent to Bob as **xAPI statements**.

  Progress events reference the relevant course by `externalIdentifier`

  **Public API behavior:** You can push xAPI statements for learner activity and progress via the Public API.
</Accordion>

## Data model and relationships

```mermaid
sequenceDiagram
	autonumber
	participant Partner
	participant Bob

	Partner->>Bob: Create integration (provider identifier)
	Bob-->>Partner: Provider added

	Partner->>Bob: Push courses (provider identifier, courses)
	Bob-->>Partner: Courses created

	Partner->>Bob: Push progress (provider identifier, course externalIdentifier)
	Bob-->>Partner: Progress accepted
```

# Recommended workflow

1. Create an integration instance.
2. Push course content (your catalog) into Bob.
3. Keep the catalog in sync (update and archive).
4. Push learner progress via xAPI.

<Image align="center" width="500px" src="https://files.readme.io/54ef4b83503f9fd3c833a3dbe7be33aa2c2ec55d0989cf66f40c738f4e606fab-image.png" />

> When you create an integration provider via the Public API, Bob creates a content collection for that provider.

# Required permissions

Before using the Learning API, make sure your integration has the required access, just as you would when assigning permissions to a user in Bob.

To do this, you should choose one of the following authentication methods and assign the relevant permissions/scopes:

* **Service user (Basic Auth):** Recommended for customer-built/internal integrations. The calling service user must have permissions to manage Learning provider content:
  * Permissions:  `Features > Integrations > Course providers > Create, update and delete the integration`
* **OAuth (Bearer token):** Used for marketplace/partner apps. The calling app must have scopes that allow to manage Learning provider content:
  * **Integrations > Manage learning integrations** (`learning.integrations:write`)

If the calling integration does not have the required permissions, the API will return an authorization error (for example, `403 Forbidden`).

# Bob Learning API endpoints

The Bob Learning Public API provides endpoints for managing integrations, courses, and repoting progress.

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Use case
      </th>

      <th>
        Public API endpoints
      </th>

      <th>
        Comments
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Create or remove an integration
      </td>

      <td>
        [Create integration](https://apidocs.hibob.com/reference/post_learning-lms-integrations)

        [Delete integration (soft delete)](https://apidocs.hibob.com/reference/delete_learning-lms-integrations-provider-identifier)
      </td>

      <td>
        Create an integration instance, then reference it by `provider-identifier` in subsequent calls.
      </td>
    </tr>

    <tr>
      <td>
        Push training content
      </td>

      <td>
        [Create training content (bulk insert)](https://apidocs.hibob.com/reference/post_learning-lms-integrations-provider-identifier-training-content)
      </td>

      <td>
        Bulk insert new courses into Bob. Each course is identified by the external identifier. Categories are added on-the-fly if they do not exist yet in Bob.
      </td>
    </tr>

    <tr>
      <td>
        Update course catalog
      </td>

      <td>
        [Update training content (bulk patch)](https://apidocs.hibob.com/reference/patch_learning-lms-integrations-provider-identifier-training-content)
      </td>

      <td>
        Bulk patch updates to existing courses.
      </td>
    </tr>

    <tr>
      <td>
        Archive courses
      </td>

      <td>
        [Archive training content (bulk)](https://apidocs.hibob.com/reference/patch_learning-lms-integrations-provider-identifier-training-content-archive)
      </td>

      <td>
        Archive courses that should no longer be available.
      </td>
    </tr>

    <tr>
      <td>
        Push learner progress
      </td>

      <td>
        [Submit xAPI statement](https://apidocs.hibob.com/reference/post_learning-lms-integrations-provider-identifier-xapi-statements)
      </td>

      <td>
        Send xAPI statements for learner activity/progress.
      </td>
    </tr>
  </tbody>
</Table>

# Related resources