Créer des salles
Une salle est l'espace où vos utilisateurs se retrouvent. Vous la gérez depuis votre serveur avec la Room API.
Toutes les salles que vous créez sont rattachées à l'application de la clé d'API utilisée. Le SDK serveur enveloppe la Room API ; vous pouvez aussi l'appeler en HTTP brut.
Créer une salle
server.ts
import { RoomServiceClient } from "@lunionlab/meet-server-sdk"; const rooms = new RoomServiceClient( "https://meet.lunion-lab.com/api/v1", process.env.LUNION_API_KEY!,); const room = await rooms.createRoom("Réunion produit");// room.slug → identifiant court et unique, à réutiliser pour le jetonPour une réunion planifiée, passez une date ISO 8601 et une description :
server.ts
const room = await rooms.createRoom("Comité hebdo", { scheduledAt: "2026-07-01T09:00:00.000Z", description: "Revue produit hebdomadaire",});L'objet salle
Room
{ "id": "ckv...", "slug": "calm-otter-1289", "name": "Réunion produit", "ownerId": "usr_...", "scheduledAt": null, "description": null, "createdAt": "2026-06-25T10:00:00.000Z"}Le slug est la clé
Réutilisezroom.slug pour émettre les jetons et pour le lien direct /room/<slug>. Il est court, unique et sûr à partager.Lister les salles
server.ts
const all = await rooms.listRooms(); // salles de l'applicationSupprimer une salle
server.ts
await rooms.deleteRoom(room.slug);Participants connectés
Depuis votre serveur, listez les participants d'une salle et modérez-les sans ouvrir de WebSocket. Chaque participant est ciblé par son identity(celle passée à l'émission du jeton) ; elle vaut nullsi le pair s'est connecté sans jeton (mode ouvert).
server.ts
// Lister : [{ peerId, identity, name, joinedAt, state }]const people = await rooms.listParticipants(room.slug); // Couper le micro de quelqu'un (true = couper, false = rétablir)await rooms.muteParticipant(room.slug, "user-42", { mic: true }); // L'éjecter : il reçoit une notification puis est déconnectéawait rooms.removeParticipant(room.slug, "user-42");La coupure est appliquée par le serveur
muteParticipant ne fait pas que demander poliment : le SFU droppe réellement le flux de la source coupée, et le rétablit à la levée. Un client non coopératif ne peut plus diffuser.Points d'entrée HTTP
POST
Créer une salle./api/v1/sdk/roomsGET
Lister les salles de l'application./api/v1/sdk/roomsPOST
Émettre un jeton de connexion./api/v1/sdk/rooms/:slug/tokenDELETE
Supprimer une salle./api/v1/sdk/rooms/:slugGET
Lister les participants connectés./api/v1/sdk/rooms/:slug/participantsPOST
Éjecter un participant. Corps : /api/v1/sdk/rooms/:slug/participants/remove{ identity }.POST
Couper ou rétablir micro/caméra. Corps : /api/v1/sdk/rooms/:slug/participants/mute{ identity, mic?, cam? }.Bon à savoir
- Une salle vide ne consomme rien ; la facturation suit l'usage réel (minutes).
- Les slugs sont générés automatiquement et garantis uniques.
- Supprimer une salle libère le lien, mais les participants déjà connectés ne sont pas expulsés : utilisez
removeParticipantpour les déconnecter.
