Skip to main content
Best Answer

Video Duration in Training Material / Course time calculation

  • April 15, 2026
  • 7 replies
  • 33 views

Good Day,

I am trying to understand how video and course duration is being handled in Docebo.

What I try to accomplish:

We upload videos as mp4 but mainly as SCORM packages (as we use Synthesia with its player) to the Central Repository / Training Material.

From there the videos end up in the Courses. The courses have a field to define the “Average time”

Now, as we have a couple of thousand videos as SCORM package (and some direct video uploads) I am wondering if there is an option to:

  • Get the video duration for uploaded videos and get the course calculation happening automatically
  • Add the video duration to the SCORM package, as SCORM has the metadate capabilities via imsmanifest.xml and have the Course calculation done automatically.

 

If automatic course calculation is not yet supported, but the repository can hold the information, I have no problem to create a script taking care of calculating the time if the API exposes the course average time.

 

Any suggestions or ideas? or documentation I can dig into.

Thanks

Best answer by Moshe.Machlav

Hi ​@herbert,

Good catch, and my apologies for the confusion! I gave you the wrong API path in my previous reply.

The correct endpoint to update a course's average_time (along with other core properties) is PUT /course/v1/courses/{id} (Update Course General Details).
 

When I run these types of bulk update scripts for organizations, I always recommend grabbing the exact JSON payload schema directly from your platform's API Browser. If you navigate to https://<yourdomain>.docebosaas.com/api-browser/ and select the Course service from the dropdown, you'll see the full documentation, parameters, and payload structure for that specific endpoint.
 

Let me know if the payload mapping gives you any trouble!


 

7 replies

Moshe.Machlav
Helper III
Forum|alt.badge.img+1

Hi ​@herbert ,

Good question. Currently, Docebo doesn't natively extract video durations or read SCORM imsmanifest.xml metadata to automatically calculate a course's total time.

The course Average time is treated as a manual setting located in the course's Properties tab (under Time Options), rather than a dynamic sum of the training materials inside it. You can check the Managing properties for courses documentation for how Docebo expects this field to be handled.

Managing that manually for thousands of videos would definitely become a bottleneck. While I haven't implemented this exact SCORM duration flow for an organization, what I would highly recommend doing is moving forward with your script idea.

The cleanest approach would be to extract the duration directly from your source system (like your Synthesia exports), and then use Docebo's API to update the records en masse. You can use the PUT /learn/v1/courses/{id} endpoint to update the average_time parameter for each course automatically.

Let me know if you'd like to bounce around any ideas on the API side of the setup!


  • Author
  • Newcomer
  • April 15, 2026

Thanks ​@Moshe.Machlav for the quick response.

 

Is Docebo planning to implement a video duration field within the Central Repository/Training Material?

For me the hardest part is to connect the information from Docebo and the videos in the Course with the Synthesia stored information, but well, this is something we have to figure out. I would be way simpler if the duration could have been part of the SCORM import, as linking data from 2 different platforms would not be needed after the information is already imported.

This gets especially tricky over time, if names change or data gets either updated or archived.


  • Author
  • Newcomer
  • April 15, 2026

@Moshe.Machlav I tried to find the documentation for PUT /learn/v1/courses/{id} endpoint to update the average_time parameter but I could not find it.

Can you send me a link with the documentation?

Thanks you 


Moshe.Machlav
Helper III
Forum|alt.badge.img+1
  • Helper III
  • Answer
  • April 15, 2026

Hi ​@herbert,

Good catch, and my apologies for the confusion! I gave you the wrong API path in my previous reply.

The correct endpoint to update a course's average_time (along with other core properties) is PUT /course/v1/courses/{id} (Update Course General Details).
 

When I run these types of bulk update scripts for organizations, I always recommend grabbing the exact JSON payload schema directly from your platform's API Browser. If you navigate to https://<yourdomain>.docebosaas.com/api-browser/ and select the Course service from the dropdown, you'll see the full documentation, parameters, and payload structure for that specific endpoint.
 

Let me know if the payload mapping gives you any trouble!


 


  • Author
  • Newcomer
  • April 16, 2026

Thanks ​@Moshe.Machlav 

I have not looked there.

Anyhow, I got my script working fetching data from Synthesia corelating it with the Learning Objects in a Docebo Course. Afterwards I sum up the duration of the Synthesia videos and write it back to the Docebo Course.

Interestingly, the field for getting the duration is called duration in the API, using seconds as the value (the UI only supports HH:MM) and the field for writing the data is called average_completion_time, this is a little confusing, but I figured it out.

Thanks for pointing this out, helped a lot.


Moshe.Machlav
Helper III
Forum|alt.badge.img+1

Hi ​@herbert ,

That is fantastic news! Glad to hear you got the script up and running.

Excellent work getting it mapped and running so quickly. Thanks for sharing your final findings back here for the rest of the community!


  • Author
  • Newcomer
  • April 16, 2026

Hi ​@herbert ,

That is fantastic news! Glad to hear you got the script up and running.

Excellent work getting it mapped and running so quickly. Thanks for sharing your final findings back here for the rest of the community!

Well, for these sort of things, AI is a real game changer for me ;)