Happy Tuesday everyone! This week on Technical Tuesday I want to walk through something that comes up a lot with developers integrating with Mediasite: How to upload a video programmatically using the API.
It’s a 4-step process, and once you’ve been through it a couple of times, it’s quite easy and scalable to add into any custom workflow.
1 - Create a presentation shell
Before any video is uploaded, Mediasite needs a container to put it in. This call creates an empty presentation from a template and returns a Presentation ID, which is used in every subsequent step.
POST/api/v1/Templates('templateId')/CreatePresentationFromTemplate
Tip: I’d suggest setting up your Presentation Template manually in the Management portal first. That way you can configure it exactly how you want it, for example whether it captions automatically or not. You can even have multiple templates: one that captions and one that doesn’t, and choose at upload time which to use.
2 - Upload the video file(s) to FileServer
This is a direct binary upload. The raw video bytes are sent to Mediasite’s FileServer and staged against the Presentation ID. At this point the file is sitting on the server but hasn’t been processed yet. For dual-stream video, repeat this step for the second file.
POST/Mediasite/FileServer/presentation/{presentationId}/{filename.mp4}
3 - Trigger processing via CreateMediaUpload
This is the instruction step. You’re telling Mediasite’s processing engine which files you just uploaded and asking it to go and process them into a playable presentation. This call returns a Job ID representing the background task.
POST/api/v1/Presentations('presentationId')/CreateMediaUpload
Body: { "FileNames": ["video1.mp4", "video2.mp4"] }
4 - Background processing (automatic)
Mediasite’s encoding engine picks up the job and handles the rest: transcoding into streaming formats, generating thumbnails, linking everything to the presentation, and making it available for playback. You can optionally poll the job status to know when it’s done.
GET/api/v1/Jobs('jobId')
Going further: Once you’ve got this flow working, there’s a lot you can build on top of it. Automated ingestion pipelines, integrations with third-party recording tools, bulk imports from other platforms. The API gives you the building blocks.
Have you used the Mediasite API for video uploads before?
Any gotchas you ran into along the way?
Drop them below, would love to hear how others are using this. ![]()
