insertDocument – Insert Presentation
The insertDocument endpoint allows you to upload one or more presentations into an already running BigBlueButton meeting without interrupting the current presenter. Documents are processed in the background and become available as additional presentations that the presenter can switch to at any time.
This endpoint is only lightly documented in the official BigBlueButton API documentation. Details on error codes, file size limits, and the exact response XML are not officially specified. undocumented
Endpoint
POST https://api-guide.bbbserver.com/bigbluebutton/api/insertDocument?meetingID=replace-with-meeting-id&checksum=replace-with-checksum
Content-Type: application/xml This endpoint requires a POST request with an XML body. The document data is sent in the request body, not as URL parameters.
URL Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
meetingID | String | Yes | — | The meeting identifier of the running meeting that should receive the document. |
XML Body — Document Attributes
The request body must contain an XML structure with a <module name="presentation"> element wrapping one or more <document> elements. Each document can be uploaded either by URL or as inline Base64 content.
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
url | String | No | — | URL pointing to the presentation file. Used for URL-based uploads. The server fetches the file from this URL. |
filename | String | No | — | Filename for URL-based uploads. Helps with file type detection when the URL does not contain a file extension. |
name | String | No | — | Filename for Base64 inline uploads. When using this attribute, the element text must contain the Base64-encoded file content. |
current | Boolean | No | false | When set to true, this presentation is immediately activated as the current presentation after upload. |
downloadable | Boolean | No | false | When set to true, participants are allowed to download the presentation file. |
removable | Boolean | No | true | When set to true, the presenter is allowed to remove the presentation from the meeting. |
Example Request — URL-based Upload
curl --request POST \
--url "https://api-guide.bbbserver.com/bigbluebutton/api/insertDocument?meetingID=replace-with-meeting-id&checksum=replace-with-checksum" \
--header "Content-Type: application/xml" \
--data '<?xml version="1.0" encoding="UTF-8"?>
<modules>
<module name="presentation">
<document url="https://api-guide.bbbserver.com/files/slides.pdf" filename="slides.pdf"
downloadable="true" removable="true" current="true"/>
</module>
</modules>' Example Request — Base64 Inline Upload
curl --request POST \
--url "https://api-guide.bbbserver.com/bigbluebutton/api/insertDocument?meetingID=replace-with-meeting-id&checksum=replace-with-checksum" \
--header "Content-Type: application/xml" \
--data '<?xml version="1.0" encoding="UTF-8"?>
<modules>
<module name="presentation">
<document name="inline-slides.pdf">
JVBERi0xLjQK... (Base64-encoded content)
</document>
</module>
</modules>' Example Response
A successful call returns the following XML:
<response>
<returncode>SUCCESS</returncode>
</response> A SUCCESS response confirms that the document was accepted for processing. It does not guarantee that the file conversion completed successfully. Whether conversion errors are reported back via the API response is not officially documented. undocumented
Comparison with create Presentation Upload
You can also upload presentations during meeting creation using the create endpoint. The following table highlights the differences between the two approaches:
| Aspect | create | insertDocument |
|---|---|---|
| Timing | Before the meeting starts | While the meeting is running |
| Interruption | None (first slide is loaded on join) | None (background upload) |
current attribute | Supported | Supported |
| Multiple documents | Supported | Supported |
Tips
If you want the new presentation to become active immediately, set current="true" on the document element. Otherwise the presenter must manually switch to it using the presentation selector in the meeting interface.
- The same file formats supported by the regular presentation upload are also supported here (PDF, PPTX, DOCX, images, etc.).
- You can insert multiple documents in a single request by adding more document elements inside the module block.
- For URL-based uploads, always set the
filenameattribute when the URL does not contain a recognizable file extension. This helps BigBlueButton determine the correct file type. - For large files, URL-based upload is recommended over Base64 inline upload to keep the request payload small.
Use Cases
- Dynamically deliver slides from an LMS or content management system during a live session.
- Add supplementary material to a meeting after it has already started.
- Build automated bots that insert agendas, meeting notes, or reports into running meetings.
- Allow external systems to push updated content without requiring the presenter to leave the meeting.
Frequently Asked Questions
insertDocument endpoint is available in BigBlueButton 2.5 and later. It is not available in older versions such as 2.4 or earlier.removable attribute was set to true (which is the default). The presenter can remove the presentation through the meeting interface. There is no dedicated API endpoint for removing a presentation from a running meeting.FAILED response indicating that the meeting was not found. Documents can only be inserted into meetings that are currently running.meetingID. Each breakout room has its own unique meeting identifier that can be obtained via the getMeetings or getMeetingInfo endpoint.SUCCESS response only confirms that the server accepted the document for processing. Whether the conversion succeeded is not reliably reported in the API response. This behavior is not officially documented.