- How do I install bigbluebutton/bigbluebutton-api-php in a Laravel project?
- Install it with Composer by running composer require bigbluebutton/bigbluebutton-api-php. It requires PHP 8.2 or newer, and since version 3.0 it has zero required package dependencies because it ships with a curl-based transport by default. Composer autoloading means you can use the classes anywhere in your Laravel app immediately, but you will write your own service provider binding if you want dependency injection.
- Is bigbluebutton/bigbluebutton-api-php a Laravel package with a service provider and facade?
- No. It is a framework-agnostic PHP SDK, so there is no service provider, facade, config file, migration, or publishable asset. It also provides no Eloquent models or persistence, because BigBlueButton remains the system of record for live meeting state. The recommended approach is to bind a single BigBlueButton client instance in your own service provider and wrap it behind an interface so BigBlueButton types never leak outside one adapter namespace.
- Which PHP and Laravel versions does this client support?
- The library requires PHP 8.2 or higher, matching currently supported PHP releases. Because it is framework-agnostic, any Laravel version running on PHP 8.2+ can use it, including Laravel 10, 11, and 12. Check the changelog before upgrading major versions, since removed members are kept only as deprecated stubs for backward compatibility.
- How do I create a meeting and generate a join URL with this library?
- Build a CreateMeetingParameters object with the meeting ID, name, and options, pass it to the client's createMeeting method, then generate attendee links with getJoinUrl or a JoinMeetingParameters object. The returned join URL is intended for a browser redirect, which is the documented standard and far simpler than cookie or JSESSIONID server-side join flows. Store your own local record of the meeting ID for scheduling, entitlements, and audit purposes only.
- Does the client work with BigBlueButton 2.7, 3.0, and 4.0 servers?
- The 3.0 release claims drop-in backward compatibility with 2.x and 3.x servers, with removed members kept as deprecated stubs to ease incremental rollouts. Be aware that several Create and Join parameters, such as webVoice, copyright, defaultLayout, and the LAYOUTS feature flag, are silently inert on BigBlueButton 4.0, which is a quiet-failure class where calls succeed but behaviour does not change. Pin both the SDK and the server version, and document a supported compatibility matrix.
- How do I list, publish, and delete recordings with the PHP client?
- Use getRecordings to fetch recordings by meeting ID or recording ID, publishRecordings to make them visible, and deleteRecordings to remove them. Recording processing itself is handled entirely by the BigBlueButton server's recording pipeline, not by this library, so storage costs and retention policy are your responsibility. For a first version, linking out to the playback URL is much cheaper than building in-app playback.
- Can I replace the default curl transport with Guzzle or another PSR-18 client?
- Yes. Since version 3.0 you can call BigBlueButton::createWithHttpClient to inject any PSR-18 HTTP client with a PSR-17 request factory, which lets you reuse Guzzle or Laravel's existing HTTP client stack. This is useful for centralising timeouts, retries, proxies, and logging. The default curl transport works fine if you do not need that control.
- How do I test BigBlueButton integration in Laravel without a live server?
- Do not mock the SDK's internals directly; instead mock the interface you wrapped around it, or inject a fake PSR-18 HTTP client that returns canned XML responses. Because the library is stateless and holds no persistence, your tests stay fast and deterministic. Assert on the request parameters you send, such as meeting ID and join options, since parameter drift is the most common real-world failure.
- What are the licensing implications of LGPL-3.0 for a Laravel SaaS app?
- SaaS use is generally acceptable because you are not distributing the library. Distributing the application, for example as an on-premise appliance, white-label build, or Docker image shipped to customers, triggers LGPL obligations around the library and the ability for recipients to relink or replace it. Route any distribution scenario to legal before committing to an on-premise SKU.
- What else do I need to run this in production besides the Composer package?
- This package is only the client; a production BigBlueButton deployment requires a dedicated host or fleet, coturn/TURN, Redis, FreeSWITCH, a recording pipeline, and significant bandwidth. Adopting the SDK is implicitly a decision to operate or buy BigBlueButton hosting, whether self-hosted, managed, or vendor-provided. Scope that explicitly and confirm your concurrency target per meeting and across tenants, plus expected recording volume and retention, before estimating the work.