BigBlueButton PHP API
Switch branches/tags
Nothing to show
Clone or download

Packagist PHP from Travis config Downloads

Build Status Coverage Status Scrutinizer Code Quality

@bigbluebutton on Twitter Website

PHP 5.4 PHP 5.5 PHP 5.6 PHP 7 PHP 7.1 PHP 7.2 PHP 7.3

BigBlueButton API for PHP

The official and easy to use BigBlueButton API for PHP, makes easy for developers to use BigBlueButton API for PHP 5.4+.


  • PHP 5.4 or above.
  • Curl library installed.
  • mbstring library installed.
  • Xml library installed.

BigBlueButton API for PHP is also tested to work with HHVM and fully compatible with PHP 7.0 and above.

Install and usage tutorial

We have written INSTALL to show a full install and usage example. If you are familiar to composer and API please continue top the next section.


bigbluebutton-api-php can be installed via Composer CLI

composer require bigbluebutton/bigbluebutton-api-php:~2.0.0

or by editing Composer.json

    "require": {
        "bigbluebutton/bigbluebutton-api-php": "~2.0.0"


You should have environment variables BBB_SECRET and BBB_SERVER_BASE_URL defined in your sever. *if you are using Laravel you can add it in your .env

The you will be able to call BigBlueButton API of your server. A simple usage example for create meeting looks like:

use BigBlueButton/BigBlueButton;

$bbb                 = new BigBlueButton();
$createMeetingParams = new CreateMeetingParameters('bbb-meeting-uid-65', 'BigBlueButton API Meeting');
$response            = $bbb->createMeeting($createMeetingParams);

echo "Created Meeting with ID: " . $response->getMeetingId();


# Get meetings

use BigBlueButton\BigBlueButton;

$bbb = new BigBlueButton();
$response = $bbb->getMeetings();

if ($response->getReturnCode() == 'SUCCESS') {
	foreach ($response->getRawXml()->meetings->meeting as $meeting) {
		// process all meeting

# Create Meeting

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\CreateMeetingParameters;

$bbb = new BigBlueButton();

$createMeetingParams = new CreateMeetingParameters($meetingID, $meetingName);
if ($isRecordingTrue) {

$response = $bbb->createMeeting($createMeetingParams);
if ($response->getReturnCode() == 'FAILED') {
	return 'Can\'t create room! please contact our administrator.';
} else {
	// process after room created

# Join Meeting

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\JoinMeetingParameters;

$bbb = new BigBlueButton();

// $moderator_password for moderator
$joinMeetingParams = new JoinMeetingParameters($meetingID, $name, $password);
$url = $bbb->getJoinMeetingURL($joinMeetingParams);

// header('Location:' . $url);

# Close Meeting

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\EndMeetingParameters;

$bbb = new BigBlueButton();

$endMeetingParams = new EndMeetingParameters($meetingID, $moderator_password);
$response = $bbb->endMeeting($endMeetingParams);

# Get Meeting Info

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\GetMeetingInfoParameters;

$bbb = new BigBlueButton();

$getMeetingInfoParams = new GetMeetingInfoParameters($meetingID, '', $moderator_password);
$response = $bbb->getMeetingInfo($getMeetingInfoParams);
if ($response->getReturnCode() == 'FAILED') {
	// meeting not found or already closed
} else {
	// process $response->getRawXml();

# Get Recordings

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\GetRecordingsParameters;

$recordingParams = new GetRecordingsParameters();
$bbb = new BigBlueButton();
$response = $bbb->getRecordings($recordingParams);

if ($response->getReturnCode() == 'SUCCESS') {
	foreach ($response->getRawXml()->recordings->recording as $recording) {
		// process all recording

note that BigBlueButton need about several minutes to process recording until it available.
You can check in bbb-record --watch

# Delete Recording

use BigBlueButton\BigBlueButton;
use BigBlueButton\Parameters\DeleteRecordingsParameters;

$bbb = new BigBlueButton();
$deleteRecordingsParams= new DeleteRecordingsParameters($recordingID); // get from "Get Recordings"
$response = $bbb->deleteRecordings($deleteRecordingsParams);

if ($response->getReturnCode() == 'SUCCESS') {
	// recording deleted
} else {
	// something wrong

Submitting bugs and feature requests

Bugs and feature request are tracked on GitHub

Contributing guidelines

Code style

Make sure the code style configuration is applied by running PHPCS-Fixer.

./vendor/bin/php-cs-fixer fix --allow-risky yes

Running tests

For every implemented feature add unit tests and check all is green by running the command below.