Integrate Jitsi Meet into Your Own Applications – with Code Examples

Jitsi Meet is a free, WebRTC-based video conferencing system under Apache 2.0 license. It runs entirely in the browser and can be operated self-hosted. The modular architecture consisting of Jitsi Videobridge (SFU), Jicofo, Prosody, Jibri and Jigasi makes it ideal for integration, rebranding and automation. Info: Jitsi Meet, Architecture.
Why embedding makes sense for companies
- GDPR & data sovereignty: Operation in own or European infrastructure.
- Browser-based: High compatibility without client installation.
- APIs & SDKs: From fast iFrame embedding to low-level control via lib-jitsi-meet.
- Scalable: Horizontal via additional video bridges.
Table of Contents
- 2) Integration paths at a glance
- 3) iFrame/External API: fast web embedding with events and commands
- 4) lib-jitsi-meet: Low-level API for your own web UI
- 5) Mobile integration: Jitsi SDK for Android and iOS
- 6) Access and authentication: Secure Domain and JWT
- 7) Monitoring and operation: Colibri-REST (bridge level)
- 8) Self-hosting, GDPR and operation
- 9) Conclusion
- Schedule a Free Consultation
- Sources and further links
2) Integration paths at a glance
Integration | Purpose | Source |
---|---|---|
iFrame/External API (JavaScript) | Fastest way for web embedding and meeting control in the app | iFrame API |
lib-jitsi-meet (Low-Level JS API) | Build your own UI, control media & signaling directly | lib-jitsi-meet, Repo |
Mobile SDKs (Android/iOS) | Native integration in mobile apps incl. feature flags | Android SDK Guide, SDK-Samples |
JWT & Secure Domain | Access control and rights via tokens or prosody accounts | Secure Domain, Token Auth |
Colibri-REST (Videobridge) | Operator interface for monitoring/control at bridge level | JVB REST |
Self-Hosting-Guides | Quick start for Debian/Ubuntu or Docker | Quickstart, Docker Guide |
3) iFrame/External API: fast web embedding with events and commands
Minimal example:
<div id="meet"></div>
<script src="https://meet.jit.si/external_api.js"></script>
<script>
const domain = "meet.jit.si"; // or own instance: "meet.example.com"
const options = {
roomName: "DemoRoom123",
width: "100%",
height: 700,
parentNode: document.querySelector('#meet')
};
const api = new JitsiMeetExternalAPI(domain, options);
</script>
Source: iFrame API – Getting started.
Events & Commands:
// Participant events
api.addEventListener('participantJoined', e => console.log('joined', e));
api.addEventListener('participantLeft', e => console.log('left', e));
// Control meeting
api.executeCommand('toggleAudio');
api.executeCommand('toggleVideo');
// Moderation (with appropriate rights)
api.executeCommand('kickParticipant', 'PARTICIPANT_ID'); // Extract ID from events
Reference: Events and Commands.
Advanced functions:
// Create breakout room
api.executeCommand('addBreakoutRoom', 'Workshop');
// Move participants to breakout room
api.executeCommand('sendParticipantToRoom', {
participantId: 'abcd1234',
roomName: 'Workshop'
});
// Raise / lower hand
api.executeCommand('toggleRaiseHand');
// Toggle Tile-View
api.executeCommand('toggleTileView');
// Start/stop recording (requires Jibri)
api.executeCommand('startRecording', { mode: 'file' });
api.executeCommand('stopRecording', 'file');
4) lib-jitsi-meet: Low-level API for your own web UI
With lib-jitsi-meet you can control connections, rooms and media directly. Ideal if you want to develop your own UI.
<script src="https://meet.jit.si/libs/lib-jitsi-meet.min.js"></script>
<script>
// 1) Init
JitsiMeetJS.init();
// 2) Connection
const options = {
hosts: {
domain: 'meet.example.com',
muc: 'conference.meet.example.com'
},
serviceUrl: 'wss://meet.example.com/xmpp-websocket'
};
const connection = new JitsiMeetJS.JitsiConnection(null, null, options);
// 3) Events
connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_ESTABLISHED, onConnected);
connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_FAILED, console.error);
connection.addEventListener(JitsiMeetJS.events.connection.CONNECTION_DISCONNECTED, console.warn);
connection.connect();
function onConnected() {
// 4) Conference + Events
const confOpts = { openBridgeChannel: true };
const room = connection.initJitsiConference('myRoom', confOpts);
room.on(JitsiMeetJS.events.conference.CONFERENCE_JOINED, () => console.log('joined'));
room.on(JitsiMeetJS.events.conference.TRACK_ADDED, track => {
const el = track.getOriginalElement?.() || track.attach(document.createElement(track.getType()));
document.body.append(el);
});
// 5) Add local tracks
JitsiMeetJS.createLocalTracks({ devices: ['audio', 'video'] })
.then(tracks => {
tracks.forEach(t => room.addTrack(t));
room.join();
});
}
</script>
Docs: lib-jitsi-meet API, Repo.
5) Mobile integration: Jitsi SDK for Android and iOS
Android example:
JitsiMeetConferenceOptions defaultOptions = new JitsiMeetConferenceOptions.Builder()
.setServerURL(new URL("https://meet.example.com"))
.setFeatureFlag("welcomepage.enabled", false)
.build();
JitsiMeet.setDefaultConferenceOptions(defaultOptions);
JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
.setRoom("MobileMeeting")
.build();
JitsiMeetActivity.launch(this, options);
Sources: Android SDK Guide, SDK-Samples. For iOS see the samples in the repo.
6) Access and authentication: Secure Domain and JWT
Secure Domain: Only authenticated users may create new rooms; guests can join afterwards. Guide: Secure Domain
Token authentication (JWT): Access with signed token – ideal for integration with your own backends/portals. Guide: Token Authentication
Example payload:
{
"context": {
"user": {
"avatar": "https://example.com/avatar.png",
"name": "John Doe",
"email": "[email protected]"
},
"features": {
"recording": true,
"livestreaming": false,
"screen-sharing": true
}
},
"aud": "jitsi",
"iss": "wz-it.com",
"sub": "meet.example.com",
"room": "TeamMeeting2025",
"exp": 1735753200
}
Token generation (Node.js):
import jwt from "jsonwebtoken";
const payload = {
context: { user: { name: "John Doe" } },
aud: "jitsi",
iss: "wz-it.com",
sub: "meet.example.com",
room: "TeamMeeting2025",
exp: Math.floor(Date.now() / 1000) + 60 * 60
};
const token = jwt.sign(payload, process.env.JITSI_APP_SECRET);
console.log("JWT:", token);
Prosody setup (simplified):
VirtualHost "meet.example.com"
authentication = "token"
app_id = "wz-it.com"
app_secret = "YOUR_APP_SECRET"
7) Monitoring and operation: Colibri-REST (bridge level)
The Jitsi Videobridge provides a REST interface (Colibri/Colibri2) – for monitoring, conference allocation and health/stats; not for end-user actions such as "kick".
Retrieve stats:
# Standard (local): JVB_COLIBRI_PORT=8080
curl -s http://127.0.0.1:8080/colibri/stats
Sample response:
{
"conferences": 4,
"participants": 52,
"bit_rate_download": 2400000,
"bit_rate_upload": 2700000
}
Sources: Colibri REST, Docker Guide.
Participant actions such as kick are carried out via the iFrame API (client) or XMPP moderation, not via REST. Reference: iFrame Commands.
8) Self-hosting, GDPR and operation
- Quickstart: Debian/Ubuntu, Docker.
- Security/Privacy: Jitsi Security.
- GDPR: Operation in German/European data centers possible; log, backup and access control remain completely in the hands of the company.
9) Conclusion
With iFrame/External API you can integrate Jitsi Meet into the web in minutes. With lib-jitsi-meet you build your own web UI with full control over media & signaling. With the mobile SDKs, you can integrate conferences natively into Android/iOS. Secure Domain/JWT regulates access, Colibri-REST provides operational metrics.
Everything is open source, self-hosted and GDPR-compliant – ideal for companies that need sovereignty and adaptability.
WZ-IT assists with design, hosting, SSO, branding, UI development, scaling, monitoring and support. WZ-IT Jitsi Meet Service
Schedule a Free Consultation
Want to integrate Jitsi Meet into your application? We will advise you on:
- Technical feasibility & architecture
- Hosting options & scaling
- SSO integration & security
- Custom adaptations & branding
Book your free consultation now →
Sources and further links
Let's Talk About Your Project
Whether a specific IT challenge or just an idea – we look forward to the exchange. In a brief conversation, we'll evaluate together if and how your project fits with WZ-IT.
Trusted by leading companies


