Integrate Jitsi Meet into Your Own Applications – with Code Examples

Editorial note: The information in this article was compiled to the best of our knowledge at the time of publication. Technical details, prices, versions, licensing terms, and external content may change. Please verify the information provided independently, particularly before making business-critical or security-related decisions. This article does not replace individual professional, legal, or tax advice.

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

Written by
Timo Wevelsiep
Co-Founder & CEO
Co-Founder of WZ-IT. Specialized in cloud infrastructure, open-source platforms and managed services for SMEs and enterprise clients worldwide.
LinkedInLet's Talk About Your Idea
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.


Timo Wevelsiep & Robin Zins
Managing Directors of WZ-IT





